From cc882657a4ec19cd558d58177513e5bdd2307ef7 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 13:37:46 +0800 Subject: [PATCH 01/46] =?UTF-8?q?=E5=BC=80=E5=8F=91=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=AF=8F=E5=88=86=E9=92=9F=E4=BF=9D=E5=AD=98=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E7=8E=A9=E5=AE=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/player.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/worldsrv/player.go b/worldsrv/player.go index cd756c5..39e4967 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -1799,7 +1799,12 @@ func (this *Player) CanDelete() bool { } func (this *Player) Time2Save() { - this.Save(false) + logger.Logger.Tracef("player save %v", this.SnId) + if common.Config.IsDevMode { + this.Save(true) + } else { + this.Save(false) + } if this != nil && this.CanDelete() { PlayerMgrSington.DelPlayer(this.SnId) } From 3811215f80ca55963d8131206cbec1fbb807a55c Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 15:29:37 +0800 Subject: [PATCH 02/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E7=A7=AF?= =?UTF-8?q?=E5=88=86=E5=8F=AF=E4=BB=A5=E4=B8=BA=E8=B4=9F=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenepolicy_tienlen.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 329f4af..8445989 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -1790,7 +1790,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { } } losePlayerCoin := losePlayer.GetCoin() - if !sceneEx.IsMatchScene() && losePlayerCoin < gainScore { + if !sceneEx.IsMatchScene() && !sceneEx.IsCustom() && losePlayerCoin < gainScore { gainScore = losePlayerCoin } losePlayerScore = gainScore @@ -1932,7 +1932,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { } } lastWinPlayerCoin := lastWinPlayer.GetCoin() - if !sceneEx.IsMatchScene() && lastWinPlayerCoin < astWinGainScore { + if !sceneEx.IsMatchScene() && !sceneEx.IsCustom() && lastWinPlayerCoin < astWinGainScore { astWinGainScore = lastWinPlayerCoin } lastWinPlayerScore = astWinGainScore @@ -2292,7 +2292,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { } } losePlayerCoin := playerEx.GetCoin() - if !sceneEx.IsMatchScene() && losePlayerCoin < gainScore { + if !sceneEx.IsMatchScene() && !sceneEx.IsCustom() && losePlayerCoin < gainScore { gainScore = losePlayerCoin } winScore += gainScore From b53c78cfb3c42f355a71d179772d58bab18d884d Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 11 Sep 2024 15:59:09 +0800 Subject: [PATCH 03/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/action/action_machine.go | 3 + machine/action/action_server.go | 84 ++++++++++++----------- protocol/machine/machine.pb.go | 114 +++++++++++++++++++++++-------- protocol/machine/machine.proto | 6 +- protocol/server/server.pb.go | 2 +- 5 files changed, 140 insertions(+), 69 deletions(-) diff --git a/gamesrv/action/action_machine.go b/gamesrv/action/action_machine.go index bd2615f..de05608 100644 --- a/gamesrv/action/action_machine.go +++ b/gamesrv/action/action_machine.go @@ -71,6 +71,9 @@ func MSUpdateDollMachineStatusHandler(session *netlib.Session, packetId int, dat } func MSDollMachineHeartBeatHandler(session *netlib.Session, packetId int, data interface{}) error { //fmt.Println("收到娃娃机服务心跳!!!") + //返回心跳 + pack := &machine.SMDollMachineHeartBeat{} + session.Send(int(machine.DollMachinePacketID_Packet_SMDollMachineHeartBeat), pack) return nil } diff --git a/machine/action/action_server.go b/machine/action/action_server.go index bfcb22b..024cb99 100644 --- a/machine/action/action_server.go +++ b/machine/action/action_server.go @@ -288,51 +288,57 @@ func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interf return nil } -/*// 获取进入视频房间token -func SMGetTokenHandler(session *netlib.Session, packetId int, data interface{}) error { - logger.Logger.Tracef("SMGetTokenHandler %v", data) - msg, ok := data.(*machine.SMGetToken) - if !ok { +/* +// 获取进入视频房间token + + func SMGetTokenHandler(session *netlib.Session, packetId int, data interface{}) error { + logger.Logger.Tracef("SMGetTokenHandler %v", data) + msg, ok := data.(*machine.SMGetToken) + if !ok { + return nil + } + // 请将 appId 修改为你的 appId,appid 为数字,从即构控制台获取 + // 举例:1234567890 + var appId uint32 = uint32(msg.GetAppId()) + + // 请修改为你的 serverSecret,serverSecret 为字符串,从即构控制台获取 + // 举例: "fa94dd0f974cf2e293728a526b028271" + serverSecret := msg.ServerSecret + + // 请将 userId 修改为用户的 user_id + userId := msg.GetSnid() + + // token 的有效时长,单位:秒 + var effectiveTimeInSeconds int64 = 3600 + // token业务认证扩展,基础鉴权token此处填空字符串 + var payload string = "" + + //生成token + token, err := token04.GenerateToken04(appId, strconv.Itoa(int(userId)), serverSecret, effectiveTimeInSeconds, payload) + if err != nil { + logger.Logger.Error(err) + return err + } + logger.Logger.Trace(token) + info := &machine.MSSendToken{} + info.Snid = msg.Snid + info.Token = token + info.Appid = msg.AppId + info.StreamId = msg.StreamId + + session.Send(int(machine.DollMachinePacketID_PACKET_MSSendToken), info) + fmt.Println("向游戏服务器发送娃娃机token:%v", info) return nil } - // 请将 appId 修改为你的 appId,appid 为数字,从即构控制台获取 - // 举例:1234567890 - var appId uint32 = uint32(msg.GetAppId()) - - // 请修改为你的 serverSecret,serverSecret 为字符串,从即构控制台获取 - // 举例: "fa94dd0f974cf2e293728a526b028271" - serverSecret := msg.ServerSecret - - // 请将 userId 修改为用户的 user_id - userId := msg.GetSnid() - - // token 的有效时长,单位:秒 - var effectiveTimeInSeconds int64 = 3600 - // token业务认证扩展,基础鉴权token此处填空字符串 - var payload string = "" - - //生成token - token, err := token04.GenerateToken04(appId, strconv.Itoa(int(userId)), serverSecret, effectiveTimeInSeconds, payload) - if err != nil { - logger.Logger.Error(err) - return err - } - logger.Logger.Trace(token) - info := &machine.MSSendToken{} - info.Snid = msg.Snid - info.Token = token - info.Appid = msg.AppId - info.StreamId = msg.StreamId - - session.Send(int(machine.DollMachinePacketID_PACKET_MSSendToken), info) - fmt.Println("向游戏服务器发送娃娃机token:%v", info) +*/ +func SMDollMachineHeartBeatHandler(session *netlib.Session, packetId int, data interface{}) error { + //fmt.Println("收到返回的心跳包") return nil -}*/ - +} func init() { netlib.Register(int(machine.DollMachinePacketID_PACKET_SMDollMachinePerate), &machine.SMDollMachineoPerate{}, SMDollMachinePerateHandler) netlib.Register(int(machine.DollMachinePacketID_PACKET_SMDollMachineGrab), &machine.SMDollMachineGrab{}, SMDollMachineGrabHandler) //链接成功 返回消息 netlib.Register(int(machine.DollMachinePacketID_PACKET_SMGameLinkSucceed), &machine.SMGameLinkSucceed{}, SMGameLinkSucceedHandler) - //netlib.Register(int(machine.DollMachinePacketID_PACKET_SMGetToken), &machine.SMGetToken{}, SMGetTokenHandler) + netlib.Register(int(machine.DollMachinePacketID_Packet_SMDollMachineHeartBeat), &machine.SMDollMachineHeartBeat{}, SMDollMachineHeartBeatHandler) } diff --git a/protocol/machine/machine.pb.go b/protocol/machine/machine.pb.go index ddbb8f1..daedf50 100644 --- a/protocol/machine/machine.pb.go +++ b/protocol/machine/machine.pb.go @@ -34,6 +34,7 @@ const ( DollMachinePacketID_PACKET_SMGetToken DollMachinePacketID = 20006 DollMachinePacketID_PACKET_MSSendToken DollMachinePacketID = 20007 DollMachinePacketID_Packet_MSDollMachineHeartBeat DollMachinePacketID = 20008 + DollMachinePacketID_Packet_SMDollMachineHeartBeat DollMachinePacketID = 20009 ) // Enum value maps for DollMachinePacketID. @@ -49,6 +50,7 @@ var ( 20006: "PACKET_SMGetToken", 20007: "PACKET_MSSendToken", 20008: "Packet_MSDollMachineHeartBeat", + 20009: "Packet_SMDollMachineHeartBeat", } DollMachinePacketID_value = map[string]int32{ "PACKET_SMDollMachineZero": 0, @@ -61,6 +63,7 @@ var ( "PACKET_SMGetToken": 20006, "PACKET_MSSendToken": 20007, "Packet_MSDollMachineHeartBeat": 20008, + "Packet_SMDollMachineHeartBeat": 20009, } ) @@ -538,6 +541,44 @@ func (*MSDollMachineHeartBeat) Descriptor() ([]byte, []int) { return file_machine_proto_rawDescGZIP(), []int{7} } +type SMDollMachineHeartBeat struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SMDollMachineHeartBeat) Reset() { + *x = SMDollMachineHeartBeat{} + if protoimpl.UnsafeEnabled { + mi := &file_machine_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SMDollMachineHeartBeat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SMDollMachineHeartBeat) ProtoMessage() {} + +func (x *SMDollMachineHeartBeat) ProtoReflect() protoreflect.Message { + mi := &file_machine_proto_msgTypes[8] + 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 SMDollMachineHeartBeat.ProtoReflect.Descriptor instead. +func (*SMDollMachineHeartBeat) Descriptor() ([]byte, []int) { + return file_machine_proto_rawDescGZIP(), []int{8} +} + var File_machine_proto protoreflect.FileDescriptor var file_machine_proto_rawDesc = []byte{ @@ -576,32 +617,36 @@ var file_machine_proto_rawDesc = []byte{ 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x2a, 0xde, 0x02, - 0x0a, 0x13, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5a, 0x65, 0x72, - 0x6f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, - 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x10, - 0xa0, 0x9c, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, - 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x10, 0xa1, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, - 0x62, 0x10, 0xa2, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x10, 0xa3, 0x9c, 0x01, 0x12, 0x26, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x4d, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0xa4, 0x9c, 0x01, 0x12, 0x27, 0x0a, - 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x6f, 0x50, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x10, 0xa5, 0x9c, 0x01, 0x12, 0x17, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x4d, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, 0xa6, 0x9c, 0x01, 0x12, - 0x18, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x53, 0x65, 0x6e, 0x64, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, 0xa7, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x10, 0xa8, 0x9c, 0x01, 0x42, 0x27, - 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x22, 0x18, 0x0a, + 0x16, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, + 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x2a, 0x83, 0x03, 0x0a, 0x13, 0x44, 0x6f, 0x6c, 0x6c, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, + 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x1e, 0x0a, + 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x69, + 0x6e, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x10, 0xa0, 0x9c, 0x01, 0x12, 0x20, 0x0a, + 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, 0xa1, 0x9c, 0x01, 0x12, + 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x10, 0xa2, 0x9c, 0x01, 0x12, + 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xa3, 0x9c, 0x01, 0x12, + 0x26, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x10, 0xa4, 0x9c, 0x01, 0x12, 0x27, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x6f, + 0x50, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x10, 0xa5, 0x9c, 0x01, + 0x12, 0x17, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x47, 0x65, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, 0xa6, 0x9c, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, + 0xa7, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x4d, 0x53, + 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, + 0x42, 0x65, 0x61, 0x74, 0x10, 0xa8, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x10, 0xa9, 0x9c, 0x01, 0x42, 0x27, 0x5a, + 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -617,7 +662,7 @@ func file_machine_proto_rawDescGZIP() []byte { } var file_machine_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_machine_proto_goTypes = []interface{}{ (DollMachinePacketID)(0), // 0: machine.DollMachinePacketID (*SMGameLinkSucceed)(nil), // 1: machine.SMGameLinkSucceed @@ -628,6 +673,7 @@ var file_machine_proto_goTypes = []interface{}{ (*DollMachine)(nil), // 6: machine.DollMachine (*MSUpdateDollMachineStatus)(nil), // 7: machine.MSUpdateDollMachineStatus (*MSDollMachineHeartBeat)(nil), // 8: machine.MSDollMachineHeartBeat + (*SMDollMachineHeartBeat)(nil), // 9: machine.SMDollMachineHeartBeat } var file_machine_proto_depIdxs = []int32{ 6, // 0: machine.MSDollMachineList.data:type_name -> machine.DollMachine @@ -740,6 +786,18 @@ func file_machine_proto_init() { return nil } } + file_machine_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SMDollMachineHeartBeat); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -747,7 +805,7 @@ func file_machine_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_machine_proto_rawDesc, NumEnums: 1, - NumMessages: 8, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/machine/machine.proto b/protocol/machine/machine.proto index 7e03890..db5e50b 100644 --- a/protocol/machine/machine.proto +++ b/protocol/machine/machine.proto @@ -16,6 +16,7 @@ enum DollMachinePacketID { PACKET_SMGetToken = 20006; PACKET_MSSendToken = 20007; Packet_MSDollMachineHeartBeat = 20008; + Packet_SMDollMachineHeartBeat = 20009; } //通知链接成功 //PACKET_SMDollMachinePerate @@ -63,4 +64,7 @@ message MSUpdateDollMachineStatus{ //心跳 message MSDollMachineHeartBeat{ -} \ No newline at end of file +} +message SMDollMachineHeartBeat{ + +} diff --git a/protocol/server/server.pb.go b/protocol/server/server.pb.go index dca1ade..05b2c2e 100644 --- a/protocol/server/server.pb.go +++ b/protocol/server/server.pb.go @@ -910,7 +910,7 @@ type CustomParam struct { RoomTypeId int32 `protobuf:"varint,1,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` // 房间类型id RoomConfigId int32 `protobuf:"varint,2,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` // 房间配置id - CostType int32 `protobuf:"varint,3,opt,name=CostType,proto3" json:"CostType,omitempty"` // 房卡场付费方式 1AA 2 + CostType int32 `protobuf:"varint,3,opt,name=CostType,proto3" json:"CostType,omitempty"` // 房卡场付费方式 1AA 2房主 Password string `protobuf:"bytes,4,opt,name=Password,proto3" json:"Password,omitempty"` // 房间密码 Voice int32 `protobuf:"varint,5,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1开启 2关闭 } From 1063cc8fbac5b7337faa052b53459fb695ad7909 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 16:17:18 +0800 Subject: [PATCH 04/46] =?UTF-8?q?=E7=9B=B2=E7=9B=92=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/shopmgr.go | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index e01fe96..22551fe 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -1276,27 +1276,14 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, amount[ShopParamDiamond] = bbd.Grade } - var itemInfo []model.ItemInfo - var webItemInfo []*webapi_proto.ItemInfo - for _, info := range shopInfo.GetItems() { - itemInfo = append(itemInfo, model.ItemInfo{ - ItemId: info.ItemId, - ItemNum: info.ItemNum, - }) - webItemInfo = append(webItemInfo, &webapi_proto.ItemInfo{ - ItemId: info.ItemId, - ItemNum: info.ItemNum, - }) - } - - dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(bbd.Price2), common.GainWay_ActBlindBox, itemInfo, 0, "", 0, remark, []int32{bbd.Id}) + dbShop = this.NewDbShop(p, 0, amount[:], ShopConsumeMoney, int32(bbd.Price2), common.GainWay_ActBlindBox, nil, 0, "", 0, remark, []int32{bbd.Id}) err := model.InsertDbShopLog(dbShop) if err != nil { logger.Logger.Errorf("model.InsertDbShopLog err:", err) return nil } return webapi.API_CreateOrder(common.GetAppId(), dbShop.LogId.Hex(), ConfigPayId, p.SnId, 0, p.Platform, p.PackageID, p.DeviceOS, - p.DeviceId, bbd.Name, amount, int32(bbd.Price2), webItemInfo, "", p.Channel, p.ChannelId) + p.DeviceId, bbd.Name, amount, int32(bbd.Price2), nil, "", p.Channel, p.ChannelId) } else if wfs, ok := data.(*webapi_proto.WelfareSpree); ok { var items []model.ItemInfo var webItemInfo []*webapi_proto.ItemInfo From d74c8689478170a714f37c2ee8dc4f601d6d84b8 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 16:26:05 +0800 Subject: [PATCH 05/46] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=E8=BF=9B=E6=88=BF?= =?UTF-8?q?=E6=B6=88=E8=80=97=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/friend/friend.pb.go | 75 +++++++++++++++++++----------------- protocol/friend/friend.proto | 1 + protocol/server/server.pb.go | 2 +- worldsrv/action_friend.go | 11 ++++++ 4 files changed, 53 insertions(+), 36 deletions(-) diff --git a/protocol/friend/friend.pb.go b/protocol/friend/friend.pb.go index f1d7d53..0c8c056 100644 --- a/protocol/friend/friend.pb.go +++ b/protocol/friend/friend.pb.go @@ -47,6 +47,7 @@ const ( OpResultCode_OPRC_InviteFriend_PosIsError OpResultCode = 1019 //座位不存在 OpResultCode_OPRC_InviteFriend_HadInRoom OpResultCode = 1020 //已在房间中 OpResultCode_OPRC_Friend_NotOpMyself OpResultCode = 1021 //不能操作自己 + OpResultCode_OPRC_InviteFriend_CostNotEnough OpResultCode = 1022 // 房卡不足 ) // Enum value maps for OpResultCode. @@ -75,6 +76,7 @@ var ( 1019: "OPRC_InviteFriend_PosIsError", 1020: "OPRC_InviteFriend_HadInRoom", 1021: "OPRC_Friend_NotOpMyself", + 1022: "OPRC_InviteFriend_CostNotEnough", } OpResultCode_value = map[string]int32{ "OPRC_Sucess": 0, @@ -100,6 +102,7 @@ var ( "OPRC_InviteFriend_PosIsError": 1019, "OPRC_InviteFriend_HadInRoom": 1020, "OPRC_Friend_NotOpMyself": 1021, + "OPRC_InviteFriend_CostNotEnough": 1022, } ) @@ -1726,7 +1729,7 @@ var file_friend_proto_rawDesc = []byte{ 0x72, 0x69, 0x65, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x10, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x2a, 0xf3, 0x05, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x2a, 0x99, 0x06, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, @@ -1773,41 +1776,43 @@ var file_friend_proto_rawDesc = []byte{ 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x48, 0x61, 0x64, 0x49, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0xfc, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x4e, 0x6f, 0x74, 0x4f, 0x70, 0x4d, 0x79, - 0x73, 0x65, 0x6c, 0x66, 0x10, 0xfd, 0x07, 0x2a, 0xe9, 0x03, 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, - 0x6e, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, - 0x8c, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x8d, 0x15, 0x12, 0x16, 0x0a, 0x11, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, - 0x70, 0x10, 0x8e, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, 0x8f, 0x15, 0x12, 0x20, 0x0a, 0x1b, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x90, 0x15, 0x12, 0x20, - 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x91, 0x15, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x92, 0x15, 0x12, 0x1a, 0x0a, 0x15, + 0x73, 0x65, 0x6c, 0x66, 0x10, 0xfd, 0x07, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x5f, 0x43, 0x6f, 0x73, + 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xfe, 0x07, 0x2a, 0xe9, 0x03, + 0x0a, 0x0e, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, + 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x8c, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x10, + 0x8d, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, 0x8e, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, + 0x8f, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, + 0x67, 0x10, 0x90, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, + 0x4c, 0x6f, 0x67, 0x10, 0x91, 0x15, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, + 0x92, 0x15, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x93, 0x15, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, 0x94, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, - 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x93, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, - 0x64, 0x4f, 0x70, 0x10, 0x94, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, - 0x70, 0x10, 0x95, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x10, 0x96, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x10, 0x97, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x46, 0x75, 0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x10, 0x98, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x46, 0x75, 0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x10, 0x99, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, - 0x10, 0x9a, 0x15, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, - 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x66, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x4f, 0x70, 0x10, 0x95, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x41, 0x70, 0x70, + 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x10, 0x96, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x55, 0x6e, 0x72, 0x65, + 0x61, 0x64, 0x44, 0x61, 0x74, 0x61, 0x10, 0x97, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x46, 0x75, 0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x98, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x46, 0x75, 0x7a, 0x7a, 0x79, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x99, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x64, 0x64, + 0x46, 0x72, 0x69, 0x65, 0x6e, 0x64, 0x10, 0x9a, 0x15, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x66, 0x72, 0x69, 0x65, 0x6e, + 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/friend/friend.proto b/protocol/friend/friend.proto index 2c66cf2..ddf2284 100644 --- a/protocol/friend/friend.proto +++ b/protocol/friend/friend.proto @@ -27,6 +27,7 @@ enum OpResultCode { OPRC_InviteFriend_PosIsError = 1019; //座位不存在 OPRC_InviteFriend_HadInRoom = 1020; //已在房间中 OPRC_Friend_NotOpMyself = 1021; //不能操作自己 + OPRC_InviteFriend_CostNotEnough = 1022; // 房卡不足 } //好友数据消息id diff --git a/protocol/server/server.pb.go b/protocol/server/server.pb.go index dca1ade..05b2c2e 100644 --- a/protocol/server/server.pb.go +++ b/protocol/server/server.pb.go @@ -910,7 +910,7 @@ type CustomParam struct { RoomTypeId int32 `protobuf:"varint,1,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` // 房间类型id RoomConfigId int32 `protobuf:"varint,2,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` // 房间配置id - CostType int32 `protobuf:"varint,3,opt,name=CostType,proto3" json:"CostType,omitempty"` // 房卡场付费方式 1AA 2 + CostType int32 `protobuf:"varint,3,opt,name=CostType,proto3" json:"CostType,omitempty"` // 房卡场付费方式 1AA 2房主 Password string `protobuf:"bytes,4,opt,name=Password,proto3" json:"Password,omitempty"` // 房间密码 Voice int32 `protobuf:"varint,5,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1开启 2关闭 } diff --git a/worldsrv/action_friend.go b/worldsrv/action_friend.go index db3bcc2..d9861e7 100644 --- a/worldsrv/action_friend.go +++ b/worldsrv/action_friend.go @@ -501,6 +501,17 @@ func (this *CSInviteFriendOpHandler) Process(s *netlib.Session, packetid int, da } } + // 房费是否充足 + if scene.IsCustom() { + cfg := PlatformMgrSingleton.GetConfig(p.Platform).RoomConfig[scene.RoomConfigId] + if scene.CostType == 1 && !scene.sp.CostEnough(int(scene.CostType), scene.playerNum, cfg, p) { + logger.Logger.Trace("CSInviteFriendHandler cost error") + opRetCode = friend.OpResultCode_OPRC_InviteFriend_CostNotEnough + send(p) + return nil + } + } + sp := GetScenePolicy(scene.gameId, scene.gameMode) if sp == nil { logger.Logger.Warn("CSInviteFriendHandler game not exist") From 4bf11eb1d1eb8b2cdb8bbb3d0f36e9dce4da9350 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 16:42:47 +0800 Subject: [PATCH 06/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E7=82=B8?= =?UTF-8?q?=E5=BC=B9=E7=A7=AF=E5=88=86=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenedata_tienlen.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index 43c0797..cdcb4f3 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -1964,7 +1964,7 @@ func (this *TienLenSceneData) TrySmallGameBilled() { score = int64(this.roundScore) * int64(baseScore) / 100 //百分比 } losePlayerCoin := losePlayer.GetCoin() - if !this.IsMatchScene() && losePlayerCoin < score { //输完 + if !this.IsMatchScene() && !this.IsCustom() && losePlayerCoin < score { //输完 score = losePlayerCoin } //判断宠物技能生不生效 @@ -1983,7 +1983,7 @@ func (this *TienLenSceneData) TrySmallGameBilled() { gainScore := int64(float64(score) * float64(10000-taxRate) / 10000.0) //税后 bombTaxScore := score - gainScore // win - if this.IsMatchScene() { + if this.IsMatchScene() || this.IsCustom() { winPlayer.AddCoinNoLog(gainScore, 0) } else { winPlayer.AddCoin(gainScore, common.GainWay_CoinSceneWin, 0, "system", this.GetSceneName()) @@ -1997,7 +1997,7 @@ func (this *TienLenSceneData) TrySmallGameBilled() { winPlayer.bombRankScore += rankScore * rule.RankBaseScore } //lose - if this.IsMatchScene() { + if this.IsMatchScene() && this.IsCustom() { losePlayer.AddCoinNoLog(-score, 0) } else { losePlayer.AddCoin(-score, common.GainWay_CoinSceneLost, 0, "system", this.GetSceneName()) From 0df3e0938c566f7d776930b1cd79966da1b4403b Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 17:21:12 +0800 Subject: [PATCH 07/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E6=88=BF?= =?UTF-8?q?=E4=B8=BB=E4=BB=98=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_game.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index fbc7795..360feeb 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -1344,7 +1344,7 @@ func CSCreatePrivateRoomHandler(s *netlib.Session, packetId int, data interface{ return nil } - if cfg.GetCostType() == 2 { + if costType == 2 { sp.CostPayment(scene, p) } From ef15347caf3c1873501545e493dbba620675ac99 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 17:30:05 +0800 Subject: [PATCH 08/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E6=88=BF?= =?UTF-8?q?=E4=B8=BB=E4=BB=98=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/scenepolicydata.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/scenepolicydata.go b/worldsrv/scenepolicydata.go index db5642d..f891459 100644 --- a/worldsrv/scenepolicydata.go +++ b/worldsrv/scenepolicydata.go @@ -166,7 +166,7 @@ func (spd *ScenePolicyData) GiveCostPayment(s *Scene, snid int32) bool { return false } - if roomConfig.GetCostType() != 1 { // 只有房主付费才有返还 + if roomConfig.GetCostType() != 2 { // 只有房主付费才有返还 return false } From 6eedc840509fb8335334ee876a3574a8d498103a Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 17:38:50 +0800 Subject: [PATCH 09/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E6=88=BF?= =?UTF-8?q?=E4=B8=BB=E4=BB=98=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/scenepolicydata.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worldsrv/scenepolicydata.go b/worldsrv/scenepolicydata.go index f891459..da9f6f3 100644 --- a/worldsrv/scenepolicydata.go +++ b/worldsrv/scenepolicydata.go @@ -142,7 +142,7 @@ func (spd *ScenePolicyData) CostPayment(s *Scene, p *Player) bool { if roomConfig == nil { return false } - return spd.costEnough(int(roomConfig.GetCostType()), s.playerNum, roomConfig, p.SnId, func(items []*model.Item) { + return spd.costEnough(int(s.GetCostType()), s.playerNum, roomConfig, p.SnId, func(items []*model.Item) { for _, v := range items { v.ItemNum = -v.ItemNum } @@ -166,7 +166,7 @@ func (spd *ScenePolicyData) GiveCostPayment(s *Scene, snid int32) bool { return false } - if roomConfig.GetCostType() != 2 { // 只有房主付费才有返还 + if s.GetCostType() != 2 { // 只有房主付费才有返还 return false } From 09202f60d3617126b2dda90b5303a01ee1dfd7dd Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 11 Sep 2024 18:27:40 +0800 Subject: [PATCH 10/46] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E9=81=93=E5=85=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/base/etcd.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gamesrv/base/etcd.go b/gamesrv/base/etcd.go index 5452a21..44233f8 100644 --- a/gamesrv/base/etcd.go +++ b/gamesrv/base/etcd.go @@ -9,6 +9,7 @@ import ( "mongo.games.com/game/etcd" "mongo.games.com/game/model" "mongo.games.com/game/protocol/webapi" + "mongo.games.com/game/srvdata" ) var ConfigMgrInst = model.NewConfigMgr() @@ -18,6 +19,8 @@ func init() { etcd.Register(etcd.ETCDKEY_PLAYERPOOL, webapi.PlayerPool{}, platformConfigEtcd) // 游戏配置 etcd.Register(etcd.ETCDKEY_GAME_CONFIG, webapi.GameConfig{}, platformConfigEtcd) + // 道具列表 + etcd.Register(etcd.ETCDKEY_Item, webapi.ItemConfig{}, platformConfigEtcd) // 集卡活动 etcd.Register(etcd.ETCDKEY_ACT_Collect, webapi.WelfareCollectConfig{}, platformConfigEtcd) // 渠道开关 @@ -45,6 +48,9 @@ func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev ConfigMgrInst.GetConfig(d.Platform).SkinConfig = d case *webapi.MachineConfig: ConfigMgrInst.GetConfig(d.Platform).MachineConfig = d + case *webapi.ItemConfig: + ConfigMgrInst.GetConfig(d.Platform).ItemConfig = d + srvdata.GameItemMgr.SetConfig(d) default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } From 3492ba16317524ffbfd9503aade46e0d61903d29 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 12 Sep 2024 09:00:30 +0800 Subject: [PATCH 11/46] =?UTF-8?q?=E5=BF=83=E8=B7=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/action/action_machine.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gamesrv/action/action_machine.go b/gamesrv/action/action_machine.go index de05608..0ce6132 100644 --- a/gamesrv/action/action_machine.go +++ b/gamesrv/action/action_machine.go @@ -4,6 +4,7 @@ import ( "mongo.games.com/game/protocol/machine" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/srvlib" "sync" ) @@ -73,7 +74,12 @@ func MSDollMachineHeartBeatHandler(session *netlib.Session, packetId int, data i //fmt.Println("收到娃娃机服务心跳!!!") //返回心跳 pack := &machine.SMDollMachineHeartBeat{} - session.Send(int(machine.DollMachinePacketID_Packet_SMDollMachineHeartBeat), pack) + machineConn := srvlib.ServerSessionMgrSington.GetSession(1, 10, 1001) + if machineConn != nil { + machineConn.Send(int(machine.DollMachinePacketID_Packet_SMDollMachineHeartBeat), pack) + } else { + logger.Logger.Error("MSDollMachineHeartBeatHandler:MachineConn is nil !") + } return nil } From 58d15e767d2bf93790979f3966e0f1c3a6531f47 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Sep 2024 09:38:58 +0800 Subject: [PATCH 12/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- machine/{machineConfig.json => machineIPConfig.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename machine/{machineConfig.json => machineIPConfig.json} (100%) diff --git a/machine/machineConfig.json b/machine/machineIPConfig.json similarity index 100% rename from machine/machineConfig.json rename to machine/machineIPConfig.json From 3c3fcbb920abe3ab7cedf799962ea4476a7593da Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Sep 2024 09:51:41 +0800 Subject: [PATCH 13/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E6=89=93?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shell/build.bat | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/build.bat b/shell/build.bat index 0120fb7..5d98f1f 100644 --- a/shell/build.bat +++ b/shell/build.bat @@ -4,4 +4,5 @@ call shell/build_sub.bat gatesrv call shell/build_sub.bat worldsrv call shell/build_sub.bat gamesrv call shell/build_sub.bat robot -call shell/build_sub.bat ranksrv \ No newline at end of file +call shell/build_sub.bat ranksrv +call shell/build_sub.bat machine \ No newline at end of file From 31db1865649c3857cdb3b8559737e1fe9e0be49e Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Sep 2024 10:51:16 +0800 Subject: [PATCH 14/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E5=BF=83?= =?UTF-8?q?=E8=B7=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/action/action_machine.go | 2 + machine/machinedoll/machinemgr.go | 1 + protocol/machine/machine.pb.go | 84 +++++++++++++++++++------------ protocol/machine/machine.proto | 4 +- 4 files changed, 58 insertions(+), 33 deletions(-) diff --git a/gamesrv/action/action_machine.go b/gamesrv/action/action_machine.go index 0ce6132..7fbf164 100644 --- a/gamesrv/action/action_machine.go +++ b/gamesrv/action/action_machine.go @@ -6,6 +6,7 @@ import ( "mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/srvlib" "sync" + "time" ) var MachineMap = make(map[int]*DollMachine) @@ -74,6 +75,7 @@ func MSDollMachineHeartBeatHandler(session *netlib.Session, packetId int, data i //fmt.Println("收到娃娃机服务心跳!!!") //返回心跳 pack := &machine.SMDollMachineHeartBeat{} + pack.TimeStamp = time.Now().UnixMilli() machineConn := srvlib.ServerSessionMgrSington.GetSession(1, 10, 1001) if machineConn != nil { machineConn.Send(int(machine.DollMachinePacketID_Packet_SMDollMachineHeartBeat), pack) diff --git a/machine/machinedoll/machinemgr.go b/machine/machinedoll/machinemgr.go index 384c901..b4cbf18 100644 --- a/machine/machinedoll/machinemgr.go +++ b/machine/machinedoll/machinemgr.go @@ -131,6 +131,7 @@ func (this *MachineManager) CreateConn(key int) *Conn { func (this *MachineManager) Update() { //向游戏服发送心跳包 pack := &machine.MSDollMachineHeartBeat{} + pack.TimeStamp = time.Now().UnixMilli() SendToGameServer(int(machine.DollMachinePacketID_Packet_MSDollMachineHeartBeat), pack) /* var delConn []*Conn task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { diff --git a/protocol/machine/machine.pb.go b/protocol/machine/machine.pb.go index daedf50..ff5cea9 100644 --- a/protocol/machine/machine.pb.go +++ b/protocol/machine/machine.pb.go @@ -507,6 +507,8 @@ type MSDollMachineHeartBeat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + TimeStamp int64 `protobuf:"varint,1,opt,name=TimeStamp,proto3" json:"TimeStamp,omitempty"` } func (x *MSDollMachineHeartBeat) Reset() { @@ -541,10 +543,19 @@ func (*MSDollMachineHeartBeat) Descriptor() ([]byte, []int) { return file_machine_proto_rawDescGZIP(), []int{7} } +func (x *MSDollMachineHeartBeat) GetTimeStamp() int64 { + if x != nil { + return x.TimeStamp + } + return 0 +} + type SMDollMachineHeartBeat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + TimeStamp int64 `protobuf:"varint,1,opt,name=TimeStamp,proto3" json:"TimeStamp,omitempty"` } func (x *SMDollMachineHeartBeat) Reset() { @@ -579,6 +590,13 @@ func (*SMDollMachineHeartBeat) Descriptor() ([]byte, []int) { return file_machine_proto_rawDescGZIP(), []int{8} } +func (x *SMDollMachineHeartBeat) GetTimeStamp() int64 { + if x != nil { + return x.TimeStamp + } + return 0 +} + var File_machine_proto protoreflect.FileDescriptor var file_machine_proto_rawDesc = []byte{ @@ -616,37 +634,41 @@ var file_machine_proto_rawDesc = []byte{ 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x41, - 0x64, 0x64, 0x72, 0x22, 0x18, 0x0a, 0x16, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x22, 0x18, 0x0a, - 0x16, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x2a, 0x83, 0x03, 0x0a, 0x13, 0x44, 0x6f, 0x6c, 0x6c, - 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, - 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, - 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x1e, 0x0a, - 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x69, - 0x6e, 0x6b, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x10, 0xa0, 0x9c, 0x01, 0x12, 0x20, 0x0a, - 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, 0xa1, 0x9c, 0x01, 0x12, - 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, - 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x10, 0xa2, 0x9c, 0x01, 0x12, - 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, - 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xa3, 0x9c, 0x01, 0x12, - 0x26, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x10, 0xa4, 0x9c, 0x01, 0x12, 0x27, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x6f, - 0x50, 0x65, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x10, 0xa5, 0x9c, 0x01, - 0x12, 0x17, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x47, 0x65, 0x74, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, 0xa6, 0x9c, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, - 0xa7, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x4d, 0x53, - 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, - 0x42, 0x65, 0x61, 0x74, 0x10, 0xa8, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, - 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x10, 0xa9, 0x9c, 0x01, 0x42, 0x27, 0x5a, - 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x64, 0x72, 0x22, 0x36, 0x0a, 0x16, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x36, 0x0a, 0x16, 0x53, + 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x42, 0x65, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x6d, 0x70, 0x2a, 0x83, 0x03, 0x0a, 0x13, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x65, 0x64, 0x10, 0xa0, 0x9c, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x65, 0x50, 0x65, 0x72, 0x61, 0x74, 0x65, 0x10, 0xa1, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x62, 0x10, 0xa2, 0x9c, 0x01, 0x12, 0x1e, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xa3, 0x9c, 0x01, 0x12, 0x26, 0x0a, 0x20, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6f, + 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, + 0xa4, 0x9c, 0x01, 0x12, 0x27, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, + 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x6f, 0x50, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x10, 0xa5, 0x9c, 0x01, 0x12, 0x17, 0x0a, 0x11, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x10, 0xa6, 0x9c, 0x01, 0x12, 0x18, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x4d, 0x53, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x10, 0xa7, 0x9c, 0x01, 0x12, + 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x4d, 0x53, 0x44, 0x6f, 0x6c, 0x6c, + 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, 0x74, 0x42, 0x65, 0x61, 0x74, + 0x10, 0xa8, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x53, + 0x4d, 0x44, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x42, 0x65, 0x61, 0x74, 0x10, 0xa9, 0x9c, 0x01, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, + 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/machine/machine.proto b/protocol/machine/machine.proto index db5e50b..7a21f5a 100644 --- a/protocol/machine/machine.proto +++ b/protocol/machine/machine.proto @@ -63,8 +63,8 @@ message MSUpdateDollMachineStatus{ } //心跳 message MSDollMachineHeartBeat{ - + int64 TimeStamp = 1; } message SMDollMachineHeartBeat{ - + int64 TimeStamp = 1; } From cfa2c003c28295a4028a2d49d6fb2b317c98259e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 13 Sep 2024 16:57:37 +0800 Subject: [PATCH 15/46] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E4=B8=AD=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E4=BD=99=E9=A2=9D=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 6 ++++++ gamesrv/base/player.go | 3 +++ protocol/player/player.pb.go | 11 ++++++++++- protocol/player/player.proto | 1 + 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/common/constant.go b/common/constant.go index 190f48f..a40bee0 100644 --- a/common/constant.go +++ b/common/constant.go @@ -848,3 +848,9 @@ type NotifyType int // 通知类型 const ( NotifyPrivateRoomList NotifyType = 1 // 私人房间列表 ) + +// SCPlayerCoinChange 中数值类型 +const ( + PlayerChangeTypeCoin = 0 // 金币 + PlayerChangeTypeNum = 1 // 积分 +) diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 7a8c0cb..b313fee 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -493,6 +493,7 @@ func (this *Player) AddCoin(num int64, gainWay int32, syncFlag int, oper, remark SnId: proto.Int32(this.SnId), AddCoin: proto.Int64(num), RestCoin: proto.Int64(this.Coin), + Tp: common.PlayerChangeTypeCoin, } proto.SetDefaults(pack) if (syncFlag & SyncFlag_Broadcast) != 0 { @@ -519,6 +520,7 @@ func (this *Player) AddCoinNoLog(num int64, syncFlag int) { SnId: proto.Int32(this.SnId), AddCoin: proto.Int64(num), RestCoin: proto.Int64(this.Coin), + Tp: common.PlayerChangeTypeNum, } proto.SetDefaults(pack) if (syncFlag & SyncFlag_Broadcast) != 0 { @@ -568,6 +570,7 @@ func (this *Player) AddCoinAsync(num int64, gainWay int32, notifyC, broadcast bo SnId: proto.Int32(this.SnId), AddCoin: proto.Int64(num), RestCoin: proto.Int64(this.Coin), + Tp: common.PlayerChangeTypeCoin, } proto.SetDefaults(pack) if broadcast { diff --git a/protocol/player/player.pb.go b/protocol/player/player.pb.go index ada7556..d843768 100644 --- a/protocol/player/player.pb.go +++ b/protocol/player/player.pb.go @@ -3741,6 +3741,7 @@ type SCPlayerCoinChange struct { SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` AddCoin int64 `protobuf:"varint,2,opt,name=AddCoin,proto3" json:"AddCoin,omitempty"` RestCoin int64 `protobuf:"varint,3,opt,name=RestCoin,proto3" json:"RestCoin,omitempty"` + Tp int32 `protobuf:"varint,4,opt,name=Tp,proto3" json:"Tp,omitempty"` // 0 金币 1积分 } func (x *SCPlayerCoinChange) Reset() { @@ -3796,6 +3797,13 @@ func (x *SCPlayerCoinChange) GetRestCoin() int64 { return 0 } +func (x *SCPlayerCoinChange) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + //PACKET_SC_PLAYERRECHARGEANSWER type SCPlayerRechargeAnswer struct { state protoimpl.MessageState @@ -11484,12 +11492,13 @@ var file_player_proto_rawDesc = []byte{ 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, - 0x22, 0x5e, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, + 0x22, 0x6e, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x82, 0x01, 0x0a, 0x16, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, diff --git a/protocol/player/player.proto b/protocol/player/player.proto index d336347..4ebcb55 100644 --- a/protocol/player/player.proto +++ b/protocol/player/player.proto @@ -578,6 +578,7 @@ message SCPlayerCoinChange { int32 SnId = 1; int64 AddCoin = 2; int64 RestCoin = 3; + int32 Tp = 4; // 0 金币 1积分 } //PACKET_SC_PLAYERRECHARGEANSWER message SCPlayerRechargeAnswer { From f1eccf335ff004401834a35762608332c60e8262 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Sep 2024 17:56:06 +0800 Subject: [PATCH 16/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E5=85=91=E6=8D=A2?= =?UTF-8?q?=E5=95=86=E5=9F=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 3 + protocol/shop/shop.pb.go | 308 ++++---- protocol/shop/shop.proto | 6 +- protocol/webapi/common.pb.go | 1449 +++++++++++++++++----------------- protocol/webapi/common.proto | 5 +- worldsrv/shopmgr.go | 16 +- 6 files changed, 915 insertions(+), 872 deletions(-) diff --git a/common/constant.go b/common/constant.go index 190f48f..19fade6 100644 --- a/common/constant.go +++ b/common/constant.go @@ -315,6 +315,7 @@ const ( GainWayRoomGain = 107 //房卡场获得 GainWayItemShop = 108 // 交易市场道具交易 GainWayClawdoorCostItem = 109 // 娃娃机上分扣道具 + GainWayItemChangeDoll = 110 // 道具兑换娃娃 ) // 后台选择 金币变化类型 的充值 类型id号起始 @@ -565,6 +566,7 @@ const ( ItemIDVCard = 30001 // v卡 ItemIDJCard = 30002 // 金券 ItemDiamondScore = 100012 //钻石积分 + ItemDollCard = 74004 // 娃娃卡 ) func ToItemId(id int32) int32 { @@ -594,6 +596,7 @@ const ( ItemTypeExpireTime = 15 // 时效类道具 ItemTypeObjective = 16 // 目标类道具 ItemTypeChange = 17 // 兑换话费 + ItemTypeMachine = 18 //娃娃兑换 ItemTypeSkinChip = 22 // 皮肤碎片 ) diff --git a/protocol/shop/shop.pb.go b/protocol/shop/shop.pb.go index 3165a5f..ab1fa63 100644 --- a/protocol/shop/shop.pb.go +++ b/protocol/shop/shop.pb.go @@ -35,6 +35,7 @@ const ( OpResultCode_OPRC_JCoinNotEnough OpResultCode = 8 //金券不足 OpResultCode_OPRC_VipLevelNotEnough OpResultCode = 9 //Vip等级不足 OpResultCode_OPRC_NotSIMCode OpResultCode = 10 //兑换码不足 + OpResultCode_OPRC_DCoinNotEnough OpResultCode = 11 //娃娃卡不足 ) // Enum value maps for OpResultCode. @@ -51,6 +52,7 @@ var ( 8: "OPRC_JCoinNotEnough", 9: "OPRC_VipLevelNotEnough", 10: "OPRC_NotSIMCode", + 11: "OPRC_DCoinNotEnough", } OpResultCode_value = map[string]int32{ "OPRC_Sucess": 0, @@ -64,6 +66,7 @@ var ( "OPRC_JCoinNotEnough": 8, "OPRC_VipLevelNotEnough": 9, "OPRC_NotSIMCode": 10, + "OPRC_DCoinNotEnough": 11, } ) @@ -1369,7 +1372,7 @@ type ShopExchangeInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Type int32 `protobuf:"varint,1,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 + Type int32 `protobuf:"varint,1,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 3.娃娃 Picture string `protobuf:"bytes,2,opt,name=Picture,proto3" json:"Picture,omitempty"` // 图片 Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 名称 Rule string `protobuf:"bytes,4,opt,name=Rule,proto3" json:"Rule,omitempty"` //规则说明 @@ -1541,7 +1544,8 @@ type ExchangeType struct { Price int32 `protobuf:"varint,1,opt,name=Price,proto3" json:"Price,omitempty"` // 消耗V卡数量 JPrice int32 `protobuf:"varint,2,opt,name=JPrice,proto3" json:"JPrice,omitempty"` //消耗金券数量 Cash int32 `protobuf:"varint,3,opt,name=Cash,proto3" json:"Cash,omitempty"` //消耗现金数量 - Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` //行数 + DPrice int32 `protobuf:"varint,4,opt,name=DPrice,proto3" json:"DPrice,omitempty"` //消耗娃娃卡数量 + Id int32 `protobuf:"varint,5,opt,name=Id,proto3" json:"Id,omitempty"` //行数 } func (x *ExchangeType) Reset() { @@ -1597,6 +1601,13 @@ func (x *ExchangeType) GetCash() int32 { return 0 } +func (x *ExchangeType) GetDPrice() int32 { + if x != nil { + return x.DPrice + } + return 0 +} + func (x *ExchangeType) GetId() int32 { if x != nil { return x.Id @@ -2646,155 +2657,158 @@ var file_shop_proto_rawDesc = []byte{ 0x74, 0x61, 0x52, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x73, 0x22, 0x78, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, - 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, - 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x53, - 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, - 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, - 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x68, - 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x09, 0x43, 0x53, 0x50, 0x61, 0x79, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x42, 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, - 0x6d, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, - 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x2a, - 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0xd3, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x79, - 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, - 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, - 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x08, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x39, - 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x43, 0x53, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x64, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x22, - 0x2e, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x41, - 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22, - 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, - 0x6f, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, - 0x70, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x95, 0x02, - 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, - 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, - 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, - 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, - 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x03, - 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0x06, - 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, 0x63, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, - 0x67, 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x69, 0x70, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x09, - 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x49, 0x4d, 0x43, - 0x6f, 0x64, 0x65, 0x10, 0x0a, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, - 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5, 0x13, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, - 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41, 0x44, - 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, - 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, 0x59, - 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xcb, 0x13, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, - 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc, 0x13, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, - 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce, 0x13, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, - 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x13, 0x12, - 0x1a, 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x49, 0x56, 0x45, 0x43, - 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0xd3, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, - 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd7, 0x13, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49, - 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x49, - 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, - 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x68, 0x6f, 0x70, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x45, 0x0a, 0x0d, 0x54, + 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, + 0x72, 0x6c, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, + 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, + 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, + 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, + 0x66, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xc9, 0x01, + 0x0a, 0x09, 0x43, 0x53, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, + 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, + 0x61, 0x79, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x50, 0x61, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x75, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, + 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0x4b, 0x0a, 0x09, 0x53, 0x43, 0x50, + 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x4f, + 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x2a, 0x0a, 0x10, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, + 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x3c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, + 0x22, 0xd3, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, + 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x49, 0x6e, + 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, + 0x50, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x38, 0x0a, + 0x10, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x73, 0x12, 0x24, 0x0a, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x05, 0x41, 0x64, 0x64, 0x72, 0x73, 0x22, 0x2e, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x22, 0x0a, + 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x68, + 0x6f, 0x70, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, + 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0xae, 0x02, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, + 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x56, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, + 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, + 0x67, 0x68, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x74, 0x74, 0x10, 0x05, 0x12, 0x18, + 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x6f, 0x6c, 0x64, 0x4f, 0x75, 0x74, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x63, + 0x63, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x43, 0x6f, 0x69, + 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x74, + 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x49, 0x4d, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x0a, 0x12, 0x17, 0x0a, + 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, + 0x6f, 0x75, 0x67, 0x68, 0x10, 0x0b, 0x2a, 0x91, 0x05, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0xc4, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xc5, 0x13, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, + 0x5f, 0x41, 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc6, 0x13, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x41, + 0x44, 0x4c, 0x4f, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0xc7, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, + 0x41, 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc8, 0x13, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x56, 0x43, 0x50, 0x41, + 0x59, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xc9, 0x13, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xca, 0x13, 0x12, 0x22, 0x0a, 0x1d, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, + 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xcb, 0x13, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, + 0x4f, 0x50, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcc, 0x13, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, + 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xcd, 0x13, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x45, + 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xce, 0x13, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, + 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcf, 0x13, + 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x49, 0x56, 0x45, + 0x43, 0x4f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd2, 0x13, 0x12, 0x15, 0x0a, 0x10, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, + 0x10, 0xd3, 0x13, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xd4, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, + 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xd5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x45, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x4c, + 0x49, 0x53, 0x54, 0x10, 0xd6, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd7, 0x13, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x41, 0x44, 0x44, 0x52, 0x10, 0xd8, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, + 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xd9, 0x13, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, + 0x49, 0x50, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0xda, 0x13, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, + 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, + 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x68, 0x6f, 0x70, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/shop/shop.proto b/protocol/shop/shop.proto index f54c60b..b9b7be1 100644 --- a/protocol/shop/shop.proto +++ b/protocol/shop/shop.proto @@ -14,6 +14,7 @@ enum OpResultCode { OPRC_JCoinNotEnough = 8;//金券不足 OPRC_VipLevelNotEnough = 9;//Vip等级不足 OPRC_NotSIMCode = 10;//兑换码不足 + OPRC_DCoinNotEnough = 11;//娃娃卡不足 } // 商城 enum SPacketID { @@ -167,7 +168,7 @@ message SCShopExchange{ message CSShopExchangeList{ } message ShopExchangeInfo{ - int32 Type = 1; // 类型 1,话费2,实物 + int32 Type = 1; // 类型 1,话费2,实物 3.娃娃 string Picture = 2; // 图片 string Name = 3; // 名称 string Rule = 4;//规则说明 @@ -192,7 +193,8 @@ message ExchangeType{ int32 Price = 1; // 消耗V卡数量 int32 JPrice = 2; //消耗金券数量 int32 Cash = 3; //消耗现金数量 - int32 Id = 4; //行数 + int32 DPrice = 4;//消耗娃娃卡数量 + int32 Id = 5; //行数 } message TelChargeData { diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 398c963..d3fbb62 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -3291,7 +3291,7 @@ type ExchangeShop struct { Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //商品ID Picture string `protobuf:"bytes,2,opt,name=Picture,proto3" json:"Picture,omitempty"` // 图片 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 3.娃娃 Name string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"` // 名称 Content string `protobuf:"bytes,5,opt,name=Content,proto3" json:"Content,omitempty"` //规则说明 //int32 ShopLimit = 6; // 剩余总数 @@ -3525,7 +3525,8 @@ type ExchangeType struct { Price int32 `protobuf:"varint,1,opt,name=Price,proto3" json:"Price,omitempty"` // 消耗V卡数量 JPrice int32 `protobuf:"varint,2,opt,name=JPrice,proto3" json:"JPrice,omitempty"` //消耗金券数量 Cash int32 `protobuf:"varint,3,opt,name=Cash,proto3" json:"Cash,omitempty"` //消耗现金数量 - Id int32 `protobuf:"varint,4,opt,name=Id,proto3" json:"Id,omitempty"` //行数 + DPrice int32 `protobuf:"varint,4,opt,name=DPrice,proto3" json:"DPrice,omitempty"` //消耗娃娃卡数量 + Id int32 `protobuf:"varint,5,opt,name=Id,proto3" json:"Id,omitempty"` //行数 } func (x *ExchangeType) Reset() { @@ -3581,6 +3582,13 @@ func (x *ExchangeType) GetCash() int32 { return 0 } +func (x *ExchangeType) GetDPrice() int32 { + if x != nil { + return x.DPrice + } + return 0 +} + func (x *ExchangeType) GetId() int32 { if x != nil { return x.Id @@ -9341,733 +9349,734 @@ var file_common_proto_rawDesc = []byte{ 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x55, 0x72, 0x6c, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x55, 0x72, 0x6c, 0x22, 0x78, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x12, 0x2a, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6c, 0x0a, 0x0a, - 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, - 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, - 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x83, 0x05, 0x0a, 0x08, 0x49, - 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, - 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, - 0x41, 0x72, 0x65, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x41, - 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, - 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, - 0x74, 0x41, 0x72, 0x65, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, - 0x74, 0x41, 0x72, 0x65, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 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, 0x50, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, - 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x22, 0x50, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, - 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, - 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, - 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, - 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb1, 0x07, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, - 0x6d, 0x65, 0x62, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, - 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x26, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, - 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, - 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, - 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, - 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, - 0x48, 0x4d, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x10, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x53, 0x68, 0x6f, 0x77, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, - 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x17, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x64, - 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x11, 0x47, - 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x5b, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x64, 0x0a, 0x0b, - 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, - 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, - 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, - 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, - 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, - 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, - 0xba, 0x01, 0x0a, 0x18, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, - 0x0a, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, - 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x61, 0x0a, 0x10, - 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x79, 0x12, 0x31, 0x0a, 0x09, - 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, - 0x48, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0xc9, 0x02, 0x0a, 0x10, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, - 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x41, 0x64, 0x64, - 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, - 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, - 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, - 0x0a, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x12, 0x44, 0x0a, 0x10, 0x41, - 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, - 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, - 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, - 0x32, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, - 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, - 0xdb, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, - 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x01, - 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, - 0x78, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, + 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x84, 0x01, + 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, + 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, + 0x6f, 0x77, 0x22, 0x83, 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, + 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, + 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, + 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x41, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x18, 0x11, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x12, 0x31, 0x0a, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, + 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x38, + 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x50, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, + 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50, 0x0a, 0x08, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, + 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, + 0xb1, 0x07, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x12, + 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, + 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x2c, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x53, 0x69, 0x67, 0x6e, + 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, + 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, + 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, + 0x65, 0x65, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, + 0x53, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, + 0x64, 0x48, 0x4d, 0x53, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x03, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, + 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, + 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, + 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, + 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, + 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, + 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x41, + 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x1b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, + 0x5b, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x0d, + 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0x64, 0x0a, 0x0b, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x57, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x57, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x22, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x55, + 0x70, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x55, + 0x70, 0x44, 0x61, 0x79, 0x12, 0x31, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, + 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x55, 0x70, + 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, + 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, + 0x6d, 0x22, 0xc9, 0x02, 0x0a, 0x10, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, + 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x36, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, + 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, + 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x41, 0x64, 0x64, + 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, + 0x74, 0x65, 0x32, 0x12, 0x44, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, + 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, + 0x74, 0x65, 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x41, 0x64, 0x64, + 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, + 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x41, + 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, + 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, - 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x0c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, - 0x70, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x14, 0x0a, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x56, 0x49, 0x50, 0x45, 0x58, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, - 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x17, - 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1c, - 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, - 0x73, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, - 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xa2, 0x07, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, - 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, - 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x37, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, - 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x28, - 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, - 0x44, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, - 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, - 0x49, 0x64, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, - 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x26, 0x0a, 0x0e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x39, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, - 0x67, 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x39, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, - 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, - 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x70, 0x0a, 0x0e, 0x56, - 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, - 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x95, 0x01, - 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, - 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, - 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x64, - 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, - 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, - 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, - 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x0a, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, - 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, - 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x18, - 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x69, 0x67, 0x68, - 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x46, 0x69, 0x67, - 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x12, 0x18, 0x0a, 0x07, - 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, - 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, - 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, - 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, - 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x46, - 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x22, 0x4f, 0x0a, - 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x4a, - 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x67, 0x0a, 0x13, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, - 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, - 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0xb2, 0x03, 0x0a, 0x0f, 0x41, - 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, - 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, - 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x68, - 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x41, - 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x31, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, - 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x33, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x22, - 0x0a, 0x0c, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 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, - 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, - 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, - 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, - 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, - 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52, - 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, - 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, - 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, - 0x65, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, - 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, - 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x37, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x22, 0x70, 0x0a, 0x14, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x22, 0x53, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x05, - 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x61, 0x6e, 0x6b, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xb3, 0x01, - 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, - 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x12, 0x2b, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, - 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x09, - 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, - 0x35, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 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, 0xa6, 0x02, 0x0a, 0x08, - 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, - 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, - 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x06, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, - 0x72, 0x61, 0x6d, 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, 0x50, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26, - 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, - 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, - 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, - 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, - 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x70, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, - 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, - 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e, - 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x0b, - 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x22, 0x54, 0x0a, 0x0d, 0x4d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, - 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xdb, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x69, 0x6e, + 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, - 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, - 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, + 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, + 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, + 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x0c, + 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, + 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, + 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x12, 0x18, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, + 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x46, + 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, + 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, + 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, + 0x63, 0x6c, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, 0x65, 0x61, + 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xa2, + 0x07, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, + 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, + 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, + 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, + 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, + 0x70, 0x49, 0x64, 0x37, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, + 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x1a, 0x38, 0x0a, 0x0a, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 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, 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, + 0x63, 0x66, 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, + 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, + 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x57, 0x0a, + 0x0b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, + 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x2d, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, + 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, + 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, + 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, + 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, + 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, + 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, + 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, + 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, + 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, + 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, + 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, + 0x61, 0x79, 0x55, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, + 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, + 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, + 0x69, 0x61, 0x6e, 0x48, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, + 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, + 0x43, 0x68, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, + 0x43, 0x68, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, + 0x65, 0x6e, 0x43, 0x68, 0x61, 0x22, 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x22, 0x67, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x52, + 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x6e, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, + 0x75, 0x6d, 0x22, 0xb2, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, + 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x2b, 0x0a, 0x07, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, + 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, 0x69, + 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x61, + 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, + 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, + 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x31, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, - 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, - 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, - 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, + 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x12, 0x3b, 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, + 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, + 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, + 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x18, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, + 0x37, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, + 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x70, 0x0a, 0x14, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, + 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x0a, 0x49, 0x74, + 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, + 0x83, 0x01, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, + 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xb3, 0x01, 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x12, 0x2b, + 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0e, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, + 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, + 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, + 0x65, 0x6d, 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, 0xa6, 0x02, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x43, 0x0a, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, + 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x52, 0x06, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x50, 0x0a, 0x0a, + 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, + 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9c, + 0x01, 0x0a, 0x0e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, + 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, + 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x70, 0x0a, + 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, + 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, + 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, + 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, + 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, + 0x70, 0x65, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x0b, 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, + 0x6b, 0x69, 0x70, 0x22, 0x54, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x0b, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, + 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, + 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4c, + 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, 0x0a, 0x08, + 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, + 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, + 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, + 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, + 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, + 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, + 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x42, + 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index ec6e5c1..07843e0 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -376,7 +376,7 @@ message CommonNoticeList{ message ExchangeShop { int32 Id = 1; //商品ID string Picture = 2; // 图片 - int32 Type = 3; // 类型 1,话费2,实物 + int32 Type = 3; // 类型 1,话费2,实物 3.娃娃 string Name = 4; // 名称 string Content = 5; //规则说明 //int32 ShopLimit = 6; // 剩余总数 @@ -405,7 +405,8 @@ message ExchangeType{ int32 Price = 1; // 消耗V卡数量 int32 JPrice = 2; //消耗金券数量 int32 Cash = 3; //消耗现金数量 - int32 Id = 4; //行数 + int32 DPrice = 4; //消耗娃娃卡数量 + int32 Id = 5; //行数 } // etcd /game/exchange_shop diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index 22551fe..270eadf 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -845,7 +845,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen } } } - if info == nil || (info.Price == 0 && info.JPrice == 0 && info.Cash == 0) { + if info == nil || (info.Price == 0 && info.JPrice == 0 && info.Cash == 0 && info.DPrice == 0) { return false } @@ -881,6 +881,20 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen } itemInfo = append(itemInfo, item) } + if info.DPrice > 0 { + item := model.ItemInfo{ + ItemId: common.ItemDollCard, + ItemNum: int64(info.JPrice * num), + } + _, _, isF := BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0, common.GainWayItemChangeDoll, + "sys", fmt.Sprintf("兑换娃娃扣除%v", item.ItemId), 0, 0, false) + if !isF { // 扣掉金券 + pack.RetCode = shop.OpResultCode_OPRC_DCoinNotEnough + p.SendToClient(int(shop.SPacketID_PACKET_SC_SHOP_EXCHANGE), pack) + return false + } + itemInfo = append(itemInfo, item) + } task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { pack := &webapi_proto.ASCreateExchangeOrder{ Snid: p.SnId, From a9de61a96ae5fa63415186d8a31bfd63164a068b Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 13 Sep 2024 18:11:05 +0800 Subject: [PATCH 17/46] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/shop/shop.pb.go | 2 +- protocol/shop/shop.proto | 2 +- protocol/webapi/common.pb.go | 2 +- protocol/webapi/common.proto | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protocol/shop/shop.pb.go b/protocol/shop/shop.pb.go index ab1fa63..ccb5888 100644 --- a/protocol/shop/shop.pb.go +++ b/protocol/shop/shop.pb.go @@ -1372,7 +1372,7 @@ type ShopExchangeInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Type int32 `protobuf:"varint,1,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 3.娃娃 + Type int32 `protobuf:"varint,1,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 3.道具 4.娃娃 Picture string `protobuf:"bytes,2,opt,name=Picture,proto3" json:"Picture,omitempty"` // 图片 Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 名称 Rule string `protobuf:"bytes,4,opt,name=Rule,proto3" json:"Rule,omitempty"` //规则说明 diff --git a/protocol/shop/shop.proto b/protocol/shop/shop.proto index b9b7be1..4234413 100644 --- a/protocol/shop/shop.proto +++ b/protocol/shop/shop.proto @@ -168,7 +168,7 @@ message SCShopExchange{ message CSShopExchangeList{ } message ShopExchangeInfo{ - int32 Type = 1; // 类型 1,话费2,实物 3.娃娃 + int32 Type = 1; // 类型 1,话费2,实物 3.道具 4.娃娃 string Picture = 2; // 图片 string Name = 3; // 名称 string Rule = 4;//规则说明 diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index d3fbb62..2a22c2c 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -3291,7 +3291,7 @@ type ExchangeShop struct { Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //商品ID Picture string `protobuf:"bytes,2,opt,name=Picture,proto3" json:"Picture,omitempty"` // 图片 - Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 3.娃娃 + Type int32 `protobuf:"varint,3,opt,name=Type,proto3" json:"Type,omitempty"` // 类型 1,话费2,实物 3.道具 4.娃娃 Name string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"` // 名称 Content string `protobuf:"bytes,5,opt,name=Content,proto3" json:"Content,omitempty"` //规则说明 //int32 ShopLimit = 6; // 剩余总数 diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 07843e0..3bec979 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -376,7 +376,7 @@ message CommonNoticeList{ message ExchangeShop { int32 Id = 1; //商品ID string Picture = 2; // 图片 - int32 Type = 3; // 类型 1,话费2,实物 3.娃娃 + int32 Type = 3; // 类型 1,话费2,实物 3.道具 4.娃娃 string Name = 4; // 名称 string Content = 5; //规则说明 //int32 ShopLimit = 6; // 剩余总数 From f8a55ec7ba41d3e664d3cbd9338471ae79d24ae7 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 13 Sep 2024 18:19:44 +0800 Subject: [PATCH 18/46] =?UTF-8?q?tienlen=E5=BC=80=E5=8F=91=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E6=8E=A7=E7=89=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenepolicy_tienlen.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 8445989..2cbd208 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -981,10 +981,15 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { if rule.TestOpen { sceneEx.SendHandCardTest() } else { - if sceneEx.IsMatchScene() || sceneEx.IsCustom() { - sceneEx.SendHandCard_Match() - } else { + + if len(sceneEx.testPokers) > 1 { sceneEx.SendHandCardOdds() + } else { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { + sceneEx.SendHandCard_Match() + } else { + sceneEx.SendHandCardOdds() + } } } From a314c42d6ce496dbe66720d236e465cebaa5a3a0 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Sat, 14 Sep 2024 15:53:03 +0800 Subject: [PATCH 19/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E8=B0=83?= =?UTF-8?q?=E8=BD=AC=E6=96=B9=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- machine/action/action_server.go | 36 +++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/machine/action/action_server.go b/machine/action/action_server.go index 024cb99..c5120c1 100644 --- a/machine/action/action_server.go +++ b/machine/action/action_server.go @@ -67,7 +67,7 @@ func processConnMessageQueue(queue *ConnMessageQueue) { } } -// 移动 +// 移动 1-前 2-后 3-左 4-右 5-投币 func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data interface{}) error { fmt.Println("SMDollMachinePerateHandler %v", data) msg, ok := data.(*machine.SMDollMachineoPerate) @@ -86,15 +86,6 @@ func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data inte switch msg.Perate { case 1: - //向前移动 - f1 := []func(){ - func() { machinedoll.Backward(conn) }, - } - f2 := []func(){ - func() { machinedoll.BackwardStop(conn) }, - } - Process(conn, f1, f2) - case 2: //向后移动 f1 := []func(){ func() { machinedoll.Forward(conn) }, @@ -103,16 +94,16 @@ func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data inte func() { machinedoll.ForwardStop(conn) }, } Process(conn, f1, f2) - case 3: - //向左移动 + case 2: + //向前移动 f1 := []func(){ - func() { machinedoll.Left(conn) }, + func() { machinedoll.Backward(conn) }, } f2 := []func(){ - func() { machinedoll.LeftStop(conn) }, + func() { machinedoll.BackwardStop(conn) }, } Process(conn, f1, f2) - case 4: + case 3: //向右移动 f1 := []func(){ func() { machinedoll.Right(conn) }, @@ -121,6 +112,16 @@ func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data inte func() { machinedoll.RightStop(conn) }, } Process(conn, f1, f2) + case 4: + //向左移动 + f1 := []func(){ + func() { machinedoll.Left(conn) }, + } + f2 := []func(){ + func() { machinedoll.LeftStop(conn) }, + } + Process(conn, f1, f2) + case 5: //投币 conn := machinedoll.MachineMgr.CreateConn(int(msg.GetId())) @@ -284,6 +285,7 @@ func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interf msg.Data = append(msg.Data, info) } session.Send(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), msg) + machinedoll.MachineMgr.BeatStatus = true fmt.Println("向游戏服务器发送娃娃机连接信息:%v", msg) return nil } @@ -333,6 +335,10 @@ func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interf */ func SMDollMachineHeartBeatHandler(session *netlib.Session, packetId int, data interface{}) error { //fmt.Println("收到返回的心跳包") + machinedoll.MachineMgr.BeatCount-- + if machinedoll.MachineMgr.BeatCount < 0 { + machinedoll.MachineMgr.BeatCount = 0 + } return nil } func init() { From 72edbbdd4b5866ea1b0c496ae0925f1998dddb8f Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Sat, 14 Sep 2024 15:54:38 +0800 Subject: [PATCH 20/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E8=B0=83?= =?UTF-8?q?=E8=BD=AC=E6=96=B9=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- machine/action/action_server.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/machine/action/action_server.go b/machine/action/action_server.go index c5120c1..92d3990 100644 --- a/machine/action/action_server.go +++ b/machine/action/action_server.go @@ -285,7 +285,6 @@ func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interf msg.Data = append(msg.Data, info) } session.Send(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), msg) - machinedoll.MachineMgr.BeatStatus = true fmt.Println("向游戏服务器发送娃娃机连接信息:%v", msg) return nil } @@ -335,10 +334,6 @@ func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interf */ func SMDollMachineHeartBeatHandler(session *netlib.Session, packetId int, data interface{}) error { //fmt.Println("收到返回的心跳包") - machinedoll.MachineMgr.BeatCount-- - if machinedoll.MachineMgr.BeatCount < 0 { - machinedoll.MachineMgr.BeatCount = 0 - } return nil } func init() { From 7668ddcd93e3823819631cb70103aa7b853a6e88 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Sat, 14 Sep 2024 15:55:37 +0800 Subject: [PATCH 21/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E8=B0=83?= =?UTF-8?q?=E8=BD=AC=E6=96=B9=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- machine/machinedoll/machinemgr.go | 42 ------------------------------- 1 file changed, 42 deletions(-) diff --git a/machine/machinedoll/machinemgr.go b/machine/machinedoll/machinemgr.go index b4cbf18..61f7c51 100644 --- a/machine/machinedoll/machinemgr.go +++ b/machine/machinedoll/machinemgr.go @@ -133,48 +133,6 @@ func (this *MachineManager) Update() { pack := &machine.MSDollMachineHeartBeat{} pack.TimeStamp = time.Now().UnixMilli() SendToGameServer(int(machine.DollMachinePacketID_Packet_MSDollMachineHeartBeat), pack) - /* var delConn []*Conn - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - for _, v := range this.ConnMap { - _, err := v.Write([]byte("heartbeat")) - if err != nil { - delConn = append(delConn, v) - v.Close() - fmt.Println("断开连接:%v", v.Addr) - this.UpdateToGameServer(v, 0) - } - } - return nil - }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - for _, v := range delConn { - delete(this.ConnMap, v.Id) - this.DelConnMap[v.Id] = v.Addr - } - - // 重连 - var delIds []*Conn - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - for id, addr := range this.DelConnMap { - conn, err := net.DialTimeout("tcp", addr, 5*time.Second) - if err != nil { - continue - } - fmt.Println("娃娃机重连成功!addr = %v", addr) - delIds = append(delIds, &Conn{ - Id: id, - Conn: conn, - Addr: addr, - }) - } - return nil - }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - for _, v := range delIds { - this.ConnMap[v.Id] = v - delete(this.DelConnMap, v.Id) - this.UpdateToGameServer(v, 1) - } - })).StartByFixExecutor(this.ModuleName()) - })).StartByFixExecutor(this.ModuleName())*/ } func (this *MachineManager) Shutdown() { From f83b22688c6f02a65c5a1594e1a1f942560faf72 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 14 Sep 2024 16:22:06 +0800 Subject: [PATCH 22/46] =?UTF-8?q?=E9=87=8D=E8=BF=9E=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E6=AF=94=E8=B5=9B=E6=B2=A1=E6=9C=89=E5=BC=80=E5=A7=8B=E5=B0=B1?= =?UTF-8?q?=E9=80=80=E8=B5=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/loginstatemgr.go | 13 +- worldsrv/player.go | 1 + worldsrv/playermgr.go | 287 -------------------------------------- 3 files changed, 11 insertions(+), 290 deletions(-) diff --git a/worldsrv/loginstatemgr.go b/worldsrv/loginstatemgr.go index 38c666b..4fb7610 100644 --- a/worldsrv/loginstatemgr.go +++ b/worldsrv/loginstatemgr.go @@ -307,13 +307,20 @@ func (this *LoginStateMgr) Init() { func (this *LoginStateMgr) Update() { // 定时清理已经登出的账号数据 curTs := time.Now().Unix() - for name, s := range this.statesByPlayer { + var delAcc []*AccLoginState + for _, s := range this.statesByPlayer { + if s == nil { + continue + } if len(s.lss) == 0 && curTs-s.lastLogoutTs > int64(model.GameParamData.LoginStateCacheSec) { - if s != nil && s.acc != nil { - this.DeleteAccount(name, s) + if s.acc != nil { + delAcc = append(delAcc, s) } } } + for _, s := range delAcc { + this.DeleteAccount(s.acc.AccountId.Hex(), s) + } } func (this *LoginStateMgr) Shutdown() { diff --git a/worldsrv/player.go b/worldsrv/player.go index 39e4967..2461b9b 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -437,6 +437,7 @@ func (this *Player) OnRehold() { FriendUnreadMgrSington.CheckSendFriendUnreadData(this.Platform, this.SnId) if !this.IsRob { + TournamentMgr.Quit(this.Platform, this.SnId) // 比赛没有开始,退赛 this.SendJackPotInit() PlayerOnlineSington.Check = true diff --git a/worldsrv/playermgr.go b/worldsrv/playermgr.go index 73b463b..bd705fd 100644 --- a/worldsrv/playermgr.go +++ b/worldsrv/playermgr.go @@ -644,293 +644,6 @@ func (this *PlayerMgr) EndPlayerLoading(accid string) int64 { return 0 } -//func PlayerRankGe(p1, p2 *Player, n int) bool { -// switch n { -// case 0: -// if p1.TotalCoin == p2.TotalCoin { -// return p1.SnId < p2.SnId -// } else { -// return p1.TotalCoin > p2.TotalCoin -// } -// case 1: -// if p1.CoinPayTotal == p2.CoinPayTotal { -// return p1.SnId < p2.SnId -// } else { -// return p1.CoinPayTotal > p2.CoinPayTotal -// } -// case 2: -// if p1.CoinExchangeTotal == p2.CoinExchangeTotal { -// return p1.SnId < p2.SnId -// } else { -// return p1.CoinExchangeTotal > p2.CoinExchangeTotal -// } -// case 3: -// a := p1.Coin + p1.SafeBoxCoin - p1.CoinPayTotal -// b := p2.Coin + p2.SafeBoxCoin - p2.CoinPayTotal -// if a == b { -// return p1.SnId < p2.SnId -// } else { -// return a > b -// } -// -// } -// return false -//} - -// func (this *PlayerMgr) GetRank() map[string][]*model.Rank { -// ret := make(map[string][]*model.Rank) -// ls := make(map[string]*list.List) -// -// platforms := PlatformMgrSingleton.Platforms -// for p := range platforms { -// ret[p] = make([]*model.Rank, 0) -// ls[p] = list.New() -// } -// -// for _, player := range this.players { -// if player.IsRob { -// continue -// } -// -// p := player.PlayerData.Platform -// if _, ok := platforms[p]; !ok { -// continue -// } -// -// l := ls[p] -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// if PlayerRankGe(player, np) { -// l.InsertBefore(player, n) -// goto CHECK -// } -// } -// //else { -// // logger.Logger.Warnf("PlayerMgr.GetRank n.Value.(*Player) fail") -// // continue -// //} -// } -// -// l.PushBack(player) -// CHECK: -// if l.Len() > model.MAX_RANK_COUNT { -// l.Remove(l.Back()) -// } -// } -// -// for p := range platforms { -// l := ls[p] -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// ret[p] = append(ret[p], &model.Rank{ -// SnId: np.PlayerData.SnId, -// Name: np.PlayerData.Name, -// Head: np.PlayerData.Head, -// VIP: np.PlayerData.VIP, -// TotalCoin: np.PlayerData.TotalCoin, -// }) -// } -// } -// } -// -// return ret -// } - -//func (this *PlayerMgr) GetAssetRank(platform string) []*model.Rank { -// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT) -// l := list.New() -// -// for _, player := range this.players { -// if player.IsRob { -// continue -// } -// -// if player.PlayerData.Platform != platform { -// continue -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// if PlayerRankGe(player, np, 0) { -// l.InsertBefore(player, n) -// goto CHECK -// } -// } -// } -// -// l.PushBack(player) -// CHECK: -// if l.Len() > model.MAX_RANK_COUNT { -// l.Remove(l.Back()) -// } -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// ret = append(ret, &model.Rank{ -// SnId: np.PlayerData.SnId, -// Name: np.PlayerData.Name, -// Head: np.PlayerData.Head, -// VIP: np.PlayerData.VIP, -// TotalCoin: np.PlayerData.TotalCoin, -// }) -// } -// } -// -// return ret -//} - -//func (this *PlayerMgr) GetRechargeLists(platform string) []*model.Rank { -// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT) -// l := list.New() -// -// for _, player := range this.players { -// if player.IsRob { -// continue -// } -// -// if player.PlayerData.Platform != platform { -// continue -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// if PlayerRankGe(player, np, 1) { -// l.InsertBefore(player, n) -// goto CHECK -// } -// } -// } -// -// l.PushBack(player) -// CHECK: -// if l.Len() > model.MAX_RANK_COUNT { -// l.Remove(l.Back()) -// } -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// ret = append(ret, &model.Rank{ -// SnId: np.PlayerData.SnId, -// Name: np.PlayerData.Name, -// Head: np.PlayerData.Head, -// VIP: np.PlayerData.VIP, -// TotalCoin: np.PlayerData.CoinPayTotal, -// }) -// } -// } -// -// return ret -//} - -//func (this *PlayerMgr) GetExchangeLists(platform string) []*model.Rank { -// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT) -// l := list.New() -// -// for _, player := range this.players { -// if player.IsRob { -// continue -// } -// -// if player.PlayerData.Platform != platform { -// continue -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// if PlayerRankGe(player, np, 2) { -// l.InsertBefore(player, n) -// goto CHECK -// } -// } -// } -// -// l.PushBack(player) -// CHECK: -// if l.Len() > model.MAX_RANK_COUNT { -// l.Remove(l.Back()) -// } -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// ret = append(ret, &model.Rank{ -// SnId: np.PlayerData.SnId, -// Name: np.PlayerData.Name, -// Head: np.PlayerData.Head, -// VIP: np.PlayerData.VIP, -// TotalCoin: np.PlayerData.CoinExchangeTotal, -// }) -// } -// } -// -// return ret -//} - -//func (this *PlayerMgr) GetProfitLists(platform string) []*model.Rank { -// ret := make([]*model.Rank, 0, model.MAX_RANK_COUNT) -// l := list.New() -// -// for _, player := range this.players { -// if player.IsRob { -// continue -// } -// -// if player.PlayerData.Platform != platform { -// continue -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// if PlayerRankGe(player, np, 3) { -// l.InsertBefore(player, n) -// goto CHECK -// } -// } -// } -// -// l.PushBack(player) -// CHECK: -// if l.Len() > model.MAX_RANK_COUNT { -// l.Remove(l.Back()) -// } -// } -// -// for n := l.Front(); n != nil; n = n.Next() { -// if np, ok := n.Value.(*Player); ok { -// ret = append(ret, &model.Rank{ -// SnId: np.PlayerData.SnId, -// Name: np.PlayerData.Name, -// Head: np.PlayerData.Head, -// VIP: np.PlayerData.VIP, -// //TotalCoin: np.PlayerData.ProfitCoin, -// }) -// } -// } -// -// return ret -//} - -//func (this *PlayerMgr) DeletePlayerByPlatform(platform string) { -// var dels []*Player -// for _, p := range this.players { -// if p != nil && p.Platform == platform { -// p.Kickout(common.KickReason_Disconnection) -// dels = append(dels, p) -// } -// } -// -// for _, p := range dels { -// if p != nil { -// p.isDelete = true -// if p.scene == nil { -// this.DelPlayer(p.SnId) -// } -// } -// } -//} - func (this *PlayerMgr) StatsOnline() model.PlayerOLStats { stats := model.PlayerOLStats{ PlatformStats: make(map[string]*model.PlayerStats), From e6105b40b0d31d79c3ca1ae3c574501bbf40c85b Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 14 Sep 2024 17:21:28 +0800 Subject: [PATCH 23/46] =?UTF-8?q?=E9=87=8D=E8=BF=9E=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E6=AF=94=E8=B5=9B=E6=B2=A1=E6=9C=89=E5=BC=80=E5=A7=8B=E5=B0=B1?= =?UTF-8?q?=E9=80=80=E8=B5=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_login.go | 3 ++- worldsrv/tournament.go | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/worldsrv/action_login.go b/worldsrv/action_login.go index bb29260..c12ddcc 100644 --- a/worldsrv/action_login.go +++ b/worldsrv/action_login.go @@ -212,7 +212,8 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf // lss 其它连接 lss := LoginStateMgrSington.LoginFinish(csl.GetUsername(), csl.GetPlatform(), sid, ls.acc, tagkey) player := PlayerMgrSington.GetPlayerBySnId(ls.acc.SnId) - if len(lss) > 0 && (player != nil && (player.scene != nil || player.thrscene != 0)) { + waitMatch, _ := TournamentMgr.IsMatchWaiting(player.Platform, player.SnId) + if len(lss) > 0 && (player != nil && (player.scene != nil || player.thrscene != 0 || waitMatch || TournamentMgr.IsMatching(player.SnId))) { sendSCLogin(login_proto.OpResultCode_OPRC_LoginOtherPlace) sendSCDisconnect(common.KickReason_Logining) return nil diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index ad3eee2..91fd410 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -507,8 +507,17 @@ func (this *Tournament) IsMatchWaiting(platform string, snId int32) (bool, int32 // 未使用机器人 for k, v := range this.signupPlayers[platform] { if v.signup != nil { - _, ok := v.signup[snId] - return ok, k + if _, ok := v.signup[snId]; ok { + return ok, k + } + } + } + + for k, v := range this.matches { + for _, vv := range v { + if _, ok := vv.TmPlayer[snId]; ok { + return true, k + } } } From 6240e08abea4e9b36d7c8b292f0ab2d04a9abd8f Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Sat, 14 Sep 2024 17:43:23 +0800 Subject: [PATCH 24/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E5=AF=B9?= =?UTF-8?q?=E5=B1=80=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenedata_tienlen.go | 1 + model/customlog.go | 1 + 2 files changed, 2 insertions(+) diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index cdcb4f3..e06b45f 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -2130,6 +2130,7 @@ func (this *TienLenSceneData) SaveCustomLog() { StartTs: this.GameStartTime.Unix(), EndTs: time.Now().Unix(), State: state, + Creator: this.GetCreator(), } for snid := range this.BilledList { var items []*model.Item diff --git a/model/customlog.go b/model/customlog.go index 317c469..1b1f66b 100644 --- a/model/customlog.go +++ b/model/customlog.go @@ -28,6 +28,7 @@ type CustomLog struct { CostType int32 // 付费方式 1AA 2房主 Voice int32 // 是否开启语音 1开启 RoomId int32 // 房间id + Creator int32 // 创建者id SnId []PlayerInfo // 所有玩家 List []RoundInfo // 对局记录 StartTs, EndTs int64 // 开始,结束时间 From 9aeb5c3d155e6e9eb3b97f87cbfddd8bd0b31528 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 18 Sep 2024 09:50:06 +0800 Subject: [PATCH 25/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E8=B0=83?= =?UTF-8?q?=E8=BD=AC=E6=96=B9=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/clawdoll/action_clawdoll.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamesrv/clawdoll/action_clawdoll.go b/gamesrv/clawdoll/action_clawdoll.go index 11a4e80..1864924 100644 --- a/gamesrv/clawdoll/action_clawdoll.go +++ b/gamesrv/clawdoll/action_clawdoll.go @@ -82,7 +82,7 @@ func MSDollMachineoCoinResultHandler(session *netlib.Session, packetId int, data sceneEx.playingSnid = p.SnId //发送向前移动指令 - sceneEx.OnPlayerSMPerateOp(p.SnId, int32(sceneEx.machineId), rule.ButtonFront) + sceneEx.OnPlayerSMPerateOp(p.SnId, int32(sceneEx.machineId), rule.ButtonBack) s.ChangeSceneState(rule.ClawDollSceneStateStart) sceneEx.SetPlayingState(int32(rule.ClawDollSceneStateStart)) From 60ce6ed085f0f0be5b892a3e00f7c4bf11648e86 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 09:55:33 +0800 Subject: [PATCH 26/46] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/l_gamedetailed.go | 3 +++ dbproxy/svc/l_gameplayerlistlog.go | 1 + 2 files changed, 4 insertions(+) diff --git a/dbproxy/svc/l_gamedetailed.go b/dbproxy/svc/l_gamedetailed.go index 2d459f8..f03f8bb 100644 --- a/dbproxy/svc/l_gamedetailed.go +++ b/dbproxy/svc/l_gamedetailed.go @@ -30,6 +30,9 @@ func GameDetailedLogsCollection(plt string) *mongo.Collection { c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"-ts", "gamefreeid"}, Background: true, Sparse: true}) c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"-ts", "cycleid"}, Background: true, Sparse: true}) c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"cycleid"}, Background: true, Sparse: true}) + c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"ts", "cycleid"}, Background: true, Sparse: true}) + c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"time", "cycleid"}, Background: true, Sparse: true}) + c_gamedetailed.EnsureIndex(mgo.Index{Key: []string{"-time", "cycleid"}, Background: true, Sparse: true}) } return c_gamedetailed } diff --git a/dbproxy/svc/l_gameplayerlistlog.go b/dbproxy/svc/l_gameplayerlistlog.go index fcb8d74..68b25e3 100644 --- a/dbproxy/svc/l_gameplayerlistlog.go +++ b/dbproxy/svc/l_gameplayerlistlog.go @@ -43,6 +43,7 @@ func GamePlayerListLogsCollection(plt string) *mongo.Collection { c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-ts", "snid", "gamefreeid"}, Background: true, Sparse: true}) c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"-ts", "cycleid"}, Background: true, Sparse: true}) c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"cycleid"}, Background: true, Sparse: true}) + c_gameplayerlistlog.EnsureIndex(mgo.Index{Key: []string{"ts", "cycleid"}, Background: true, Sparse: true}) } return c_gameplayerlistlog } From 97a6d363e7fd8af0cae84f9ef2cf7fdcecc386e5 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 10:58:29 +0800 Subject: [PATCH 27/46] =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E7=8E=A9=E5=AE=B6=E6=98=AF=E5=90=A6=E5=9C=A8=E6=AF=94=E8=B5=9B?= =?UTF-8?q?=E5=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_login.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/worldsrv/action_login.go b/worldsrv/action_login.go index c12ddcc..1f2c66f 100644 --- a/worldsrv/action_login.go +++ b/worldsrv/action_login.go @@ -212,7 +212,10 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf // lss 其它连接 lss := LoginStateMgrSington.LoginFinish(csl.GetUsername(), csl.GetPlatform(), sid, ls.acc, tagkey) player := PlayerMgrSington.GetPlayerBySnId(ls.acc.SnId) - waitMatch, _ := TournamentMgr.IsMatchWaiting(player.Platform, player.SnId) + waitMatch := false + if player != nil { + waitMatch, _ = TournamentMgr.IsMatchWaiting(player.Platform, player.SnId) + } if len(lss) > 0 && (player != nil && (player.scene != nil || player.thrscene != 0 || waitMatch || TournamentMgr.IsMatching(player.SnId))) { sendSCLogin(login_proto.OpResultCode_OPRC_LoginOtherPlace) sendSCDisconnect(common.KickReason_Logining) From d2a64cb8aeb6b5e89853e477e90279a5c23b9bef Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 18 Sep 2024 11:19:14 +0800 Subject: [PATCH 28/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E5=8D=A1=E7=A7=AF?= =?UTF-8?q?=E5=88=8640004?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/constant.go b/common/constant.go index 0f35075..8be199c 100644 --- a/common/constant.go +++ b/common/constant.go @@ -566,7 +566,7 @@ const ( ItemIDVCard = 30001 // v卡 ItemIDJCard = 30002 // 金券 ItemDiamondScore = 100012 //钻石积分 - ItemDollCard = 74004 // 娃娃卡 + ItemDollCard = 40004 // 娃娃卡积分 ) func ToItemId(id int32) int32 { From e0d414e6af3d79f9b713b2f75e1acd70ae32299a Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Wed, 18 Sep 2024 11:28:07 +0800 Subject: [PATCH 29/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E5=90=8E=E5=8F=B0proto?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/webapi/common.pb.go | 132 +++++++++++++++++++++-------------- protocol/webapi/common.proto | 3 + 2 files changed, 84 insertions(+), 51 deletions(-) diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 2a22c2c..9a9b200 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -8275,6 +8275,9 @@ type MachineInfo struct { AppId int64 `protobuf:"varint,2,opt,name=AppId,proto3" json:"AppId,omitempty"` ServerSecret string `protobuf:"bytes,3,opt,name=ServerSecret,proto3" json:"ServerSecret,omitempty"` StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` + CostItemNum int32 `protobuf:"varint,5,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 + ItemId int32 `protobuf:"varint,6,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具Id + ItemNum int32 `protobuf:"varint,7,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 } func (x *MachineInfo) Reset() { @@ -8337,6 +8340,27 @@ func (x *MachineInfo) GetStreamId() string { return "" } +func (x *MachineInfo) GetCostItemNum() int32 { + if x != nil { + return x.CostItemNum + } + return 0 +} + +func (x *MachineInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *MachineInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + // etcd /game/match_audience type MatchAudience struct { state protoimpl.MessageState @@ -10019,7 +10043,7 @@ var file_common_proto_rawDesc = []byte{ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x0b, 0x4d, 0x61, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd5, 0x01, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, @@ -10027,56 +10051,62 @@ var file_common_proto_rawDesc = []byte{ 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, - 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4c, - 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, 0x0a, 0x08, - 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, - 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, - 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x42, - 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, + 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, + 0x6d, 0x22, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, + 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, + 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, + 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x55, 0x52, 0x49, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, + 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 3bec979..85c19f9 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -912,6 +912,9 @@ message MachineInfo{ int64 AppId = 2; string ServerSecret = 3; string StreamId = 4; + int32 CostItemNum = 5; //消耗道具数量 + int32 ItemId = 6; //获得道具Id + int32 ItemNum = 7; //获得道具数量 } // etcd /game/match_audience message MatchAudience { From 1b2a9c30e7b133c66241aa1af28da5df4f596e1a Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 14:59:17 +0800 Subject: [PATCH 30/46] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=88=BF=E5=8D=A1?= =?UTF-8?q?=E6=88=BF=E7=A6=BB=E5=BC=80=E5=92=8C=E5=BC=80=E5=A7=8B=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenedata_tienlen.go | 2 +- gamesrv/tienlen/scenepolicy_tienlen.go | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index e06b45f..d01ee18 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -163,7 +163,7 @@ func (this *TienLenSceneData) CanStart() bool { } if this.IsCustom() { - return this.IsAllReady() && this.GetPlayerCnt() >= this.GetPlayerNum() + return (this.IsAllReady() || this.GetNumOfGames() > 0) && this.GetPlayerCnt() >= this.GetPlayerNum() } // 房间人数>=2开始,并且有真人或者是预创建房间,并且有房主 diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 2cbd208..efa7157 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -603,6 +603,10 @@ func (this *SceneBaseStateTienLen) OnTick(s *base.Scene) { s.RandRobotCnt() s.SetTimerRandomRobot(s.GetRobotTime()) } + // 房卡房长时间没人解散房间 + if s.IsCustom() && s.GetRealPlayerCnt() == 0 && this.GetTimeout(s) > 5 { + s.Destroy(true) + } } // 发送玩家操作情况 @@ -719,7 +723,7 @@ func (this *SceneWaitPlayerStateTienLen) CanChangeTo(s base.SceneState) bool { // 当前状态能否换桌 func (this *SceneWaitPlayerStateTienLen) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { - if s.IsMatchScene() { + if s.IsMatchScene() || (s.IsCustom() && s.GetNumOfGames() > 0) { return false } return true @@ -810,7 +814,7 @@ func (this *SceneWaitStartStateTienLen) CanChangeTo(s base.SceneState) bool { // 当前状态能否换桌 func (this *SceneWaitStartStateTienLen) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { - if s.IsMatchScene() { + if s.IsMatchScene() || (s.IsCustom() && s.GetNumOfGames() > 0) { return false } return true From 02365888a1418bf88b0de53da33d7e9f4fd645a2 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 15:30:43 +0800 Subject: [PATCH 31/46] update excel --- data/DB_GameItem.dat | Bin 10677 -> 11119 bytes data/DB_GameItem.json | 383 ++++++++++++++++++++++++++++++--------- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 5299 -> 5439 bytes data/DB_Task.json | 54 +++++- xlsx/DB_GameItem.xlsx | Bin 26139 -> 26662 bytes xlsx/DB_Task.xlsx | Bin 22463 -> 22685 bytes 7 files changed, 345 insertions(+), 92 deletions(-) diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 3c06c168cb3acf75623f5e86e978e3564a9e440a..0c48cfb9c6905a0be7b02df4d4b7ff5b4e321dfd 100644 GIT binary patch literal 11119 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 diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 1c84607..fef9b6c 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -5,7 +5,8 @@ "Name": "斗鸡碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -39,7 +40,8 @@ "Name": "技能碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -73,7 +75,8 @@ "Name": "酷帕碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -107,7 +110,8 @@ "Name": "蝶女碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -141,7 +145,8 @@ "Name": "魔术师碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -175,7 +180,8 @@ "Name": "V卡", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -209,7 +215,8 @@ "Name": "金券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -242,6 +249,7 @@ "Id": 30003, "Name": "1元话费兑换码", "ShowLocation": [ + 0, 0, 0 ], @@ -275,6 +283,7 @@ "Id": 30004, "Name": "2元话费兑换码", "ShowLocation": [ + 0, 0, 0 ], @@ -308,6 +317,7 @@ "Id": 30005, "Name": "5元话费兑换码", "ShowLocation": [ + 0, 0, 0 ], @@ -341,6 +351,7 @@ "Id": 30006, "Name": "10元话费兑换码", "ShowLocation": [ + 0, 0, 0 ], @@ -374,6 +385,7 @@ "Id": 30007, "Name": "手机兑换券", "ShowLocation": [ + 0, 0, 0 ], @@ -407,7 +419,8 @@ "Name": "冠军赛门票", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -440,7 +453,8 @@ "Name": "房卡", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -473,7 +487,8 @@ "Name": "娃娃卡", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -501,12 +516,48 @@ "Location": "0", "Describe": "作用:用于抓娃娃机抓娃娃;\n产出途径:商城购买\n" }, + { + "Id": 40004, + "Name": "娃娃积分", + "ShowLocation": [ + 0, + 0, + 1 + ], + "Classify": [ + 1, + 0, + 0 + ], + "Type": 25, + "Effect0": [ + 0, + 0, + 0, + 1, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 1, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "用途:可在兑换商城中使用,兑换您想要的物品。" + }, { "Id": 50001, "Name": "碎片礼盒", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -538,7 +589,8 @@ "Name": "集卡礼盒", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -570,7 +622,8 @@ "Name": "M卡片红色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -604,7 +657,8 @@ "Name": "A卡片红色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -638,7 +692,8 @@ "Name": "N卡片红色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -672,7 +727,8 @@ "Name": "G卡片红色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -706,7 +762,8 @@ "Name": "O卡片红色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -740,7 +797,8 @@ "Name": "G卡片黄色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -774,7 +832,8 @@ "Name": "A卡片黄色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -808,7 +867,8 @@ "Name": "M卡片黄色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -842,7 +902,8 @@ "Name": "E卡片黄色", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -876,7 +937,8 @@ "Name": "芒果卡片", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -910,7 +972,8 @@ "Name": "龙币", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -944,7 +1007,8 @@ "Name": "tienlen记牌器(1小时)", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -976,7 +1040,8 @@ "Name": "tienlen记牌器(1天)", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1008,7 +1073,8 @@ "Name": "tienlen记牌器(3天)", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1040,7 +1106,8 @@ "Name": "tienlen记牌器(7天)", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1071,6 +1138,7 @@ "Id": 100001, "Name": "金币", "ShowLocation": [ + 0, 0, 0 ], @@ -1102,6 +1170,7 @@ "Id": 100002, "Name": "钻石", "ShowLocation": [ + 0, 0, 0 ], @@ -1133,6 +1202,7 @@ "Id": 100003, "Name": "金币池", "ShowLocation": [ + 0, 0, 0 ], @@ -1164,6 +1234,7 @@ "Id": 100004, "Name": "活跃积分", "ShowLocation": [ + 0, 0, 0 ], @@ -1195,6 +1266,7 @@ "Id": 100005, "Name": "VIP经验", "ShowLocation": [ + 0, 0, 0 ], @@ -1226,6 +1298,7 @@ "Id": 100006, "Name": "换手机积分", "ShowLocation": [ + 0, 0, 0 ], @@ -1257,6 +1330,7 @@ "Id": 100007, "Name": "点赞", "ShowLocation": [ + 0, 0, 0 ], @@ -1289,6 +1363,7 @@ "Id": 100008, "Name": "咖啡", "ShowLocation": [ + 0, 0, 0 ], @@ -1321,6 +1396,7 @@ "Id": 100009, "Name": "水桶", "ShowLocation": [ + 0, 0, 0 ], @@ -1353,6 +1429,7 @@ "Id": 100010, "Name": "拖鞋", "ShowLocation": [ + 0, 0, 0 ], @@ -1385,6 +1462,7 @@ "Id": 100011, "Name": "赛季积分", "ShowLocation": [ + 0, 0, 0 ], @@ -1416,6 +1494,7 @@ "Id": 100012, "Name": "钻石积分", "ShowLocation": [ + 0, 0, 0 ], @@ -1447,6 +1526,7 @@ "Id": 100135, "Name": "圣耀裁决", "ShowLocation": [ + 0, 0, 0 ], @@ -1478,6 +1558,7 @@ "Id": 100136, "Name": "紫电蝠王", "ShowLocation": [ + 0, 0, 0 ], @@ -1509,6 +1590,7 @@ "Id": 100137, "Name": "曜世冰雨", "ShowLocation": [ + 0, 0, 0 ], @@ -1540,6 +1622,7 @@ "Id": 100174, "Name": "虚空之翼", "ShowLocation": [ + 0, 0, 0 ], @@ -1571,6 +1654,7 @@ "Id": 100181, "Name": "横扫乾坤", "ShowLocation": [ + 0, 0, 0 ], @@ -1602,6 +1686,7 @@ "Id": 100182, "Name": "雷动九天", "ShowLocation": [ + 0, 0, 0 ], @@ -1634,7 +1719,8 @@ "Name": "电饭煲", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1667,7 +1753,8 @@ "Name": "热水壶", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1700,7 +1787,8 @@ "Name": "迷你小风扇", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1733,7 +1821,8 @@ "Name": "厨房炊具套装", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1766,7 +1855,8 @@ "Name": "睡衣", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1799,7 +1889,8 @@ "Name": "洗衣液", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1832,7 +1923,8 @@ "Name": "水杯", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1865,7 +1957,8 @@ "Name": "咖啡杯", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1898,7 +1991,8 @@ "Name": "哈奴曼啤酒", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1931,7 +2025,8 @@ "Name": "箱装纯净水", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1964,7 +2059,8 @@ "Name": "果汁箱装", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -1997,7 +2093,8 @@ "Name": "可口可乐箱装", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2030,7 +2127,8 @@ "Name": "护肤品套装", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2063,7 +2161,8 @@ "Name": "洗发水", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2096,7 +2195,8 @@ "Name": "电动牙刷", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2129,7 +2229,8 @@ "Name": "香水", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2162,7 +2263,8 @@ "Name": "按摩带", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2195,7 +2297,8 @@ "Name": "护发素", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2228,7 +2331,8 @@ "Name": "瑜伽垫", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2261,7 +2365,8 @@ "Name": "跳绳", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2294,7 +2399,8 @@ "Name": "篮球", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2327,7 +2433,8 @@ "Name": "足球", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2360,7 +2467,8 @@ "Name": "健身手环", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2393,7 +2501,8 @@ "Name": "山地车", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2426,7 +2535,8 @@ "Name": "Tecno手机", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2459,7 +2569,8 @@ "Name": "平板电脑", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2492,7 +2603,8 @@ "Name": "耳机", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2525,7 +2637,8 @@ "Name": "智能手表", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2558,7 +2671,8 @@ "Name": "便携式音箱", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2591,7 +2705,8 @@ "Name": "红米手机", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2624,7 +2739,8 @@ "Name": "超市购物卡", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2657,7 +2773,8 @@ "Name": "餐厅用餐券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2690,7 +2807,8 @@ "Name": "电影票", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2723,7 +2841,8 @@ "Name": "在线购物优惠券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2756,7 +2875,8 @@ "Name": "按摩券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2789,7 +2909,8 @@ "Name": "本地景点门票", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2822,7 +2943,8 @@ "Name": "宾馆票", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2855,7 +2977,8 @@ "Name": "游乐场门票", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2888,7 +3011,8 @@ "Name": "大米", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2921,7 +3045,8 @@ "Name": "食用油", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2954,7 +3079,8 @@ "Name": "盐", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -2987,7 +3113,8 @@ "Name": "酱油", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -3020,7 +3147,8 @@ "Name": "鸡蛋", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -3053,7 +3181,8 @@ "Name": "游戏点卡", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 0, @@ -3086,7 +3215,8 @@ "Name": "1元话费直兑券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3118,7 +3248,8 @@ "Name": "2元话费直兑券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3150,7 +3281,8 @@ "Name": "5元话费直兑券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3182,7 +3314,8 @@ "Name": "10元话费直兑券", "ShowLocation": [ 1, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3214,7 +3347,8 @@ "Name": "财神送福", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3249,7 +3383,8 @@ "Name": "活力-黄 碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3283,7 +3418,8 @@ "Name": "财神送福碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3317,7 +3453,8 @@ "Name": "活力-粉 碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3351,7 +3488,8 @@ "Name": "活力-青 碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3385,7 +3523,8 @@ "Name": "摇滚小子碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3419,7 +3558,8 @@ "Name": "潜水员碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3453,7 +3593,8 @@ "Name": "冲浪健将碎片", "ShowLocation": [ 0, - 1 + 1, + 0 ], "Classify": [ 1, @@ -3481,6 +3622,82 @@ "CompositionMax": 9999, "Location": "0", "Describe": "作用:解锁角色皮肤-财神送福,可在皮肤功能界面使用" + }, + { + "Id": 80001, + "Name": "皮卡丘娃娃", + "ShowLocation": [ + 0, + 0, + 1 + ], + "Classify": [ + 1, + 0, + 0 + ], + "Type": 26, + "Effect0": [ + 1, + 0, + 0, + 1, + 1 + ], + "Effect": [ + 1, + 0, + 0, + 1, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可联系客服兑换实物奖励", + "Gain": { + "40004": 30 + } + }, + { + "Id": 80002, + "Name": "闪电猫咪", + "ShowLocation": [ + 0, + 0, + 1 + ], + "Classify": [ + 1, + 0, + 0 + ], + "Type": 26, + "Effect0": [ + 1, + 0, + 0, + 1, + 1 + ], + "Effect": [ + 1, + 0, + 0, + 1, + 1 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可联系客服兑换实物奖励", + "Gain": { + "40004": 30 + } } ] } \ No newline at end of file diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index df991383b8fe9fa879d3427529b95853ef562c82..79f081e81bd0f5794df730d6b0a9bc66370b2b9e 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwev+k;|0&>diXKpJL0R`ZoO!R}~S`-p`rmV*WC5OfVNg9urO?(jQchqH4m N0($fdGZzDGApl~^JT(9S literal 384 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 H`lS3nZVk9v delta 20762 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 i!UcjiQUO3mZR-+IU{L~g3;zc(XR{js diff --git a/xlsx/DB_Task.xlsx b/xlsx/DB_Task.xlsx index 85ff4e26a995e873db41a48181e91a98b20be81f..94e4037bbf59142018f942c9014f010c4ff5a99e 100644 GIT binary patch delta 15955 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 delta 15718 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 MU36G@^*^ZoKks&|rvLx| From aa92a9630c4635d0faeea8d69563a48938a0105e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 16:53:10 +0800 Subject: [PATCH 32/46] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E9=A6=86=E6=88=BF?= =?UTF-8?q?=E4=B8=BB=E4=B8=BA=E5=88=9B=E5=BB=BA=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/tienlen/scenepolicy_tienlen.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index efa7157..cc47b8e 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -446,6 +446,9 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen if s.GetCustom().GetPassword() != "" { pack.NeedPassword = 1 } + if s.IsCustom() { + pack.MasterSnid = s.GetCreator() + } pack.IsMatch = int32(0) // 0.普通场 1.锦标赛 2.冠军赛 3.vip专属 if s.IsMatchScene() { From 03e0cdb6d7569b5b81f555c0265e2c19d199efc0 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 18:02:40 +0800 Subject: [PATCH 33/46] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/transact/trascate_gamesrv.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamesrv/transact/trascate_gamesrv.go b/gamesrv/transact/trascate_gamesrv.go index a56fc1a..b4f2c59 100644 --- a/gamesrv/transact/trascate_gamesrv.go +++ b/gamesrv/transact/trascate_gamesrv.go @@ -114,7 +114,7 @@ func init() { if scene == nil || scene.ExtraData == nil { pack.Tag = webapiproto.TagCode_NotFound pack.Msg = "房间没找到" - return common.ResponseTag_Ok, pack + return common.ResponseTag_TransactYield, pack } switch d := scene.ExtraData.(type) { From e36c6608c305d17865326256c36353fd76d55a2e Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Wed, 18 Sep 2024 18:22:46 +0800 Subject: [PATCH 34/46] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/transact/trascate_gamesrv.go | 8 ++++---- mgrsrv/api/webapi_gamesrv.go | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/gamesrv/transact/trascate_gamesrv.go b/gamesrv/transact/trascate_gamesrv.go index b4f2c59..ed74722 100644 --- a/gamesrv/transact/trascate_gamesrv.go +++ b/gamesrv/transact/trascate_gamesrv.go @@ -106,7 +106,7 @@ func init() { if err != nil { pack.Tag = webapiproto.TagCode_FAILED pack.Msg = "数据序列化失败" - return common.ResponseTag_Ok, pack + return common.ResponseTag_ParamError, pack } pack.Tag = webapiproto.TagCode_SUCCESS @@ -114,7 +114,7 @@ func init() { if scene == nil || scene.ExtraData == nil { pack.Tag = webapiproto.TagCode_NotFound pack.Msg = "房间没找到" - return common.ResponseTag_TransactYield, pack + return common.ResponseTag_NoFindRoom, pack } switch d := scene.ExtraData.(type) { @@ -140,11 +140,11 @@ func init() { } pack.List = append(pack.List, item) } - + return common.ResponseTag_Ok, pack default: pack.Tag = webapiproto.TagCode_FAILED pack.Msg = "未实现" } - return common.ResponseTag_Ok, pack + return common.ResponseTag_NoData, pack })) } diff --git a/mgrsrv/api/webapi_gamesrv.go b/mgrsrv/api/webapi_gamesrv.go index e7eea62..a38b156 100644 --- a/mgrsrv/api/webapi_gamesrv.go +++ b/mgrsrv/api/webapi_gamesrv.go @@ -173,8 +173,10 @@ func init() { }), OnChildRespWrapper: transact.OnChildRespWrapper(func(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, ud interface{}) transact.TransExeResult { logger.Logger.Tracef("GameSrvApi OnChildRespWrapper %v:%v", hChild, ud) - tNode.TransEnv.SetField(GAMESRVAPI_TRANSACTE_RESPONSE, ud) - return transact.TransExeResult(retCode) + if retCode == common.ResponseTag_Ok { + tNode.TransEnv.SetField(GAMESRVAPI_TRANSACTE_RESPONSE, ud) + } + return transact.TransExeResult_Success }), }) // 对局详情 From 70d051d9386885d5723fb787b7ccd568f899ea92 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 19 Sep 2024 09:21:12 +0800 Subject: [PATCH 35/46] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=96=B0=E9=81=93=E5=85=B7=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_GameItem.dat | Bin 11119 -> 18735 bytes data/DB_GameItem.json | 2620 +++++++++++++++++++++++++- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 5439 -> 5439 bytes gamesrv/transact/trascate_gamesrv.go | 6 +- mgrsrv/api/webapi_gamesrv.go | 18 +- xlsx/DB_GameItem.xlsx | Bin 26662 -> 35314 bytes 7 files changed, 2633 insertions(+), 11 deletions(-) diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 0c48cfb9c6905a0be7b02df4d4b7ff5b4e321dfd..ea158f6d0656c1eec9d9e1462cec120438c3a4e7 100644 GIT binary patch delta 2526 zcmY*bX;WM06`o8pzSlQ)sT~_=P3qU!ZIie#_X-Q+j~E0B2t*`oVz+5W24btWbX6HL zaX*1&0kYUHV2IcR!iG2o$x5({4NQMQv$ScGHffvk-ldzn@7p=AWHFuL3+H*>vpi?H zdUSea_=$Mck^NuizxUyjdp}!OURO@kvHM#ao5s|f54A{~?fegA4su7dci=j+GQ5q>w{T=KTnuy~e__IyOO^ zZEo**A`xvlfp`HYxcCnNf0|Ct=!q^Z)J^LA#SLwy!=l9Cnn-+^omc1>P(HmobjBJPNJFR|Vz0%@`Ec`~~o*wB2Ww$nFG4}i_vJZ2@Mg9|DKXX#{ zdR%SpW>V+&x``fGrIG7&c#Mull_w6?Ft0yFuXODmUFf0l5m3okxT6K{O2uWiq6$Yv zO@mZsu0*dTobVd|GhjdOw4bW4Y_!;|q`ac4$V|*c4=3nKN?Te}<0EwA4XuC0nD19Z z-T3aSobYY_=kV?@ReCh#=GKEzx{##vw`q6Cm<|)?CAWt($d}uiUH%q)kjDw<_)p=% zzL(rC+2bZBUEUUQf+(E@bu8syV9I*mh&nx`t=-qwR`k$aI?$_MU823gXSKT_`2RWd z^eiWM_$^=`H0Gyi&yxD~O?~s;*7|I^Ok*TS#Ny+$kL4+HLOV}^{1r=mg_YEoH=c4> zY&HvVTJ2312dTE$h^_pzr5;*I%#v7*5x&R?&AbYa_P^k}AbVShR7!k)nRr~Unarh( zlEVp&yatpVv@5PgS%+XNUgmYM<){;DdSE?0oY)h#F9smH)c!d=Iq3yLYOHv6w{1PX8i+==+0xb}Oa{;=mlWQ5CwWhI16w91!%l6Ez7L;Y+wHXz;5H_gcg_~p4M00?Q92_ zW`6`I2PR#eo>T{eYPc6QV`cm)69ZGeGmJ?x!Tt>9U0UE)dOL{8h6sc|%l`!tRCsz7 zmQ9~iW)E9gjK8uNLrZFC9F`U8Qf3Nk*pt8ElLm*S(oT%w1npH`%(p(z2{Qk801lao z%`i$BKYa-1SBX=;=<;5H2`Z9AvxK3KaDtov2ha~NVhrT{v?IK&uvjLVN|DHv_$Lr| zpL8`hUueI)-AWj`7XDuV<${m&q7kdB&E2%phz#n2g3=s#fC zsRd)OqYyP~{x6!1#6vi7dXQaaR%^#cID_FaI9YUgl_s!On4u=V698zYqIKRz@!1u; z3bq^?d!5GK%3SO86=at@0AN0i4`_*G>G3AIdE4li`9BuZ4g&G%^r_LVreKHh+=~)Zml3*w}P0sTSFuiEbcZX?T4q{BkoJ zFD6kBAUoBeYcwzbkFpYl&`dX$)#O}8xi4_SH~H&e-a|tHBl>{$bP(SK_oYj2U$%K+ zfOlVVooheWPN>oie+V7K=Jf)Ut9K-^()2~I^}8;%ddcZy$oV`ce1q=;&gVcgRDU22 z-(M4{s7LfDC;0e&Kntto2Dmj=i^DFNj0Zz-_OwtBdGxS{F5J-PgO47vF0)(*fWIf* z1T}OUnhK#UW^~7{#~{FY#>^6EwtYjKF3%O0_dJqVBZq*LZ;UK!k#TMPhI+lD+9Z__ zNTJ1j{tB{KZNtFIP2%Mv;G+1;lAXRmr=R$JTDl_@PW0b1ZNv1J+o z@R0WAh`tO-z6m3)UmK!*{aSRCG@hy=Rpn-}w7v>`vB4Py`hm1gX^+N4OrKuN{wP3V zA>OMoAQm`f*vBT^M^SvK&Mah-NQYZ@c%tmIq(xG|)C0Y6G0EdwbcTN&m`~CBNp)(I woH;Iv+2SGqJT8uXDfHnK9T=ir_qIQ<$;u-ackIymmuTmzQgGC%@JG-84|vf=!2kdN delta 28 jcmZ2KiSd2d1~-+>Y)+YMY)@A-1JUF=9>J4Oc%%aWxo!;IUweP#gXiT>4)iq*$*=hyE{0+?r2#1h=nVbg9Ypmn8A0T4nT1@&_bAj=oZ2( UKnVaPc8*0rkA7k1VxTPq0BA})H2?qr literal 384 zcmd-w<6snElw#w!+{O&1uR!UmQ2H8_z7C?5I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwev+k;|0&>diXKpJL0R`ZoO!R}~S`-p`rmV*WC5OfVNg9urO?(jQchqH4m N0($fdGZzDGApl~^JT(9S diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 1e4060f420f1f826bef96e879846c3e58374b993..5c3030bf91b484951748e1222cf51ebdd8b77bcb 100644 GIT binary patch delta 232 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 Date: Thu, 19 Sep 2024 09:37:52 +0800 Subject: [PATCH 36/46] no message --- mgrsrv/api/webapi_gamesrv.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mgrsrv/api/webapi_gamesrv.go b/mgrsrv/api/webapi_gamesrv.go index 477dd19..7b2d257 100644 --- a/mgrsrv/api/webapi_gamesrv.go +++ b/mgrsrv/api/webapi_gamesrv.go @@ -20,6 +20,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/proto" "mongo.games.com/game/protocol/webapi" ) @@ -176,9 +177,14 @@ func init() { }), OnChildRespWrapper: transact.OnChildRespWrapper(func(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, ud interface{}) transact.TransExeResult { logger.Logger.Tracef("GameSrvApi OnChildRespWrapper %v:%v", hChild, ud) - msg, ok := ud.(*webapi.SARoomInfo) - if ok && msg.GetTag() == webapi.TagCode_SUCCESS { - tNode.TransEnv.SetField(GAMESRVAPI_TRANSACTE_RESPONSE, ud) + if v, ok := ud.([]byte); ok { + var msg webapi.SARoomInfo + err := proto.Unmarshal(v, &msg) + if err == nil && msg.GetTag() == webapi.TagCode_SUCCESS { + tNode.TransEnv.SetField(GAMESRVAPI_TRANSACTE_RESPONSE, ud) + } else { + logger.Logger.Errorf("GameSrvApi OnChildRespWrapper unmarshal err %v", err) + } } return transact.TransExeResult(retCode) }), From e479b2e6fdf01a7e359267fc99b0038f1374a703 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 19 Sep 2024 09:55:02 +0800 Subject: [PATCH 37/46] no message --- mgrsrv/api/webapi_gamesrv.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mgrsrv/api/webapi_gamesrv.go b/mgrsrv/api/webapi_gamesrv.go index 7b2d257..499fcca 100644 --- a/mgrsrv/api/webapi_gamesrv.go +++ b/mgrsrv/api/webapi_gamesrv.go @@ -179,7 +179,7 @@ func init() { logger.Logger.Tracef("GameSrvApi OnChildRespWrapper %v:%v", hChild, ud) if v, ok := ud.([]byte); ok { var msg webapi.SARoomInfo - err := proto.Unmarshal(v, &msg) + err := proto.Unmarshal(netlib.SkipHeaderGetRaw(v), &msg) if err == nil && msg.GetTag() == webapi.TagCode_SUCCESS { tNode.TransEnv.SetField(GAMESRVAPI_TRANSACTE_RESPONSE, ud) } else { From 2206eba159c490ca687361b2f04a54298494fddf Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 19 Sep 2024 10:03:57 +0800 Subject: [PATCH 38/46] =?UTF-8?q?=E6=88=BF=E9=97=B4=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=88=BF=E9=97=B4=E6=9C=80=E5=A4=A7=E4=BA=BA?= =?UTF-8?q?=E6=95=B0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mgrsrv/api/webapi_gamesrv.go | 2 +- protocol/webapi/common.pb.go | 1902 +++++++++++++++++----------------- protocol/webapi/common.proto | 1 + worldsrv/scenemgr.go | 1 + 4 files changed, 959 insertions(+), 947 deletions(-) diff --git a/mgrsrv/api/webapi_gamesrv.go b/mgrsrv/api/webapi_gamesrv.go index 499fcca..b2c5e78 100644 --- a/mgrsrv/api/webapi_gamesrv.go +++ b/mgrsrv/api/webapi_gamesrv.go @@ -182,7 +182,7 @@ func init() { err := proto.Unmarshal(netlib.SkipHeaderGetRaw(v), &msg) if err == nil && msg.GetTag() == webapi.TagCode_SUCCESS { tNode.TransEnv.SetField(GAMESRVAPI_TRANSACTE_RESPONSE, ud) - } else { + } else if err != nil { logger.Logger.Errorf("GameSrvApi OnChildRespWrapper unmarshal err %v", err) } } diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 9a9b200..8ea06fd 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -1928,6 +1928,7 @@ type RoomInfo struct { Password string `protobuf:"bytes,22,opt,name=Password,proto3" json:"Password,omitempty"` // 密码 CostType int32 `protobuf:"varint,23,opt,name=CostType,proto3" json:"CostType,omitempty"` // 付费方式 1房主 2AA Voice int32 `protobuf:"varint,24,opt,name=Voice,proto3" json:"Voice,omitempty"` // 语音开关 1开启 + PlayerNum int32 `protobuf:"varint,25,opt,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` // 房间最大人数 } func (x *RoomInfo) Reset() { @@ -2130,6 +2131,13 @@ func (x *RoomInfo) GetVoice() int32 { return 0 } +func (x *RoomInfo) GetPlayerNum() int32 { + if x != nil { + return x.PlayerNum + } + return 0 +} + type PlayerSingleAdjust struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -9104,7 +9112,7 @@ var file_common_proto_rawDesc = []byte{ 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0xa6, 0x05, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, + 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0xc4, 0x05, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, @@ -9146,967 +9154,969 @@ var file_common_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, - 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xb4, - 0x04, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, - 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x42, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x65, 0x74, - 0x4d, 0x61, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x65, 0x74, 0x4d, 0x61, - 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x6f, 0x73, 0x65, 0x4d, - 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x4c, 0x6f, 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6b, 0x65, - 0x72, 0x57, 0x69, 0x6e, 0x4d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, - 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, - 0x61, 0x72, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x61, - 0x72, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x78, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x78, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x57, - 0x69, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x69, - 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x72, 0x76, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x72, 0x76, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x72, - 0x76, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x72, 0x76, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x62, 0x6f, - 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x62, 0x6f, - 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x44, 0x61, 0x74, 0x61, 0x22, 0xfd, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, - 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, - 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x49, - 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, - 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, - 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, - 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, - 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, - 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, - 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4e, - 0x6f, 0x76, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x4e, 0x6f, - 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0f, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x72, 0x63, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x72, 0x63, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, - 0x73, 0x74, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x65, - 0x73, 0x74, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x69, - 0x66, 0x74, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x47, 0x69, 0x66, 0x74, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x69, 0x66, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, 0x69, 0x66, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xf5, 0x02, 0x0a, - 0x0d, 0x48, 0x6f, 0x72, 0x73, 0x65, 0x52, 0x61, 0x63, 0x65, 0x4c, 0x61, 0x6d, 0x70, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x6f, - 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x46, 0x6f, 0x6f, 0x74, - 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x6e, - 0x64, 0x53, 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x74, 0x61, 0x6e, - 0x64, 0x53, 0x65, 0x63, 0x22, 0x39, 0x0a, 0x0d, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x22, - 0xe5, 0x02, 0x0a, 0x0c, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, - 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4f, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x6f, 0x73, 0x4f, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x49, 0x6f, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, - 0x44, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x6e, 0x52, 0x6f, 0x6f, - 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x54, 0x6f, 0x64, 0x61, - 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x53, 0x65, - 0x76, 0x65, 0x6e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x53, 0x65, 0x76, 0x65, - 0x6e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4f, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x52, 0x09, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, - 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, - 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, - 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, - 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x55, 0x72, 0x6c, 0x22, 0x58, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x9b, - 0x04, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x2c, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x56, 0x69, 0x70, - 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x4e, - 0x6f, 0x74, 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x44, 0x61, - 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x56, 0x69, 0x70, - 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, - 0x0f, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, - 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, - 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x54, 0x65, 0x6c, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x45, 0x0a, 0x0d, - 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x55, 0x72, 0x6c, 0x22, 0x78, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x84, 0x01, - 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, - 0x53, 0x68, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, - 0x6f, 0x77, 0x22, 0x83, 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, - 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, - 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, - 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x18, 0x0e, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x18, 0x11, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x12, 0x31, 0x0a, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, - 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x38, - 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x50, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, - 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50, 0x0a, 0x08, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, - 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, - 0xb1, 0x07, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x12, - 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, - 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x2c, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x53, 0x69, 0x67, 0x6e, - 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, - 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, - 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, - 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x0d, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, - 0x65, 0x65, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, - 0x53, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, - 0x64, 0x48, 0x4d, 0x53, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x10, 0x20, - 0x03, 0x28, 0x03, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, - 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, - 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, - 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, - 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, - 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, - 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, - 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x41, - 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x1b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x22, 0x5a, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, - 0x5b, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x0d, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x64, 0x0a, 0x0b, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x57, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, - 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x22, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x55, - 0x70, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x55, - 0x70, 0x44, 0x61, 0x79, 0x12, 0x31, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, - 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x55, 0x70, - 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, - 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, - 0x6d, 0x22, 0xc9, 0x02, 0x0a, 0x10, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, - 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, - 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, - 0x65, 0x12, 0x36, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, - 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, - 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x41, 0x64, 0x64, - 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, - 0x74, 0x65, 0x32, 0x12, 0x44, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, - 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, - 0x74, 0x65, 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x41, 0x64, 0x64, - 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, - 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x41, - 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, - 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0xb4, 0x04, 0x0a, + 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, + 0x75, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xdb, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x69, 0x6e, - 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, - 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, - 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, - 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x0c, - 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, - 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, - 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x12, 0x18, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x46, - 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x42, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x42, 0x65, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x65, 0x74, 0x4d, 0x61, + 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x12, + 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x6f, 0x73, 0x65, 0x4d, 0x69, 0x6e, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x6f, + 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x57, + 0x69, 0x6e, 0x4d, 0x69, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, 0x61, 0x6e, + 0x6b, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x72, + 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x61, 0x72, 0x64, + 0x4d, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x78, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x61, 0x72, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x72, 0x76, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x53, 0x72, 0x76, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x72, 0x76, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x72, 0x76, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, + 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x12, + 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, + 0x74, 0x61, 0x22, 0xfd, 0x04, 0x0a, 0x0f, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x69, 0x74, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x49, 0x6e, 0x69, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, + 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, + 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, + 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, + 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x50, 0x6f, 0x6f, 0x6c, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x50, 0x6f, + 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x12, 0x28, + 0x0a, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, + 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x4e, 0x6f, 0x76, 0x69, + 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0f, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x4d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x72, 0x63, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x72, 0x63, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x74, + 0x53, 0x6e, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x65, 0x73, 0x74, + 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x69, 0x66, 0x74, + 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x47, 0x69, 0x66, 0x74, 0x49, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x69, 0x66, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, 0x69, 0x66, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xf5, 0x02, 0x0a, 0x0d, 0x48, + 0x6f, 0x72, 0x73, 0x65, 0x52, 0x61, 0x63, 0x65, 0x4c, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x6f, 0x6f, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x46, 0x6f, 0x6f, 0x74, 0x65, 0x72, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x53, + 0x65, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x53, + 0x65, 0x63, 0x22, 0x39, 0x0a, 0x0d, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x61, 0x6d, 0x65, + 0x43, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x43, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x22, 0xe5, 0x02, + 0x0a, 0x0c, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x41, 0x6e, + 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4f, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x6f, 0x73, 0x4f, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x49, 0x6f, + 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x61, + 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x44, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, + 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x52, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x13, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x53, 0x65, 0x76, 0x65, + 0x6e, 0x44, 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x53, 0x65, 0x76, 0x65, 0x6e, 0x44, + 0x61, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, + 0x12, 0x33, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, + 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x79, + 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x79, + 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, + 0x0a, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, + 0x72, 0x6c, 0x22, 0x58, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, + 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x9b, 0x04, 0x0a, + 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, + 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, + 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, + 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x56, 0x69, 0x70, 0x44, 0x61, + 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x4e, 0x6f, 0x74, + 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x44, 0x61, 0x79, 0x4d, + 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x56, 0x69, 0x70, 0x53, 0x68, + 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x56, + 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x4e, + 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4e, 0x6f, 0x74, 0x56, 0x69, 0x70, 0x53, 0x68, 0x6f, 0x70, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x6c, 0x43, + 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x45, 0x0a, 0x0d, 0x54, 0x65, + 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, + 0x6c, 0x22, 0x78, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, + 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x10, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x22, 0x6c, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, + 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, + 0x22, 0x83, 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x41, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x65, + 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, + 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, + 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, + 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x50, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, + 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, + 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb1, 0x07, + 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x12, 0x26, 0x0a, + 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, + 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x53, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, + 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, + 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x53, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, + 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, + 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, + 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, + 0x4d, 0x53, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, + 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x10, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, + 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x52, + 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, + 0x62, 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, + 0x62, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x72, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x72, + 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, + 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x64, + 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x1b, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x22, 0x5a, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x5b, 0x0a, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x56, 0x0a, 0x0d, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x22, 0x64, 0x0a, 0x0b, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x57, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x61, 0x74, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x22, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, + 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, + 0x61, 0x79, 0x12, 0x31, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, 0x64, 0x55, + 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, + 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x44, + 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, + 0xc9, 0x02, 0x0a, 0x10, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, + 0x36, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, + 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, + 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x55, 0x70, + 0x44, 0x61, 0x74, 0x65, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, + 0x32, 0x12, 0x44, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, + 0x32, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x55, 0x70, + 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, + 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x41, 0x64, 0x64, + 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x32, 0x54, 0x79, 0x70, 0x65, 0x22, 0x78, 0x0a, 0x14, 0x57, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xdb, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, + 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, + 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, + 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, + 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x42, + 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, - 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, 0x65, 0x61, - 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xa2, - 0x07, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, - 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, - 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, - 0x70, 0x49, 0x64, 0x37, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a, - 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, - 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x1a, 0x38, 0x0a, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, - 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, - 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x0c, 0x57, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x12, 0x18, 0x0a, 0x07, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, + 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x46, 0x69, 0x72, + 0x73, 0x74, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, + 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, + 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, + 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xa2, 0x07, 0x0a, + 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, + 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x38, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, + 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, + 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x64, 0x37, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x39, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x65, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, - 0x63, 0x66, 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, - 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, - 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, - 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, - 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x57, 0x0a, - 0x0b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, - 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, - 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, - 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x2d, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, - 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, - 0x65, 0x49, 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, - 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, - 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, - 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, - 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, - 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, - 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, - 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, - 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, - 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, - 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, - 0x61, 0x79, 0x55, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, - 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, - 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, - 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, - 0x69, 0x61, 0x6e, 0x48, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, - 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, - 0x43, 0x68, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, - 0x43, 0x68, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, - 0x65, 0x6e, 0x43, 0x68, 0x61, 0x22, 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x22, 0x67, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x52, - 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x6e, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, - 0x75, 0x6d, 0x22, 0xb2, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, - 0x69, 0x2e, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, - 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x2b, 0x0a, 0x07, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, - 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, 0x69, - 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x61, - 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, - 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x31, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, - 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, - 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x45, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, - 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x12, 0x3b, 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, - 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, - 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, + 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 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, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 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, 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, + 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, + 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, - 0x07, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, - 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, - 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x18, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, - 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, - 0x37, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, - 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x70, 0x0a, 0x14, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x0a, 0x49, 0x74, - 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, - 0x83, 0x01, 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, - 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xb3, 0x01, 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x12, 0x2b, - 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0e, 0x52, - 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, - 0x65, 0x6d, 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, 0xa6, 0x02, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x43, 0x0a, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x06, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, - 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x50, 0x0a, 0x0a, - 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, + 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, + 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, + 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x57, 0x0a, 0x0b, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, - 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9c, - 0x01, 0x0a, 0x0e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, - 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, - 0x3c, 0x0a, 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, - 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x70, 0x0a, - 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, - 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, - 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, - 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, - 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, - 0x60, 0x0a, 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x22, 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, - 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x0b, 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6b, 0x69, 0x70, 0x22, 0x54, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, + 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, 0x43, 0x68, + 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, + 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, + 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x51, 0x75, 0x44, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, + 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, + 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, + 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, + 0x73, 0x4d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x12, 0x1c, + 0x0a, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x50, 0x61, 0x79, 0x55, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x79, + 0x55, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, + 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, + 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x54, + 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, + 0x6e, 0x48, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x65, 0x6e, + 0x43, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, + 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, + 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, + 0x43, 0x68, 0x61, 0x22, 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x22, 0x67, 0x0a, 0x13, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x09, 0x52, 0x61, 0x6e, + 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, + 0x22, 0xb2, 0x03, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd5, 0x01, 0x0a, 0x0b, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, - 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, - 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, - 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, - 0x6d, 0x22, 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, - 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, + 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x24, + 0x0a, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x41, 0x63, 0x74, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x50, 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x50, + 0x61, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, 0x0a, + 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x2b, 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x33, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x42, 0x69, 0x6e, 0x64, + 0x54, 0x65, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 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, 0x91, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x52, + 0x61, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, + 0x28, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0xea, 0x01, 0x0a, 0x14, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, + 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x49, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x64, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, + 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, + 0x13, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3b, + 0x0a, 0x0b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x44, 0x0a, 0x0e, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x38, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x92, 0x01, 0x0a, 0x0f, + 0x41, 0x63, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x79, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x61, 0x79, 0x73, 0x12, 0x35, 0x0a, 0x07, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x22, 0x94, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x15, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x75, + 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x22, 0x3d, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, + 0x0a, 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x22, 0xd3, 0x01, 0x0a, 0x12, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x12, 0x2e, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x37, 0x0a, + 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x07, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x70, 0x0a, 0x14, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x29, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x83, 0x01, + 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x24, 0x0a, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, + 0x74, 0x65, 0x6d, 0x22, 0xb3, 0x01, 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, + 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, + 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4f, 0x66, 0x66, 0x12, 0x2b, 0x0a, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x56, 0x0a, 0x0e, 0x52, 0x61, 0x6e, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, + 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x2e, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, + 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, 0xa6, 0x02, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, + 0x0a, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, + 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x73, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x29, 0x0a, 0x06, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x52, 0x06, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x50, 0x0a, 0x0a, 0x53, 0x6b, + 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x26, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x6b, 0x69, + 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x9c, 0x01, 0x0a, + 0x0e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30, 0x0a, 0x08, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, + 0x0c, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x6e, 0x6e, + 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x41, + 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x22, 0x70, 0x0a, 0x0c, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x22, 0x60, 0x0a, + 0x0c, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, + 0x80, 0x01, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x4c, 0x6f, 0x67, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x50, 0x68, 0x6f, + 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, + 0x70, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x0b, 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, + 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, + 0x70, 0x22, 0x54, 0x0a, 0x0d, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, - 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, - 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, - 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, - 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, - 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, - 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, - 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, - 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x49, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, - 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, + 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd5, 0x01, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, + 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, + 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, + 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, + 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, + 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, + 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, + 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, + 0x49, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 85c19f9..6dd13e0 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -248,6 +248,7 @@ message RoomInfo{ string Password = 22;// 密码 int32 CostType = 23;// 付费方式 1房主 2AA int32 Voice = 24;// 语音开关 1开启 + int32 PlayerNum = 25; // 房间最大人数 } message PlayerSingleAdjust{ diff --git a/worldsrv/scenemgr.go b/worldsrv/scenemgr.go index b54b410..2e19520 100644 --- a/worldsrv/scenemgr.go +++ b/worldsrv/scenemgr.go @@ -199,6 +199,7 @@ func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode Password: s.GetPassword(), CostType: s.GetCostType(), Voice: s.GetVoice(), + PlayerNum: int32(s.playerNum), } if s.starting { si.Start = 1 From 7dd1a191ea7be002fbb70f00302510867ba004e5 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 19 Sep 2024 10:35:58 +0800 Subject: [PATCH 39/46] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BD=BF=E7=94=A8task?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_player.go | 46 ++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go index f429b88..6872db0 100644 --- a/worldsrv/action_player.go +++ b/worldsrv/action_player.go @@ -2818,27 +2818,33 @@ func CSBillList(s *netlib.Session, packetId int, data interface{}, sid int64) er fromIndex := msg.GetPageNo() * msg.GetPageSize() toIndex := fromIndex + msg.GetPageSize() - logs, _, err := model.GetCoinLogGame(p.Platform, p.SnId, common.BillTypeCoin, startTs, endTs, int(fromIndex), int(toIndex)) - if err != nil { - logger.Logger.Errorf("GetCoinLogGame err:%v", err) - p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCBillList), ret) - return err - } + var err error + var logs []model.CoinLog + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + logs, _, err = model.GetCoinLogGame(p.Platform, p.SnId, common.BillTypeCoin, startTs, endTs, int(fromIndex), int(toIndex)) + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err != nil { + logger.Logger.Errorf("GetCoinLogGame err:%v", err) + p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCBillList), ret) + return + } - for _, v := range logs { - ret.Items = append(ret.Items, &player_proto.BillItem{ - Ts: v.Ts, - Id: v.LogId.Hex(), - BillType: int64(v.LogType), - Amount: v.Count, - Balance: v.RestCount, - GameID: int64(v.InGame), - GameFreeID: v.GameFreeId, - BaseCoin: v.BaseCoin, - }) - } - p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCBillList), ret) - logger.Logger.Tracef("SCBillList pageNo:%d, pageSize:%d %v", msg.GetPageNo(), msg.GetPageSize(), ret) + for _, v := range logs { + ret.Items = append(ret.Items, &player_proto.BillItem{ + Ts: v.Ts, + Id: v.LogId.Hex(), + BillType: int64(v.LogType), + Amount: v.Count, + Balance: v.RestCount, + GameID: int64(v.InGame), + GameFreeID: v.GameFreeId, + BaseCoin: v.BaseCoin, + }) + } + p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SCBillList), ret) + logger.Logger.Tracef("SCBillList pageNo:%d, pageSize:%d %v", msg.GetPageNo(), msg.GetPageSize(), ret) + }), "GetCoinLogGame").Start() return nil } From 999eea07663f287b3210819c91c861f07c3f4416 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 19 Sep 2024 11:52:18 +0800 Subject: [PATCH 40/46] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E4=B8=AD=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=87=91=E5=B8=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/player.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worldsrv/player.go b/worldsrv/player.go index 2461b9b..b8ad202 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -1963,7 +1963,7 @@ func (this *Player) AddCoin(num, add int64, gainWay int32, oper, remark string) //this.TotalData(num, gainWay) async := false - if num > 0 && this.scene != nil && !this.scene.IsTestScene() && !this.scene.IsMatchScene() && this.scene.sceneMode != common.SceneModeThr { //游戏场中加币,需要同步到gamesrv上 + if num > 0 && this.scene != nil && !this.scene.IsTestScene() && !this.scene.IsMatchScene() && !this.scene.IsCustom() && this.scene.sceneMode != common.SceneModeThr { //游戏场中加币,需要同步到gamesrv上 if StartAsyncAddCoinTransact(this, num, gainWay, oper, remark, true, 0, true) { async = true } From 2925465b41eb6d09b1bb583ecc114a67a1e1f8c8 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 19 Sep 2024 13:35:34 +0800 Subject: [PATCH 41/46] =?UTF-8?q?=E8=83=8C=E5=8C=85=E5=85=91=E6=8D=A2?= =?UTF-8?q?=E5=A8=83=E5=A8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 5 +- dbproxy/svc/l_dbbagchangedolllog.go | 73 ++++ model/bagchangedolllog.go | 83 +++++ protocol/bag/bag.pb.go | 519 ++++++++++++++++++++++++++-- protocol/bag/bag.proto | 37 ++ protocol/webapi/common.proto | 1 + worldsrv/action_bag.go | 74 ++++ worldsrv/shopmgr.go | 2 +- 8 files changed, 755 insertions(+), 39 deletions(-) create mode 100644 dbproxy/svc/l_dbbagchangedolllog.go create mode 100644 model/bagchangedolllog.go diff --git a/common/constant.go b/common/constant.go index 8be199c..b433751 100644 --- a/common/constant.go +++ b/common/constant.go @@ -315,7 +315,8 @@ const ( GainWayRoomGain = 107 //房卡场获得 GainWayItemShop = 108 // 交易市场道具交易 GainWayClawdoorCostItem = 109 // 娃娃机上分扣道具 - GainWayItemChangeDoll = 110 // 道具兑换娃娃 + GainWayItemShopChangeDoll = 110 // 商城兑换娃娃 + GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃 ) // 后台选择 金币变化类型 的充值 类型id号起始 @@ -596,8 +597,8 @@ const ( ItemTypeExpireTime = 15 // 时效类道具 ItemTypeObjective = 16 // 目标类道具 ItemTypeChange = 17 // 兑换话费 - ItemTypeMachine = 18 //娃娃兑换 ItemTypeSkinChip = 22 // 皮肤碎片 + ItemTypeDoll = 26 //娃娃兑换 ) func GetKeyNoviceGameId(gameId int) string { diff --git a/dbproxy/svc/l_dbbagchangedolllog.go b/dbproxy/svc/l_dbbagchangedolllog.go new file mode 100644 index 0000000..d8c73d8 --- /dev/null +++ b/dbproxy/svc/l_dbbagchangedolllog.go @@ -0,0 +1,73 @@ +package svc + +import ( + "github.com/globalsign/mgo" + "github.com/globalsign/mgo/bson" + "mongo.games.com/game/dbproxy/mongo" + "mongo.games.com/game/model" + "mongo.games.com/goserver/core/logger" + "net/rpc" +) + +func DbBagChangeDollLogCollection(plt string) *mongo.Collection { + s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.BagChangeDollLogDBName) + if s != nil { + dollRec, first := s.DB().C(model.BagChangeDollLogCollName) + if first { + dollRec.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true}) + } + return dollRec + } + return nil +} + +type DbBagChangeDollLogSvc struct { +} + +func (svc *DbBagChangeDollLogSvc) InsertDbBagChangeDollLog(args *model.DbBagChangeDollLogArgs, ret *bool) (err error) { + clog := DbBagChangeDollLogCollection(args.Log.Platform) + if clog == nil { + return + } + logger.Logger.Trace("DbBagChangeDollLogSvc.InsertDbBagChangeDollLog") + err = clog.Insert(args.Log) + if err != nil { + logger.Logger.Error("DbBagChangeDollLogSvc.InsertDbBagChangeDollLog error:", err) + return + } + *ret = true + return +} +func (svc *DbBagChangeDollLogSvc) GetDbBagChangeDollLog(args *model.DbBagChangeDollLogArgs, dollLog []*model.BagChangeDollLog) (err error) { + clog := DbBagChangeDollLogCollection(args.Log.Platform) + if clog == nil { + logger.Logger.Error("GetDbBagChangeDollLog == nil") + return nil + } + logger.Logger.Trace("DbBagChangeDollLogSvc.GetDbBagChangeDollLog") + err = clog.Find(bson.M{"_id": args.Log.Snid}).All(dollLog) + if err != nil { + logger.Logger.Error("DbBagChangeDollLogSvc.GetDbBagChangeDollLog error:", err) + return nil + } + return +} +func (svc *DbBagChangeDollLogSvc) UpdateDbShopState(args *model.DbBagChangeDollLogArgs, ret *bool) (err error) { + clog := DbBagChangeDollLogCollection(args.Log.Platform) + if clog == nil { + logger.Logger.Error("UpdateDbShopState == nil") + return nil + } + logger.Logger.Trace("DbBagChangeDollLogSvc.UpdateDbShopState") + err = clog.UpdateId(args.Log.LogId, bson.M{"$set": bson.M{"state": args.Log.State}}) + if err != nil { + logger.Logger.Error("DbBagChangeDollLogSvc.UpdateDbShopState error:", err) + return nil + } + *ret = true + return +} + +func init() { + rpc.Register(new(DbBagChangeDollLogSvc)) +} diff --git a/model/bagchangedolllog.go b/model/bagchangedolllog.go new file mode 100644 index 0000000..7baed0b --- /dev/null +++ b/model/bagchangedolllog.go @@ -0,0 +1,83 @@ +package model + +import ( + "github.com/globalsign/mgo/bson" + "mongo.games.com/goserver/core/logger" + "time" +) + +type BagChangeDollLog struct { + LogId bson.ObjectId `bson:"_id"` + Platform string //平台 + Snid int32 //用户id + ItemId int32 + ItemNum int32 + UserName string //姓名 + UserTel string //手机号 + Addr string //地址 + State int32 //状态 0.默认 1.成功 2.失败 3.未发货准备发货 + Remark string //备注信息 + CreateTs time.Time //订单生成时间 + OpTs time.Time //订单最后操作时间 + Ts int64 +} + +var ( + BagChangeDollLogDBName = "log" + BagChangeDollLogCollName = "log_bagChangeDoll" +) + +type DbBagChangeDollLogArgs struct { + Log *BagChangeDollLog +} + +func NewDbBagChangeDoll(platform string, snid, itemId, itemNum int32, state int32, remark string, addr string, userName string, userTel string) *BagChangeDollLog { + t := time.Now() + return &BagChangeDollLog{ + LogId: bson.NewObjectId(), + Platform: platform, + Snid: snid, + ItemId: itemId, + ItemNum: itemNum, + State: state, + UserName: userName, + UserTel: userTel, + Addr: addr, + Remark: remark, + CreateTs: t, + OpTs: t, + Ts: t.Unix(), + } +} +func InsertDbBagChangeDollLog(log *BagChangeDollLog) (err error) { + if rpcCli == nil { + logger.Logger.Error("model.InsertDbBagChangeDollLog rpcCli == nil") + return + } + var ret bool + args := &DbBagChangeDollLogArgs{ + Log: log, + } + err = rpcCli.CallWithTimeout("DbBagChangeDollLogSvc.InsertDbBagChangeDollLog", args, &ret, time.Second*30) + if err != nil { + logger.Logger.Warn("InsertDbBagChangeDollLog error:", err) + return + } + return +} +func GetDbBagChangeDollLog(platform string, snid int32) []*BagChangeDollLog { + if rpcCli == nil { + logger.Logger.Error("model.GetDbBagChangeDollLog rpcCli == nil") + return nil + } + var ret []*BagChangeDollLog + args := &DbBagChangeDollLogArgs{ + Log: &BagChangeDollLog{Snid: snid, Platform: platform}, + } + err := rpcCli.CallWithTimeout("DbBagChangeDollLogSvc.GetDbBagChangeDollLog", args, &ret, time.Second*30) + if err != nil { + logger.Logger.Warn("GetDbBagChangeDollLog error:", err) + return nil + } + return ret +} diff --git a/protocol/bag/bag.pb.go b/protocol/bag/bag.pb.go index 3c014a1..4a68a07 100644 --- a/protocol/bag/bag.pb.go +++ b/protocol/bag/bag.pb.go @@ -96,8 +96,12 @@ const ( SPacketID_PACKET_SC_ITEM_EXCHANGE_RES SPacketID = 2533 //背包道具兑换返回 SPacketID_PACKET_ALL_BAG_END SPacketID = 2549 //最大消息号 //3000~3099 - SPacketID_PACKET_PropExchange SPacketID = 3000 // 道具兑换 - SPacketID_PACKET_ExchangeList SPacketID = 3001 // 兑换列表 + SPacketID_PACKET_PropExchange SPacketID = 3000 // 道具兑换 + SPacketID_PACKET_ExchangeList SPacketID = 3001 // 兑换列表 + SPacketID_PACKET_CS_DollChange SPacketID = 3002 //娃娃卡兑换 + SPacketID_PACKET_SC_DollChange SPacketID = 3003 //娃娃卡兑换返回 + SPacketID_PACKET_CS_DollChangeLog SPacketID = 3004 //娃娃卡兑换记录 + SPacketID_PACKET_SC_DollChangeLog SPacketID = 3005 //娃娃卡兑换记录返回 ) // Enum value maps for SPacketID. @@ -111,6 +115,10 @@ var ( 2549: "PACKET_ALL_BAG_END", 3000: "PACKET_PropExchange", 3001: "PACKET_ExchangeList", + 3002: "PACKET_CS_DollChange", + 3003: "PACKET_SC_DollChange", + 3004: "PACKET_CS_DollChangeLog", + 3005: "PACKET_SC_DollChangeLog", } SPacketID_value = map[string]int32{ "PACKET_BAG_ZERO": 0, @@ -121,6 +129,10 @@ var ( "PACKET_ALL_BAG_END": 2549, "PACKET_PropExchange": 3000, "PACKET_ExchangeList": 3001, + "PACKET_CS_DollChange": 3002, + "PACKET_SC_DollChange": 3003, + "PACKET_CS_DollChangeLog": 3004, + "PACKET_SC_DollChangeLog": 3005, } ) @@ -972,6 +984,334 @@ func (x *SCExchangeList) GetTp() int32 { return 0 } +//娃娃卡兑换 +//PACKET_CS_DollChange +type CSDollChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` + ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` + UserName string `protobuf:"bytes,3,opt,name=UserName,proto3" json:"UserName,omitempty"` //姓名 + UserTel string `protobuf:"bytes,4,opt,name=UserTel,proto3" json:"UserTel,omitempty"` //电话 + Addr string `protobuf:"bytes,5,opt,name=Addr,proto3" json:"Addr,omitempty"` //地址 +} + +func (x *CSDollChange) Reset() { + *x = CSDollChange{} + if protoimpl.UnsafeEnabled { + mi := &file_bag_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSDollChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSDollChange) ProtoMessage() {} + +func (x *CSDollChange) ProtoReflect() protoreflect.Message { + mi := &file_bag_proto_msgTypes[13] + 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 CSDollChange.ProtoReflect.Descriptor instead. +func (*CSDollChange) Descriptor() ([]byte, []int) { + return file_bag_proto_rawDescGZIP(), []int{13} +} + +func (x *CSDollChange) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *CSDollChange) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *CSDollChange) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *CSDollChange) GetUserTel() string { + if x != nil { + return x.UserTel + } + return "" +} + +func (x *CSDollChange) GetAddr() string { + if x != nil { + return x.Addr + } + return "" +} + +//PACKET_SC_DollChange +type SCDollChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=bag.OpResultCode" json:"RetCode,omitempty"` +} + +func (x *SCDollChange) Reset() { + *x = SCDollChange{} + if protoimpl.UnsafeEnabled { + mi := &file_bag_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCDollChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCDollChange) ProtoMessage() {} + +func (x *SCDollChange) ProtoReflect() protoreflect.Message { + mi := &file_bag_proto_msgTypes[14] + 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 SCDollChange.ProtoReflect.Descriptor instead. +func (*SCDollChange) Descriptor() ([]byte, []int) { + return file_bag_proto_rawDescGZIP(), []int{14} +} + +func (x *SCDollChange) GetRetCode() OpResultCode { + if x != nil { + return x.RetCode + } + return OpResultCode_OPRC_Sucess +} + +//娃娃卡兑换记录 +//PACKET_CS_DollChangeLog +type CSDollChangeLog struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSDollChangeLog) Reset() { + *x = CSDollChangeLog{} + if protoimpl.UnsafeEnabled { + mi := &file_bag_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSDollChangeLog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSDollChangeLog) ProtoMessage() {} + +func (x *CSDollChangeLog) ProtoReflect() protoreflect.Message { + mi := &file_bag_proto_msgTypes[15] + 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 CSDollChangeLog.ProtoReflect.Descriptor instead. +func (*CSDollChangeLog) Descriptor() ([]byte, []int) { + return file_bag_proto_rawDescGZIP(), []int{15} +} + +//PACKET_SC_DollChangeLog +type SCDillChangeLog struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info []*DillChangeLogInfo `protobuf:"bytes,1,rep,name=Info,proto3" json:"Info,omitempty"` +} + +func (x *SCDillChangeLog) Reset() { + *x = SCDillChangeLog{} + if protoimpl.UnsafeEnabled { + mi := &file_bag_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCDillChangeLog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCDillChangeLog) ProtoMessage() {} + +func (x *SCDillChangeLog) ProtoReflect() protoreflect.Message { + mi := &file_bag_proto_msgTypes[16] + 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 SCDillChangeLog.ProtoReflect.Descriptor instead. +func (*SCDillChangeLog) Descriptor() ([]byte, []int) { + return file_bag_proto_rawDescGZIP(), []int{16} +} + +func (x *SCDillChangeLog) GetInfo() []*DillChangeLogInfo { + if x != nil { + return x.Info + } + return nil +} + +type DillChangeLogInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` + ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` + State int32 `protobuf:"varint,3,opt,name=State,proto3" json:"State,omitempty"` + UserName string `protobuf:"bytes,4,opt,name=UserName,proto3" json:"UserName,omitempty"` + UserTel string `protobuf:"bytes,5,opt,name=UserTel,proto3" json:"UserTel,omitempty"` + Addr string `protobuf:"bytes,6,opt,name=Addr,proto3" json:"Addr,omitempty"` + CreateTs string `protobuf:"bytes,7,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` + OpTs string `protobuf:"bytes,8,opt,name=OpTs,proto3" json:"OpTs,omitempty"` + Remark string `protobuf:"bytes,9,opt,name=Remark,proto3" json:"Remark,omitempty"` //备注信息 +} + +func (x *DillChangeLogInfo) Reset() { + *x = DillChangeLogInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_bag_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DillChangeLogInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DillChangeLogInfo) ProtoMessage() {} + +func (x *DillChangeLogInfo) ProtoReflect() protoreflect.Message { + mi := &file_bag_proto_msgTypes[17] + 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 DillChangeLogInfo.ProtoReflect.Descriptor instead. +func (*DillChangeLogInfo) Descriptor() ([]byte, []int) { + return file_bag_proto_rawDescGZIP(), []int{17} +} + +func (x *DillChangeLogInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *DillChangeLogInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *DillChangeLogInfo) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *DillChangeLogInfo) GetUserName() string { + if x != nil { + return x.UserName + } + return "" +} + +func (x *DillChangeLogInfo) GetUserTel() string { + if x != nil { + return x.UserTel + } + return "" +} + +func (x *DillChangeLogInfo) GetAddr() string { + if x != nil { + return x.Addr + } + return "" +} + +func (x *DillChangeLogInfo) GetCreateTs() string { + if x != nil { + return x.CreateTs + } + return "" +} + +func (x *DillChangeLogInfo) GetOpTs() string { + if x != nil { + return x.OpTs + } + return "" +} + +func (x *DillChangeLogInfo) GetRemark() string { + if x != nil { + return x.Remark + } + return "" +} + var File_bag_proto protoreflect.FileDescriptor var file_bag_proto_rawDesc = []byte{ @@ -1057,33 +1397,73 @@ var file_bag_proto_rawDesc = []byte{ 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x54, 0x70, 0x2a, 0x99, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, - 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x55, 0x73, 0x65, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x49, 0x64, 0x45, 0x72, 0x72, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x44, 0x62, 0x45, 0x72, 0x72, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x42, 0x61, 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x06, 0x12, 0x12, 0x0a, - 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, - 0x07, 0x2a, 0xde, 0x01, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, - 0x13, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x5a, 0x45, - 0x52, 0x4f, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, - 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe2, 0x13, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, - 0x5f, 0x55, 0x53, 0x45, 0x10, 0xe3, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x42, 0x41, 0x47, 0x44, 0x41, 0x54, 0x41, - 0x10, 0xe4, 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, - 0x45, 0x53, 0x10, 0xe5, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xf5, 0x13, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xb8, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, - 0xb9, 0x17, 0x42, 0x23, 0x5a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2f, 0x62, 0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x53, 0x44, 0x6f, 0x6c, 0x6c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x12, + 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, + 0x64, 0x72, 0x22, 0x3b, 0x0a, 0x0c, 0x53, 0x43, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, + 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, + 0x6f, 0x67, 0x22, 0x3d, 0x0a, 0x0f, 0x53, 0x43, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, + 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, + 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x70, 0x54, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4f, 0x70, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x2a, 0x99, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, + 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x55, + 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x64, 0x45, 0x72, + 0x72, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x62, 0x45, 0x72, + 0x72, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61, 0x67, 0x46, + 0x75, 0x6c, 0x6c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, + 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x07, 0x2a, 0xd0, 0x02, + 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, + 0x41, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe2, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x55, 0x53, 0x45, + 0x10, 0xe3, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x42, 0x41, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xe4, 0x13, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x54, 0x45, + 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x10, 0xe5, + 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, + 0x42, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xf5, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x10, 0xb8, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb9, 0x17, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xba, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x10, 0xbb, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x10, + 0xbc, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0xbd, 0x17, + 0x42, 0x23, 0x5a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x2f, 0x62, 0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1099,7 +1479,7 @@ func file_bag_proto_rawDescGZIP() []byte { } var file_bag_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_bag_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_bag_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_bag_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: bag.OpResultCode (SPacketID)(0), // 1: bag.SPacketID @@ -1116,6 +1496,11 @@ var file_bag_proto_goTypes = []interface{}{ (*ExchangeInfo)(nil), // 12: bag.ExchangeInfo (*CSExchangeList)(nil), // 13: bag.CSExchangeList (*SCExchangeList)(nil), // 14: bag.SCExchangeList + (*CSDollChange)(nil), // 15: bag.CSDollChange + (*SCDollChange)(nil), // 16: bag.SCDollChange + (*CSDollChangeLog)(nil), // 17: bag.CSDollChangeLog + (*SCDillChangeLog)(nil), // 18: bag.SCDillChangeLog + (*DillChangeLogInfo)(nil), // 19: bag.DillChangeLogInfo } var file_bag_proto_depIdxs = []int32{ 0, // 0: bag.SCBagInfo.RetCode:type_name -> bag.OpResultCode @@ -1130,11 +1515,13 @@ var file_bag_proto_depIdxs = []int32{ 9, // 9: bag.ExchangeInfo.CostItems:type_name -> bag.PropInfo 9, // 10: bag.ExchangeInfo.GainItems:type_name -> bag.PropInfo 12, // 11: bag.SCExchangeList.Infos:type_name -> bag.ExchangeInfo - 12, // [12:12] is the sub-list for method output_type - 12, // [12:12] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 0, // 12: bag.SCDollChange.RetCode:type_name -> bag.OpResultCode + 19, // 13: bag.SCDillChangeLog.Info:type_name -> bag.DillChangeLogInfo + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_bag_proto_init() } @@ -1299,6 +1686,66 @@ func file_bag_proto_init() { return nil } } + file_bag_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSDollChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bag_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCDollChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bag_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSDollChangeLog); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bag_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCDillChangeLog); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_bag_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DillChangeLogInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1306,7 +1753,7 @@ func file_bag_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_bag_proto_rawDesc, NumEnums: 2, - NumMessages: 13, + NumMessages: 18, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/bag/bag.proto b/protocol/bag/bag.proto index c004be9..8b6b54e 100644 --- a/protocol/bag/bag.proto +++ b/protocol/bag/bag.proto @@ -23,6 +23,10 @@ enum SPacketID { //3000~3099 PACKET_PropExchange = 3000; // 道具兑换 PACKET_ExchangeList = 3001; // 兑换列表 + PACKET_CS_DollChange = 3002;//娃娃卡兑换 + PACKET_SC_DollChange = 3003;//娃娃卡兑换返回 + PACKET_CS_DollChangeLog = 3004;//娃娃卡兑换记录 + PACKET_SC_DollChangeLog = 3005;//娃娃卡兑换记录返回 } //物品信息 后续精简 message ItemInfo{ @@ -119,4 +123,37 @@ message CSExchangeList{ message SCExchangeList{ repeated ExchangeInfo Infos = 1; // 兑换列表 int32 Tp = 2; // 兑换类型 +} +//娃娃卡兑换 +//PACKET_CS_DollChange +message CSDollChange{ + int32 ItemId = 1; + int32 ItemNum = 2; + string UserName = 3;//姓名 + string UserTel = 4;//电话 + string Addr = 5;//地址 +} +//PACKET_SC_DollChange +message SCDollChange{ + OpResultCode RetCode = 1; +} +//娃娃卡兑换记录 +//PACKET_CS_DollChangeLog +message CSDollChangeLog{ + +} +//PACKET_SC_DollChangeLog +message SCDillChangeLog{ + repeated DillChangeLogInfo Info =1; +} +message DillChangeLogInfo{ + int32 ItemId = 1; + int32 ItemNum = 2; + int32 State = 3; + string UserName = 4; + string UserTel = 5; + string Addr = 6; + string CreateTs = 7; + string OpTs =8; + string Remark = 9;//备注信息 } \ No newline at end of file diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 85c19f9..757e26a 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -915,6 +915,7 @@ message MachineInfo{ int32 CostItemNum = 5; //消耗道具数量 int32 ItemId = 6; //获得道具Id int32 ItemNum = 7; //获得道具数量 + string IconAddr = 8;//图片地址 } // etcd /game/match_audience message MatchAudience { diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index 1975421..e8de6e4 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -506,6 +506,76 @@ func CSPropExchange(s *netlib.Session, packetid int, data interface{}, sid int64 return nil } +// 兑换娃娃 +func CSDollChange(s *netlib.Session, packetid int, data interface{}, sid int64) error { + msg, ok := data.(*bag.CSDollChange) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + bagInfo, _, isF := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: []*model.Item{ + { + ItemId: msg.GetItemId(), + ItemNum: -1, + }, + }, + GainWay: common.GainWayItemBagChangeDoll, + Operator: "system", + Remark: "背包内使用兑换娃娃卡", + NoLog: false, + }) + logger.Logger.Trace("背包内使用兑换娃娃卡 bagInfo = ", bagInfo) + pack := &bag.SCDollChange{} + pack.RetCode = bag.OpResultCode_OPRC_UseUp + if isF { + pack.RetCode = bag.OpResultCode_OPRC_Sucess + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + dollLog := model.NewDbBagChangeDoll(p.Platform, p.SnId, msg.ItemId, msg.ItemNum, 0, "", msg.Addr, msg.UserName, msg.UserTel) + return model.InsertDbBagChangeDollLog(dollLog) + }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { + if data != nil { + logger.Logger.Errorf("CSDollChange err: %v", data) + } + }), "CSDollChange").Start() + + } + p.SendToClient(int(bag.SPacketID_PACKET_SC_DollChange), pack) + return nil +} + +// 兑换娃娃记录 +func CSDollChangeLog(s *netlib.Session, packetid int, data interface{}, sid int64) error { + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + pack := &bag.SCDillChangeLog{} + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + return model.GetDbBagChangeDollLog(p.Platform, p.SnId) + }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { + for _, log := range data.([]*model.BagChangeDollLog) { + info := &bag.DillChangeLogInfo{} + info.ItemId = log.ItemId + info.ItemNum = log.ItemNum + info.State = log.State + info.UserName = log.UserName + info.UserTel = log.UserTel + info.Addr = log.Addr + info.CreateTs = log.CreateTs.String() + info.OpTs = log.OpTs.String() + info.Remark = log.Remark + pack.Info = append(pack.Info, info) + } + }), "CSDollChange").Start() + p.SendToClient(int(bag.SPacketID_PACKET_SC_DollChangeLog), pack) + return nil +} + func init() { // 查看背包 common.Register(int(bag.SPacketID_PACKET_ALL_BAG_INFO), &bag.CSBagInfo{}, CSBagInfo) @@ -515,4 +585,8 @@ func init() { common.Register(int(bag.SPacketID_PACKET_ExchangeList), &bag.CSExchangeList{}, CSExchangeList) // 道具兑换 common.Register(int(bag.SPacketID_PACKET_PropExchange), &bag.CSPropExchange{}, CSPropExchange) + //兑换娃娃 + common.Register(int(bag.SPacketID_PACKET_CS_DollChange), &bag.CSDollChange{}, CSDollChange) + //兑换娃娃记录 + common.Register(int(bag.SPacketID_PACKET_CS_DollChangeLog), &bag.CSDollChangeLog{}, CSDollChangeLog) } diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index 270eadf..f3b4cf2 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -886,7 +886,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen ItemId: common.ItemDollCard, ItemNum: int64(info.JPrice * num), } - _, _, isF := BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0, common.GainWayItemChangeDoll, + _, _, isF := BagMgrSingleton.AddItem(p, int64(item.ItemId), -item.ItemNum, 0, common.GainWayItemShopChangeDoll, "sys", fmt.Sprintf("兑换娃娃扣除%v", item.ItemId), 0, 0, false) if !isF { // 扣掉金券 pack.RetCode = shop.OpResultCode_OPRC_DCoinNotEnough From 7e8ceebbf70c2e53b7184821788a286dddfa9f14 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 19 Sep 2024 13:36:43 +0800 Subject: [PATCH 42/46] proto --- protocol/webapi/common.pb.go | 113 +++++++++++++++++++---------------- 1 file changed, 61 insertions(+), 52 deletions(-) diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 8ea06fd..d3b38aa 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -8286,6 +8286,7 @@ type MachineInfo struct { CostItemNum int32 `protobuf:"varint,5,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 ItemId int32 `protobuf:"varint,6,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具Id ItemNum int32 `protobuf:"varint,7,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 + IconAddr string `protobuf:"bytes,8,opt,name=IconAddr,proto3" json:"IconAddr,omitempty"` //图片地址 } func (x *MachineInfo) Reset() { @@ -8369,6 +8370,13 @@ func (x *MachineInfo) GetItemNum() int32 { return 0 } +func (x *MachineInfo) GetIconAddr() string { + if x != nil { + return x.IconAddr + } + return "" +} + // etcd /game/match_audience type MatchAudience struct { state protoimpl.MessageState @@ -10053,7 +10061,7 @@ var file_common_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd5, 0x01, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, + 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf1, 0x01, 0x0a, 0x0b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x49, 0x64, 0x18, 0x02, @@ -10066,57 +10074,58 @@ var file_common_proto_rawDesc = []byte{ 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, - 0x4f, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, - 0x22, 0x4c, 0x0a, 0x0c, 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, - 0x55, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, - 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, - 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, - 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, - 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, - 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, - 0x49, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, + 0x1a, 0x0a, 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x22, 0x4f, 0x0a, 0x0d, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x4c, 0x0a, 0x0c, + 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, + 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, + 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, + 0x64, 0x12, 0x24, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, + 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, + 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x42, 0x26, 0x5a, + 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( From d3642c93e454e5a4925d3cc7aabccfb66263e5f7 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 19 Sep 2024 17:18:16 +0800 Subject: [PATCH 43/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E5=85=91=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_GameItem.dat | Bin 18735 -> 18729 bytes data/DB_GameItem.json | 6 +- data/DB_GiftCard.dat | Bin 57 -> 57 bytes data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 5439 -> 5439 bytes dbproxy/svc/l_dbbagchangedolllog.go | 4 +- protocol/bag/bag.pb.go | 170 +++++++++++++--------------- protocol/bag/bag.proto | 9 +- protocol/webapi/webapi.pb.go | 141 +++++++++++++---------- protocol/webapi/webapi.proto | 2 + worldsrv/action_bag.go | 94 ++++++++------- worldsrv/shopmgr.go | 1 + worldsrv/trascate_webapi.go | 5 + xlsx/DB_GameItem.xlsx | Bin 35314 -> 35321 bytes 14 files changed, 232 insertions(+), 200 deletions(-) diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index ea158f6d0656c1eec9d9e1462cec120438c3a4e7..fa14b5ef3eb95c82bb9d92fa927999f9606a1123 100644 GIT binary patch delta 43 rcmZ2KiE-s5#trcvjH#0oJWQA(7$+A>s7>DQ!Nr&~`ILttLVyzhOCt_t delta 38 ocmZ2EiE;fT#trcvj2V*?JWM8U6xW`t;K|9vl{)#jharp$01&DT2mk;8 diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 4725b72..399a340 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -6271,8 +6271,7 @@ ], "SaleType": 1, "SaleGold": 5000, - "Composition": 1, - "CompositionMax": 9999, + "CompositionMax": 1, "Location": "0", "Describe": "可联系客服兑换实物奖励", "Gain": { @@ -6309,8 +6308,7 @@ ], "SaleType": 1, "SaleGold": 5000, - "Composition": 1, - "CompositionMax": 9999, + "CompositionMax": 1, "Location": "0", "Describe": "可联系客服兑换实物奖励", "Gain": { diff --git a/data/DB_GiftCard.dat b/data/DB_GiftCard.dat index 15600367ff42a73b75826e6378f02a3bde3a8661..96640b07f274cbbbda035ee3e52503c8356a73cb 100644 GIT binary patch delta 38 pcmcDtoFJjd$+57PP2j+^jZ8{x92eV|1-P_0AVMv+2JBXh3;@YB39kSE delta 38 pcmcDtoFJjd#&NNYS%6E4lVf2oo4|o-8=15?Aj}q919mG$1^~Z739kSE diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 692c5d1b4dcfefb43616d6335367170979a23cf5..2922a032d2148858f57dec518517d249f80a6055 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!(#8y?uR`f-Q2IKQz6_$3I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwevn~O_7x_iLp0o@642PfDa4Qn5;IUweP#gXiT>4)iq*$*=hyE{0+?r2#1h=nVbg9Ypmn8A0T4nT1@&_bAj=oZ2( UKnVaPc8*0rkA7k1VxTPq0BA})H2?qr diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 5c3030bf91b484951748e1222cf51ebdd8b77bcb..4bb22563f3dfb193e2d7ace2e38ee689d3345856 100644 GIT binary patch delta 239 zcmdn5wO?z)d`3YwjwQWp0wP`<91DT;g*N8R8yN3039xZoY-1K+gbJ@XJb5llp&&%f zfoSwl56&Bgd$o7;Gs`|llA)xRgpxMluzq9**ECg|wpe7%f z#j`nt^8pi77-r#uUbfAyJgXQdoA3xu;`=apDYxKcM*d<+h-M^JT-F?qt}qMmOb*}| W+q{^c17<$VLk*o(oA(Gbvj70D*F;eO delta 211 zcmdn5wO?z)d`3YIj)lE!0vFntz1TRG09hiNH!$915`YM=ILrtXzSzbrFnKOZp&*3G z;sudha7b>lJnID^h^UAcC)lI~r)My3W@LNH2vofYXdW|E^@HU?o4>RBFiu{;F0whC z^DfimXZEWJdmCNvK`DY(R&A%wy!T=6H04S%7D9 W0KeGg#rzzMla2WWH}4T>W&r>nR6Wc9 diff --git a/dbproxy/svc/l_dbbagchangedolllog.go b/dbproxy/svc/l_dbbagchangedolllog.go index d8c73d8..2443d15 100644 --- a/dbproxy/svc/l_dbbagchangedolllog.go +++ b/dbproxy/svc/l_dbbagchangedolllog.go @@ -38,14 +38,14 @@ func (svc *DbBagChangeDollLogSvc) InsertDbBagChangeDollLog(args *model.DbBagChan *ret = true return } -func (svc *DbBagChangeDollLogSvc) GetDbBagChangeDollLog(args *model.DbBagChangeDollLogArgs, dollLog []*model.BagChangeDollLog) (err error) { +func (svc *DbBagChangeDollLogSvc) GetDbBagChangeDollLog(args *model.DbBagChangeDollLogArgs, dollLog *[]*model.BagChangeDollLog) (err error) { clog := DbBagChangeDollLogCollection(args.Log.Platform) if clog == nil { logger.Logger.Error("GetDbBagChangeDollLog == nil") return nil } logger.Logger.Trace("DbBagChangeDollLogSvc.GetDbBagChangeDollLog") - err = clog.Find(bson.M{"_id": args.Log.Snid}).All(dollLog) + err = clog.Find(bson.M{"snid": args.Log.Snid}).All(dollLog) if err != nil { logger.Logger.Error("DbBagChangeDollLogSvc.GetDbBagChangeDollLog error:", err) return nil diff --git a/protocol/bag/bag.pb.go b/protocol/bag/bag.pb.go index 4a68a07..f3c9f12 100644 --- a/protocol/bag/bag.pb.go +++ b/protocol/bag/bag.pb.go @@ -991,11 +991,10 @@ type CSDollChange struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` - ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` - UserName string `protobuf:"bytes,3,opt,name=UserName,proto3" json:"UserName,omitempty"` //姓名 - UserTel string `protobuf:"bytes,4,opt,name=UserTel,proto3" json:"UserTel,omitempty"` //电话 - Addr string `protobuf:"bytes,5,opt,name=Addr,proto3" json:"Addr,omitempty"` //地址 + Items []*PropInfo `protobuf:"bytes,1,rep,name=Items,proto3" json:"Items,omitempty"` + UserName string `protobuf:"bytes,2,opt,name=UserName,proto3" json:"UserName,omitempty"` //姓名 + UserTel string `protobuf:"bytes,3,opt,name=UserTel,proto3" json:"UserTel,omitempty"` //电话 + Addr string `protobuf:"bytes,4,opt,name=Addr,proto3" json:"Addr,omitempty"` //地址 } func (x *CSDollChange) Reset() { @@ -1030,18 +1029,11 @@ func (*CSDollChange) Descriptor() ([]byte, []int) { return file_bag_proto_rawDescGZIP(), []int{13} } -func (x *CSDollChange) GetItemId() int32 { +func (x *CSDollChange) GetItems() []*PropInfo { if x != nil { - return x.ItemId + return x.Items } - return 0 -} - -func (x *CSDollChange) GetItemNum() int32 { - if x != nil { - return x.ItemNum - } - return 0 + return nil } func (x *CSDollChange) GetUserName() string { @@ -1397,73 +1389,72 @@ var file_bag_proto_rawDesc = []byte{ 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x8a, 0x01, 0x0a, 0x0c, 0x43, 0x53, 0x44, 0x6f, 0x6c, 0x6c, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x12, - 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, - 0x64, 0x72, 0x22, 0x3b, 0x0a, 0x0c, 0x53, 0x43, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, - 0x6f, 0x67, 0x22, 0x3d, 0x0a, 0x0f, 0x53, 0x43, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, - 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, - 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x70, 0x54, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4f, 0x70, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, - 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, - 0x6b, 0x2a, 0x99, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, - 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x55, - 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x64, 0x45, 0x72, - 0x72, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x62, 0x45, 0x72, - 0x72, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61, 0x67, 0x46, - 0x75, 0x6c, 0x6c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, - 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x07, 0x2a, 0xd0, 0x02, - 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, - 0x41, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe2, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x55, 0x53, 0x45, - 0x10, 0xe3, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x42, 0x41, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xe4, 0x13, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x54, 0x45, - 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x10, 0xe5, - 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, - 0x42, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xf5, 0x13, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x10, 0xb8, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb9, 0x17, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xba, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x10, 0xbb, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x10, - 0xbc, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0xbd, 0x17, - 0x42, 0x23, 0x5a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2f, 0x62, 0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x7d, 0x0a, 0x0c, 0x43, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, + 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x41, 0x64, 0x64, 0x72, 0x22, 0x3b, 0x0a, 0x0c, 0x53, 0x43, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x4f, 0x70, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4c, 0x6f, 0x67, 0x22, 0x3d, 0x0a, 0x0f, 0x53, 0x43, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x62, 0x61, 0x67, 0x2e, 0x44, 0x69, 0x6c, 0x6c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0xed, 0x01, 0x0a, 0x11, 0x44, 0x69, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x55, 0x73, 0x65, 0x72, 0x54, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x70, 0x54, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4f, 0x70, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x2a, 0x99, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, + 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, + 0x65, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x64, + 0x45, 0x72, 0x72, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x62, + 0x45, 0x72, 0x72, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61, + 0x67, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x4e, 0x6f, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x07, 0x2a, + 0xd0, 0x02, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a, + 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x5a, 0x45, 0x52, 0x4f, + 0x10, 0x00, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, + 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe2, 0x13, 0x12, 0x17, 0x0a, 0x12, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x55, + 0x53, 0x45, 0x10, 0xe3, 0x13, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x42, 0x41, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xe4, + 0x13, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, + 0x54, 0x45, 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x53, + 0x10, 0xe5, 0x13, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, + 0x4c, 0x5f, 0x42, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xf5, 0x13, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x10, 0xb8, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb9, 0x17, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x6f, + 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xba, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x10, 0xbb, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, + 0x67, 0x10, 0xbc, 0x17, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x6f, 0x67, 0x10, + 0xbd, 0x17, 0x42, 0x23, 0x5a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2f, 0x62, 0x61, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1515,13 +1506,14 @@ var file_bag_proto_depIdxs = []int32{ 9, // 9: bag.ExchangeInfo.CostItems:type_name -> bag.PropInfo 9, // 10: bag.ExchangeInfo.GainItems:type_name -> bag.PropInfo 12, // 11: bag.SCExchangeList.Infos:type_name -> bag.ExchangeInfo - 0, // 12: bag.SCDollChange.RetCode:type_name -> bag.OpResultCode - 19, // 13: bag.SCDillChangeLog.Info:type_name -> bag.DillChangeLogInfo - 14, // [14:14] is the sub-list for method output_type - 14, // [14:14] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 9, // 12: bag.CSDollChange.Items:type_name -> bag.PropInfo + 0, // 13: bag.SCDollChange.RetCode:type_name -> bag.OpResultCode + 19, // 14: bag.SCDillChangeLog.Info:type_name -> bag.DillChangeLogInfo + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_bag_proto_init() } diff --git a/protocol/bag/bag.proto b/protocol/bag/bag.proto index 8b6b54e..65ed7db 100644 --- a/protocol/bag/bag.proto +++ b/protocol/bag/bag.proto @@ -127,11 +127,10 @@ message SCExchangeList{ //娃娃卡兑换 //PACKET_CS_DollChange message CSDollChange{ - int32 ItemId = 1; - int32 ItemNum = 2; - string UserName = 3;//姓名 - string UserTel = 4;//电话 - string Addr = 5;//地址 + repeated PropInfo Items = 1; + string UserName = 2;//姓名 + string UserTel = 3;//电话 + string Addr = 4;//地址 } //PACKET_SC_DollChange message SCDollChange{ diff --git a/protocol/webapi/webapi.pb.go b/protocol/webapi/webapi.pb.go index 2480f77..3ce9b3a 100644 --- a/protocol/webapi/webapi.pb.go +++ b/protocol/webapi/webapi.pb.go @@ -6094,6 +6094,7 @@ type ASCreateExchangeOrder struct { TelCharge int32 `protobuf:"varint,15,opt,name=TelCharge,proto3" json:"TelCharge,omitempty"` // 电话充值 VipLevel int32 `protobuf:"varint,16,opt,name=VipLevel,proto3" json:"VipLevel,omitempty"` //VIP等级 TelId int32 `protobuf:"varint,17,opt,name=TelId,proto3" json:"TelId,omitempty"` //运营商ID + DPrice int32 `protobuf:"varint,18,opt,name=DPrice,proto3" json:"DPrice,omitempty"` //消耗娃娃积分 } func (x *ASCreateExchangeOrder) Reset() { @@ -6247,6 +6248,13 @@ func (x *ASCreateExchangeOrder) GetTelId() int32 { return 0 } +func (x *ASCreateExchangeOrder) GetDPrice() int32 { + if x != nil { + return x.DPrice + } + return 0 +} + type SACreateExchangeOrder struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6595,6 +6603,7 @@ type ASUpExchangeStatus struct { NeedNum int32 `protobuf:"varint,6,opt,name=NeedNum,proto3" json:"NeedNum,omitempty"` //消耗V卡 JPrice int32 `protobuf:"varint,7,opt,name=JPrice,proto3" json:"JPrice,omitempty"` //消耗的金券数量 Cash int32 `protobuf:"varint,8,opt,name=Cash,proto3" json:"Cash,omitempty"` //消耗的现金数量 + DPrice int32 `protobuf:"varint,9,opt,name=DPrice,proto3" json:"DPrice,omitempty"` //消耗的娃娃积分 } func (x *ASUpExchangeStatus) Reset() { @@ -6685,6 +6694,13 @@ func (x *ASUpExchangeStatus) GetCash() int32 { return 0 } +func (x *ASUpExchangeStatus) GetDPrice() int32 { + if x != nil { + return x.DPrice + } + return 0 +} + // 返回 type SAUpExchangeStatus struct { state protoimpl.MessageState @@ -10027,7 +10043,7 @@ var file_webapi_proto_rawDesc = []byte{ 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x2f, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x43, 0x50, 0x4f, 0x52, 0x09, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x22, 0xcb, + 0x43, 0x50, 0x4f, 0x52, 0x09, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x22, 0xe3, 0x03, 0x0a, 0x15, 0x41, 0x53, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, @@ -10056,66 +10072,69 @@ var file_webapi_proto_rawDesc = []byte{ 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x6b, 0x0a, 0x15, - 0x53, 0x41, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x2f, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x52, 0x09, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x22, 0x58, 0x0a, 0x12, 0x41, 0x53, 0x47, - 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, - 0x61, 0x67, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x50, - 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x45, - 0x58, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x45, 0x58, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x12, 0x53, 0x41, 0x47, 0x65, 0x74, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x03, - 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, - 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x50, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, - 0x09, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x09, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x12, 0x41, 0x53, 0x55, 0x70, 0x45, 0x78, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x65, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x4a, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x22, 0x49, 0x0a, 0x12, 0x53, 0x41, 0x55, 0x70, 0x45, + 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x22, 0x6b, 0x0a, 0x15, 0x53, 0x41, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, + 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, + 0x12, 0x2f, 0x0a, 0x09, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x43, 0x50, 0x4f, 0x52, 0x09, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x50, + 0x4f, 0x22, 0x58, 0x0a, 0x12, 0x41, 0x53, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x22, 0xaf, 0x02, 0x0a, 0x11, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x50, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x75, 0x6d, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x58, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x58, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0xdc, 0x01, + 0x0a, 0x12, 0x53, 0x41, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, + 0x07, 0x43, 0x75, 0x72, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x43, 0x75, 0x72, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x67, 0x65, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x67, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xe8, 0x01, 0x0a, + 0x12, 0x41, 0x53, 0x55, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, + 0x6f, 0x64, 0x73, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x65, + 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x65, 0x64, + 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, + 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, + 0x16, 0x0a, 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x44, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x12, 0x53, 0x41, 0x55, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, diff --git a/protocol/webapi/webapi.proto b/protocol/webapi/webapi.proto index 40464af..89b44e2 100644 --- a/protocol/webapi/webapi.proto +++ b/protocol/webapi/webapi.proto @@ -692,6 +692,7 @@ message ASCreateExchangeOrder { int32 TelCharge = 15; // 电话充值 int32 VipLevel = 16; //VIP等级 int32 TelId = 17; //运营商ID + int32 DPrice = 18; //消耗娃娃积分 } message SACreateExchangeOrder { @@ -737,6 +738,7 @@ message ASUpExchangeStatus { int32 NeedNum = 6; //消耗V卡 int32 JPrice = 7;//消耗的金券数量 int32 Cash = 8;//消耗的现金数量 + int32 DPrice = 9;//消耗的娃娃积分 } // 返回 diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index e8de6e4..431b941 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -516,33 +516,45 @@ func CSDollChange(s *netlib.Session, packetid int, data interface{}, sid int64) if p == nil { return nil } - bagInfo, _, isF := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ - P: p.PlayerData, - Change: []*model.Item{ - { - ItemId: msg.GetItemId(), - ItemNum: -1, - }, - }, - GainWay: common.GainWayItemBagChangeDoll, - Operator: "system", - Remark: "背包内使用兑换娃娃卡", - NoLog: false, - }) - logger.Logger.Trace("背包内使用兑换娃娃卡 bagInfo = ", bagInfo) pack := &bag.SCDollChange{} - pack.RetCode = bag.OpResultCode_OPRC_UseUp - if isF { - pack.RetCode = bag.OpResultCode_OPRC_Sucess - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - dollLog := model.NewDbBagChangeDoll(p.Platform, p.SnId, msg.ItemId, msg.ItemNum, 0, "", msg.Addr, msg.UserName, msg.UserTel) - return model.InsertDbBagChangeDollLog(dollLog) - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - if data != nil { - logger.Logger.Errorf("CSDollChange err: %v", data) - } - }), "CSDollChange").Start() + for _, item := range msg.Items { + if item.ItemId == 0 { + continue + } + info := srvdata.GameItemMgr.Get(p.Platform, item.ItemId) + if info == nil { + continue + } + if info.Type != common.ItemTypeDoll { + continue + } + bagInfo, rest, isF := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: []*model.Item{ + { + ItemId: item.GetItemId(), + ItemNum: 1, + }, + }, + GainWay: common.GainWayItemBagChangeDoll, + Operator: "system", + Remark: "背包内使用兑换娃娃卡", + NoLog: false, + }) + logger.Logger.Trace("背包内使用兑换娃娃卡 bagInfo = ", bagInfo) + pack.RetCode = rest + if isF { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + dollLog := model.NewDbBagChangeDoll(p.Platform, p.SnId, item.ItemId, 1, 0, "", msg.Addr, msg.UserName, msg.UserTel) + return model.InsertDbBagChangeDollLog(dollLog) + }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { + if data != nil { + logger.Logger.Errorf("CSDollChange err: %v", data) + } + }), "CSDollChange").Start() + + } } p.SendToClient(int(bag.SPacketID_PACKET_SC_DollChange), pack) return nil @@ -554,25 +566,29 @@ func CSDollChangeLog(s *netlib.Session, packetid int, data interface{}, sid int6 if p == nil { return nil } - pack := &bag.SCDillChangeLog{} task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.GetDbBagChangeDollLog(p.Platform, p.SnId) }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - for _, log := range data.([]*model.BagChangeDollLog) { - info := &bag.DillChangeLogInfo{} - info.ItemId = log.ItemId - info.ItemNum = log.ItemNum - info.State = log.State - info.UserName = log.UserName - info.UserTel = log.UserTel - info.Addr = log.Addr - info.CreateTs = log.CreateTs.String() - info.OpTs = log.OpTs.String() - info.Remark = log.Remark - pack.Info = append(pack.Info, info) + pack := &bag.SCDillChangeLog{} + if data != nil { + for _, log := range data.([]*model.BagChangeDollLog) { + info := &bag.DillChangeLogInfo{} + info.ItemId = log.ItemId + info.ItemNum = log.ItemNum + info.State = log.State + info.UserName = log.UserName + info.UserTel = log.UserTel + info.Addr = log.Addr + info.CreateTs = log.CreateTs.String() + info.OpTs = log.OpTs.String() + info.Remark = log.Remark + pack.Info = append(pack.Info, info) + } } + p.SendToClient(int(bag.SPacketID_PACKET_SC_DollChangeLog), pack) + }), "CSDollChange").Start() - p.SendToClient(int(bag.SPacketID_PACKET_SC_DollChangeLog), pack) + return nil } diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index f3b4cf2..64d4dee 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -914,6 +914,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen TelCharge: cdata.TelCharge, VipLevel: p.VIP, TelId: telId, + DPrice: info.DPrice * num, } buff, err := webapi.API_CreateExchange(common.GetAppId(), pack) if err != nil { diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index bb2e4e6..d91995d 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -3375,6 +3375,7 @@ func init() { } addvcoin := msg.NeedNum jPrice := msg.JPrice + dPrice := msg.DPrice var items []*model.Item //V卡 if addvcoin > 0 { @@ -3384,6 +3385,10 @@ func init() { if jPrice > 0 { items = append(items, &model.Item{ItemId: common.ItemIDJCard, ItemNum: int64(jPrice)}) } + //娃娃积分 + if dPrice > 0 { + items = append(items, &model.Item{ItemId: common.ItemDollCard, ItemNum: int64(dPrice)}) + } remark := fmt.Sprintf("兑换撤单 %v-%v", msg.GoodsId, msg.Name) if player != nil { // 在线 diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index 1e779cfe0e5f1a48c382a5cc4bc8ee56ba01e428..3f6e2002ab73ac790f1052d429fe7df74a877c52 100644 GIT binary patch delta 15135 zcmajGbwHDS_dh;5q(PJpY3c6H5fUm=BGM%dl0$?6N(dJ*T7-dsbPAGFk;Z{^h?F!a z0t&+S8tQ%D&;5Cx-;Y1W2HX3*&pEF+?`zu^0Q)YGEi}0kic+T0IE*->aLDWDsQ&=xz)P**C)A_~K=r#a=yBON zh;JF}Ua=&)H?uw#54)mq)}@1fOY>$qD|mikt{b;NBh9>#^+xhzikD<6w1jD2)%#U_ znG?5g?0EHIc*V|wtm?XkPBdHFxG#3i1Q)Ka;A!WC*O2J&+HZxh?1pd-r<^7>n6-Ne(v`9P_R@=F1V#RD026;jcJi}GF zkYqw-I${7m7Y`foGQC`jk9Ug2h0wp9s{|XX{z{OT2%GrUUYL8^SA*%t7Bukq!$^x# z7|-{Oifl*VDnTjCHn0J!%X;faz?~`ix<;ztiYXf<}5qXLi*7)8}x4q^Y62;2L#ns+8r&TswUH9t3(qR3Ee$+cI5vDA4@ z{jnx__W^20MXyw9q0qZY)T@fs{jnGFZY{sQn%6WKtAiL7QsL-dr&sT)yQj?2zd;%k z8QY4NBwP!drploD64Arazs1xWIXRoJhnNo?VBAI#XzrAMk$E8CJF<>0%EDHcDhJH{ zn{L%IX22gy5F~k4-+rjwbSs^eN^p#Ug6Pr)v3l1V^Kk8^o4OQ4=`MKe3s9?v+K5>p zpCyj|Z7}ZUJ!oOe+B-jaqLJW-qBdb3MqGNkwDzzrl6f%ZCos6o+<4rwSXThK=t^x% zCC;p5OC^dZRKIUaJNL_HSIAgcZ$RTiRH;(n-X{&j0o}2~7!I}%1rgz^!K9J!4o1#ZnNQ2E^JI7d(YSA)cUEwbe&>Z<_`Zcv4^=^DDSmSIpE6jOocxx)?&KIdS#ai?# zr!aB$p``8att}bznl=nkE$rE^q~)6e-2HVXO`~pF(f#1CJUq^1ljig(otM<&42>*! zUiivbM~r$UBL zPrj%!wx;X6uJ%y$y|uL}lN{5Rq|T@%%iNXzlQg&}#&fn3e&s>}>!%mvl$R!MnJJNk zx+{cd*Q+(UZakQrr^yp+V866oAjL?z^sFkr%ZifU8_epBU}W(^*Zg>#1)*QHFYFe2 za4(#*Jg4B^P)fipe0GP;tXQJ58F?+LG@0b8CBm*`Fr_<-=P7legYK}^`CtA%6%-D2 z)#583H=^T$nS|&rn|=NSzoKeS(_qweH3BKhdt55bhw^K$q|;r_Fi0p!W~NPimi#3F z+PcA#tKzVEmBP_xdqpPsc|R;kol}b%0E#C`MwrA)dlRERMaD$&V2^Hl8O?Cd^ zF7B-feZoJpKFJBHEy1sJ{SLE?33E$uF%=BcjZ9l@Dl|1_N_Vt1)$P5I&MhutGw8T^ zmCA9iT11Q8x6)^cU;fO}yRbl0X?mfn-R9b3ZA&sOS{S2>r8)VFv@tRj52NfHNWRH<{>TVDkKwsI)37&H2XF{w^p>5+D?96L%>+Sb}e`U1J+ zS4JK66>aw9D>2#!dXztoyu%O9YsQWa3fFekVlO9%sq^QkS#W=}8bcyA%#c8sWHh0< z0IMKOdsnzwhUTbocuO&vvz(&U1UYV9N!_?NBj2lyWacj>?sq@_`x6gJ?}xFpnUVqlQH+n6BuT|~q> zo@9=+_ns*C)Yw;K(<#o^i&17<(jOVTuv#=6Dav%0*4-(NKJ2%-c@K#b1uVXp`4IQ8 zHZrbmH6^OH2$Eg*>NMBWn4D~Imr;6Su3qH9RG9h>J+%P-4Y^LnShxEpVm-qoJ5cOFWPs*MZ5{+OaLbgivC z{qXCuQ}HzE+7?IaAZVGKRO{*5}5T+0=FWCO-UNe9_A zPGdC6z}#DwdX1g1gN-T@<_fv{t{hlj_fUg&WTMXLitIkTbcAfCF2qFlt#k-}W<=Ss zK9JXT^zVi}fTy}LwYiKBs#8qOsSUY~OCz#e%n66oRy0M4ZRmz75{+J#m6Le2@Nb#b zP^481!)CK?x3Lh|1X@_%8!HxHTWCgKBQ4JQ7Kk{Jd1puHqa@m^zKQl5$GM=L?u+J3SXYIn9c?m} zY4Dn!HrtTaxNHbhrIo9CzI!&08zO6}wm>*U--DxoCQVQv>O2?k^IT}aT+FpA#}f;x zUL~3mqqMU8l=PT*Nv0b>Bn%9=KGE43_#ML%xhpUK>~{P+ehwUIn7J(VD}{ith$pM1 z8+0m8KXGkPGov<4k!vMYzE9uHLa)B{&Pr)1l_u2H(wy>nG`I84b}g_;c|RbK>^Vgm zSK*E3+8m-*KP9r!FPUxOQ&tG!@3j@(gf2neFX)a%z68mz`}P!k5K3t0ZnGKJd#%wl zXL?2SLXWR<6j_>E8Wk*}<;y+93)da?>w%J;?_BT2`%7iH7_1raKDUhA^ALaSH0R)) zg>2!=$$oeBnN`|>S+nEX?l(^!f0*tP4^0bxP3)Q>2|1@25rU2|L&h9A*XP;SGWpqK^3U-MStmh`N-9mNTFA9k9J{hnQ2eV<+ z+$-BbXMAKH40|B4z{66z!LaZy4=aRnY)0y?pNW2=ZPVj9Cv7kOE5>qZ4KjYFoYA(< zPKBWcv#?rRPY#y^RP`%cA+c%wP*!)za;#|E`!})~PNMN`nXUWe+v-Th1f8idFTM2&C|NgpSo=7; z*^%g@_H^~4XCeN!0~2lAWF0?u@$R_;u4$gWA*lvp0IG8vD?Sx`+H&j3sEyqGa7w2Sd&6kSRR= zgvu_CL7CCF)d!=*RxZ~rYY8?+EqXe1qV6!he5lB{{E*Ql4qO|vv@qamdP`W!&6psl znE29W5u7Br(QL|L4YO_I(xd~JjNcGdN78KwW3+8xV};a)Crj@8ZrP98eGPh@WxI6} ztA>y3#%)#8>AR%8Uz+Q+nUVi1156aAk{iIo73Wq7np?&V|j)m@N+og6B)Ar7J z$lx?c!v5fiG-IEx{~M8+XvbL($ImylqHTi)U?ytrj9QU`flWarD8)0<>6MlwucgG% z#7)&7SR2#mjL(xsiiA#~1Lb|(%3!apHk4;FEfyWSr)uJDi72l;vQ2LAV+6onqpHQl z(Tc_A&2Bkw_BdYm(TGm1GpRHq4yO;c8dEd?wAf^&O)BlLJg)7E)D5`d zEuGdDS2t7=oFC*A)G{RZ};FR?rRC#QyaBO;T9J_{in$1Tmt^ z^r)7nGLBO)@v$WHeBG_J4xRf6p(uYq^Hkm3Go;y4Tj`1B_ERy+_%ABT8?M{Uhc^eX z^a_~d__G=AIXj13Jp3TB0`s4i#(iPUOpkQOC-Qrd1PUJ5Hb+v(6)q6aPWzoyb_kf zz~zT>U}zI>FByd`{KI}nf;MB z7s^yDboYTERR}60D&@kFc|-rjELuftpUA|%HMlJKn~IlmzFKotlkm!YkE-VKt+=`Y zv{fo&2vX?Emd|=FCxqoj5F;#Pw4*%4Wb!9 zxtz)@ty(*uv$9#jHl$BJJo}~}_FZ>AnkA3?>g1+6`;TgFFQaUqUYLQw(%Lt~FcL1y zhz4$#zl{f;GEkcDN`E#Nnv_@DE?v7FETy-azWFR+T)+qA@bmLEmXgOFVS9~dpQF2r z+mEx(zBslYE1iA!I9*fvIeT_Ar15>)V;*+Y;=31i`dw;PeyU^sWa#X;@@zxtU_Opv zE61btT!I93LFb0m`tEQX7Szvryk){}e5GC7?mrRQjMMZW!faf(F%3;GI6tm)(o-W- z%xJjqtd*I%dDPI>cR)aaD-aSQ_d`fk7K+Kw(C6@RzB+bzpn!Q&E_kQ zr?XH_=TD{6V~?|evx}XnLxmr?oXaFU*Uv*^B9p@eTeDcO8<`=mu6vH)6sgms_B^hl z8ocIGO1d30j64{9z|gSkG5Wzpw8<%ZH_FoU8YUXWz>SgCgL~MGV{o{YkBQyAi8>Sc z*!F@2O_R8>bMNUxp94s)2S?juI2!Vz@`N;ejm?BTsE2z`=xpekOYfjT+j1fy4AgI? z@cc}0l$W4W7B|4If)BsBy)JA;X*1vA(mXz=50S)#xIO~cmwN+TT3`q&;Keg6dWdv4 zn6-C4x3`=n$f)%SV;DDdk*&^kWcE2}l1+7%vpOB(6(RY&kHO>`R2?%FJb%c>oY`(< z(Wj%GKqMd?DR`Ew4|~NWIqSNk$uX&cssPnPU#@!%I^*={`!4}8n>yET?m&*U0htpG z9s!Px7T80(`%klSpy2xI#w*!1BdJL*tS}Zjg4N@xG5@@L*^cAAvRCR-E(L?GWbl)e z(@y%Jt!X&FSW=n@+DkE_&VE067H6^D@&td%28~EX_ z&wZ#%K13~61X_N+H&HJ}sQqnmWG`kuVctb5ZW$ExziMaP*YYDz)x}w-UF2bV=w6Sv zKOd#8%YA5$Pp<*YhO6HH1IEP>*GIM3{nVX0aa6d{HV>Zg;V2vDWNDWRf_W^e2B0c( zRFq3uSf21sV3cI^K_sB~`AsioG#*VIcdBMiz1%0J9r|57Cf9zqEP~E|AoD%!z z-q%={KXZ=;9X+!sKH^aXTVXFQ-#sX!!P2%D`6wZ%i}TfJE?FGB`-zlG)&r^nr>7L= zp4UE8`t~>sjp_V|j**oLX%l+sD8AWj53w|t9pTqO)|~xfR&d8mwjy} z($4RFl`AuC2Iv;aUJ>`ik=jrdes`b0iJr(Iu;Z&#T>1I^owT(5$5vz)sDFmW0J|_f znR9q$z}Iqp9^G~lAM2gEan-j(!H+Xa;(L6vL-uPavN|gNK<1v%5uP7A`mC_W z<80?_e;RgR9d>x>?4a>%I`8`-uGAFL8^-^wwr-#VRAS7W&vQzx5tf3j7-7e)&akwTLo8M3zFv$is) z19@i~?WdJzpT^IYl+M6M_8)Jx*g1KCvCvj&e~@eY!xE;nrLy#*PMk3>db~<3o<{~a zLM{3j)XP*9oKNLTm;ETmZMRf)6RL!yaRbe3rcu?`AB@?~OL|#OcX^G^&^9ypZ{V&F zB;|fP3OM^>{qsQSq_O?9OzC**>&!8~V~6YL@Hs(q-t{~~>P-s#$v zfv-~0ea0-$gQZUgtWUe=PlV3aD$mx>j=x!-9KWlk>5H6O=fO-a>B#frTR`$^6Jy#5 zO@gj&pI12SuK$Eh$X+&k+Tt#a!fMLmRm-mPaXW%>JYrTlf9Wci`{0Jx77Bpl`;W)gXUAt0GHFEiP987ue@>Hu zr-{FeLZ-+z33crvanIxEfOc7){SMgP!q(yJHIJWhia&+I!j7z7w98*z<=L0pC3`WP z$QwDC>#S;o&_mUJ%{Cd$c{QdD1Ms2-QHLLm)vPptJD{5oWa^=Uhs%sgqKY8T`id~e z**e#qh<2-?2ckO*^*zmN_eSeYDCWZFMrnTPUVUW$azb;;WnFlhc}vdkB`gsv3SUN$ zL6>9mIL)`^eB`B=ZWUcpLOUGyTkQ^x$yJ(f#8oVQ2uIG1fn#YYZoYo#W*wH#E7P7) zAiq8|(8)PUfy~_HV?L<|jP^VRUfpVTjr>Y#gTK8RojH+>(;LZUJE!hKT66IZ?@3?N zIsM_@Bda08Df-V38kXSWaIV2OlS(aWE6t@ zHdER^CSyd;my@H@HTGnVY4m!QF-30*l+c8)ftTAvmaG0_;>}Z4`}_UolC!A+)JV~= zLpBPe#ITxkpV{p0FiuLEB1v*%eST5{p9<83Mb5qBL_b}=z;sma$Xi4;cO&GHsS+8SRFXlCFu;tPcYEKhSmtt@~nRz?^P zG8wZDUrAG1TVc9^JG3P-P!L%!{$f;2e}euK1H`}#GQz|XMTMk~NGWyi)k#T!3W(!L zTVghP1v!V8;tesG@|9Yj;*H5F$rRNFuZEOSJ-hz95=FV{B}G)oec5~A#?bpvRBOnA zF;xS6_pZ}mi6pZADj+Su32PijXL_fk-HWgLKvO6#G2x7ZA5fY6k|V=-I=yAFy%6Uy z7IY&?vvqMq=`}M~$k;a{=>~~NkL_#|+KyLgV-;>ZCVXsqB@;#2dTWSL)yMdZf?3W66xM=w(4nwz${ zBND*tLs0vhox`s8$mr&tyH;oig_@h-_kbs&8xbjKeENTS_U-j!SY?SiuZoy5FQ+_m z;aEJFmY2vv?M~pYf-r!vc%IehD;fouaB;z!T4qO6*fu3~K@cO6(2;Hf2297k*+Dr| zd612TATn^U!>pmM&Ql5?wkU4pw!h%z(@4;|n_p=JmPNq^`ey6_1k?R;0^`4XukK8$ zOg26vbKW@Zlr%~bn}5RVX$rJ=lv?Oiu+{Z*p6*)c83ehk9?q+PH-!Af6Cu}9eO^L) zC}$)uNOx+}o~zdl?gj!p+$?g!+P_FWdXc_jJ*PQtNl-U9RZpSV=2BQ?NnINHI|_o_ zPFc+6AwB#usjD+V-?jKD+r%B}YAOj_W@WO$dbf}%7rm`%C5IP_7LE8#Fivgfb=zXn z%QLOeqFlX_t-ea+ej6+t?ah8?4DBhD*O~(2zE!B4_re{^eQO_6$rRqy+`pk;PT<+( z)_iq`3u=D?R9s=u{6(YlJOSR+>*jxw>@cLi`SW~R=wozd4a5Pe@*n7mP@-34bN{`P zB5;X=1%|wCjM-8lJ971*<29?U&Aqh*mRxR!Ob|aZ89t>tyu_SP30&SApf2(-rJ6gH zGVr}}J!d+GK(4$5tkD}qEk@%8DoyNC682AC4WMsws+as#x>#dCTk-X!12+Fr8 zvO(z3GRR<+94DpOB;o6Jp4-0CfWpQPZO3blY!Voh&+dVUG4I|8EKB^M-E#QLFrt4M z#=r6XT-)QDYcFeH7P1^_#k8OpR4gcVcTX53Nxu)T5&cnCjxGrA zgIhodpVZBdJo@N{gAZEHE>$D=(2_zug$!dIWPOSO9zKu2D*lNjGzI_E;XGzAD%<4x zBl)ZL7<_?oDT=PUG4bpLMD^-m{P0(L&#sql25ACm+&r*zbdnUdEE4=)0JCY@4n60s zUbrZdsw?G@dvA~Hxy-;*pe!9$-y33$$7zksah{+g0?20LoBfHYkoLG*&dCk+m5S#b zFobg2ulJ-t`HY}D#{@hA=RG_b8055Zjq&&|7VLwp%`sK@oALlJ=GSz~nt0w+ z0>Y4P6ojFl$rB!ZQva#&&RH--Ps&u=4D;FD-OUnRgo0u@(kro&$VBbrgRzf+1g}QE zddUqqE7B#)n+jQAd_kWLijndp;~i|M3`E9K>U{g`$p6lgH}(4wbBCav2rlr(2Zw+h z`LyGb33B8wieMXq6sax#FLv_>b2*+QhUM{0neoP%=jp^Dq=>7q= z0~As&jINWy--3Z2^xZ=7Z`FS@f)g4WjRobk**;ngOoXu!nZQteRi6eifOGvPo?}m} z^1Z40E`Wkz&w&AqdWkD&oc~>jF_X^WgXO>M2vq7^ zX-7<;*N4de!+_hm=d)qq^&gP!-bVeD<^~X-z$^zR478x*Q!Hp-Ycc&TG5WvuhxV;UUTWu<}X3$ZSTLKQ)}{14Y^?1pLl zmQB62vXJhbA3SB{&hS-iotK-qK@OW-@<{cNT_0-FX_{UftNVIQwMeB#`yqf-S`_BvwIkI-qE%G zfSJ`F<*gV8udfK?D3oC2pZ79v^{e4F2;aFmKD+)_$ugvC^em@a=%vh(CwRpHoQ4Un z%#5ZK)LpkPEH7e3mUJ302sdHopuOffS5RPwNerPxUoD|9SLfzMjJ4&~u2#A{I(^b& zcw1M6CoEHUi^zodhxUn;Gq6j}b$GZvlfjTsTNo{i=YYoB}m zFFANsael-)KCKKp+TTAq9a!u>^l(lsh#!MAEXRabBgan`y73(mePu(q}xy`Zt6A_9KSOYj3D_uY0IzKWHS90rW_u{y@X`b9PX~x z7pJR!HkqW;foJu~e+CbGc0nQ7t z8=o)oad);3UzfVxbyE`?BS;g?4WE1J@mXOA*X>`7E&R|B_p$1Hu!(lZ3^saSFr<1r z25O$=TI8o&ZnM=o0nh0hjDJURpZq_OdL|Nd1nQh1D>Z8sud=FA_gZo(8zdl|mOiV) zv(H_NS#2ydJtr{Z);dZObI^JNy9o}japi@dTy)P?zP_Jfo~2AT09QWBN9p92KKmcohdLa-*SDq#@^#C#8q9g9!fA znA5CfWbjT-HQhAR@PVe-4bC)uew5y|CN04(;L`Gu3JWvW0y9)t_ce__4yC^@uqCD~ zYb!(V5Fn_QNCSAv5IV#nx&*rv6Yo@1V)Bkgxuz{Ve);Enm^YRQ#9^(Bz+unt#Xj*TVzM+~PEL%E zM2u;Zk+fEhWSv>8YcSzXS`6knE-#8{T9(3S5N7D(*-s@B)kdp9Pyss2a)yg;vn zE-WJO3$+2HMe@{L6A?YBex<0&)Fw|l{T746c7Ks*e`c3(nFq92IPsBy-ZF*57T!eJ zux#h1#TA6idmNvUxp%w!$+`!#-wC2+R_;_NFu1#VQ>@I`Ic5rf3@*qh745H(J2bfr z5akpzwulC}Gxm@CX9XzC^uBsYLa`9Y%3r+&7Npr#96DO@K>S=@5zSnK-!Y)?)i& z>vY+nI`ASFV5ZFgtcvLab25aygmQ8bX6)y=p0}Kh+~cDN&YuOCE-+?3O*W3ZlQst= zY10Gbn#?>7_GG_ba}?kU#w++?F8q)t+{{=(_;IBzC$#d84zH%Lt_LuzM@JQh)?-s} z;E2CNON!!`3{Xp?1L!rGXsshd*+H=2{QW{sPAC!3tH&Z5$7)MVv{Fdf|I7yQX5}8? z`Q40CNIzAd@SmJG1c~5eGjeqG10i4p)dupUD6yGo0arN< zu(Ln@qqF7{;-_LCd}8ZuRtDYpP%n5%YJZqhg$G`Dv*C*tb`|Ql9W_SeFi+pvAIpr$ zI?#j{r(4$S;B$x9Un1}sYnWkLX6=93GbnD;aR`#x9$^)5it7no`E-1`07obaVlOZ0G`Xz7pv z#d(LwK!m>dd8|hnx-Uq@0vt@}9Q17vAI6iZkfv3IG!}@_CD!rUN^2Cn1XNxOABV@-Y;WH?=%qC@sM{sA{d4gf7e11PA_QQec!LRk*p zA?deq)DqTJzmR3{yR^JCTnP#AjH#pUIA84h>|h;biCP4JdObac-+ZbSEvD|E#z092 zAsF%U?ejL;exO~C8!xgbg%h3Ws zaw?>t@Z3Cyq%){Iz;}5@U_?PQSw#T|hhBsct&HS(Vo%iXd5Cq%_jA#MXc?)xmi@2d zL;4HuUNDh~Gz-T1@1>W zVa_W~kh%NO@~<9rlK^lHZV-U%K)56!J_u_iJ8i&J)(G!hA^ubXU{tjOZmY9_$QC04 ztByf$5EW3S%mRGZ=E1@JItkFovje+I$}qaW)KO@J=&2?MVI7QY*KN#+~A})9Gizsi@xKsC6_`xS9DONH+KYVFV-G6twgzzewv|GL(S@NFH;k|JGU9l!y zA2fJZ?*_ynb~!a;&;(;bou6&r_Ib)U*<%Q)K!hm_@LHV#xTq&iif?=8m&ln<>|;nI z3ZjY^TY(6u)idDyCs4#NKmmlUKnpVp75K}V$E$&D4JJH7)9Bm`AYYOF!o=kJUVaQ< z#w|ffGCVIyfVMa&s64>0-xsOxgnj>)Ozi`6O2#l<*=sWX_S;j^h@sy_!653qC^KAb za9&95KE}_@ss1Z@_B&^4h#ac7u18*6gWEE%phum4IRTyJFHXulfKnHk>0+=*RssC^)7rw@haE)7c?IZy{X>;Q?$?o?9 zAEo#KF4YFCT3}aG3ucd4lgH}{IXVLymo{O^StN{^n*}O)Xom#QSLP zKCYBE4JJuOf+C6DXhQqOL}5=;W^9W?95fW9)6 zEYn-Oe;HSkMNF`3`DrR(sK==mJ=sDg8TrzGn82rx3xV0Bji3n5wt$obXx}mW4S;!7VGQjq{h=MWcZ|0eC@n3J$~%Mu$~s)YQ&9#O`CE#W zZI51B+r8aw(|Ib_*;?X|$O;0{=E%_tTtcv2E##5uApRk7!t+s(Zr(CKs(kqDE2g z#^6$*K1$nTk|qAE!6jj;l+9(WV{!NO)cqZcA$0^a$n9IAbR?%1Kf%I=j;pi5n|a?o z`Y866NY2C20jHAyv$c{`cMF62URt*jv?~(34EbGD>>IiAeCzI;n6nGSny~2~qi*IHBh|~9}w0uOX3eKAVM$E?-NSSC^&z7x% z4*5e{OclWac&dfaR`pPX`mI0!D(BG1^C;s1gFf%u`e~C%PVj>a37pYh?#^|sON_OY z@xci%T?Xc_689TBs`dNtP%_qHQQb|uk~aB-9k^!13zH?jU4%3>hMV1cMj-a_C8Gwga zHYBfgbCn67T%Zu?W9xt6$5t!(B%@x?ZVX?vmNXp!Hoi9duChlxo9=5jJ<3{*Fa2Ec zi1JKF9?7RF{a*-!-W09=XreglnVOEDg+}67zKCM@A9oE!HMRY08+@4xPZad1{jV2jdeC=j{ z<={go+?UVnFgfN8sYS8fO;badZKyi9vx>P|y?a4w=fEH+Vqy8?Ea)2k5Pr63zh*2V zo=U`mW5^91Gg%twfJ6V9Kk-hf0_%8=`JFT}E;vHK@sa~MZ5vnJp!aJMI@n+w;?E|p zNbB;8XDp}K{A;Ho4DT^JH7Wl-S<%6tqe3ELkpND=%}!rs`zYn??hkXFw}VWij~9i> zkmnyo`m08ln%#-})2NCKF}WAZRy$yJM`I;-=B zHp|ag#=gz&6%RXIn~shy9{0$bL(g9chMk;l1YFx;ZigMuW_2g-%quFi9-o>HDgJ!l z9qrNFZtZ`%?%2LbYe^jDbBGEcAId%5N1-kawVy7a0(RPhj`w#D=fe(BsN&V3wo||( z%^J3sZ9u9R5^{L7H#?FSw)ZMKuM-Qu8)-Bol>2^ob>CXZKxpu@BYPN>G+Js3mUlS1 zyRcQsJm#Tvx;}fDmm7MxOInU6q*ze7(*4E6Ir=Ot=)}`-O=OLnIWL!a{_EL~gN3be z@_p0Y+aa2+15$~J*G`l^uS|Sv3BLbh0aZ)xp(GzN(|Q~&Ztt6*_Vvr|&yneS4WI`v z>@ALTH}2#%n{Fd(rJ`?thJ~Fj5-oNs$y*j!pPbc>ndFFIzjz3AKD-D#isHk?e*l31 z2GO*@U=%$TAFvh$;GKW{6nFra#l?K@5om|gVhI6baAksMTnOa8n-DM6&fdDL83!EgnqgAl@0iqaLtT{kEMiLv(90-X~!g>R|ijl{94t$ScWBkWAB_Wr= sZ&zY|upq49?I{WcjD9rQzANUHq{r~^~ delta 15119 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 Date: Thu, 19 Sep 2024 17:13:14 +0800 Subject: [PATCH 44/46] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=B8=8D=E5=88=B0=E6=88=BF=E9=97=B4=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/action_server.go | 272 +++++++++++++++++++------------------- worldsrv/scenemgr.go | 10 +- 2 files changed, 147 insertions(+), 135 deletions(-) diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index b7e9e7c..183f495 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -38,142 +38,148 @@ func init() { return &serverproto.GWPlayerLeave{} })) netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { - if msg, ok := pack.(*serverproto.GWPlayerLeave); ok { - logger.Logger.Trace("receive GWPlayerLeave:", msg.GetPlayerId()) - scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) - if scene != nil { - p := PlayerMgrSington.GetPlayerBySnId(msg.GetPlayerId()) - if p != nil { - data := msg.GetPlayerData() - if len(data) != 0 { - logger.Logger.Trace("GWPlayerLeave p.UnmarshalData(data)") - p.UnmarshalData(data, scene) - } - - switch { - case scene.IsCoinScene(): - if !CoinSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { - logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v [coinscene]", - p.SnId, scene.sceneId, scene.gameId, scene.gameMode) - } - case scene.IsHundredScene(): - if !HundredSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { - logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v [hundredcene]", - p.SnId, scene.sceneId, scene.gameId, scene.gameMode) - } - default: - scene.PlayerLeave(p, int(msg.GetReason())) - } - - if p.scene != nil { - logger.Logger.Errorf("after GWPlayerLeave found snid:%v sceneid:%v gameid:%v modeid:%v", - p.SnId, p.scene.sceneId, p.scene.gameId, p.scene.gameMode) - } - - if scene.IsMatchScene() { - //结算积分 - if !p.IsRob { - TournamentMgr.UpdateMatchInfo(p, msg.MatchId, int32(msg.GetReturnCoin()), int32(msg.GetCurIsWin()), msg.GetMatchRobotGrades()) - } else { - p.matchCtx = nil - } - } - - // 同步排位积分 - if scene.IsRankMatch() { - if p.IsRob { - RankMgrSingleton.UpdateRobotSeason(p.Platform, p.SnId, scene.dbGameFree.GetRankType(), - msg.GetRankScore()[scene.dbGameFree.GetRankType()], p.Name, p.Sex, p.HeadUrl, p.Coin, p.PlayerData.GetRoleId()) - } else { - if model.GameParamData.TestRankMatchAward { - if RankMgrSingleton.playerSeasons[p.SnId] != nil { - if RankMgrSingleton.playerSeasons[p.SnId].RankType == nil { - RankMgrSingleton.playerSeasons[p.SnId].RankType = make(map[int32]*model.PlayerRankInfo) - } - if RankMgrSingleton.playerSeasons[p.SnId].RankType[1] == nil { - RankMgrSingleton.playerSeasons[p.SnId].RankType[1] = &model.PlayerRankInfo{} - } - RankMgrSingleton.playerSeasons[p.SnId].RankType[1].LastScore = 7500 - RankMgrSingleton.playerSeasons[p.SnId].RankType[1].Score = 7500 - RankMgrSingleton.playerSeasons[p.SnId].RankType[1].Awards = nil - } - RankMgrSingleton.UpdatePlayerSeason(p.SnId, map[int32]int64{1: 10000}) - } else { - RankMgrSingleton.UpdatePlayerSeason(p.SnId, msg.GetRankScore()) - } - - } - } - //更新玩家等级排行榜 - LogChannelSingleton.WriteLog(&model.PlayerLevelInfo{ - SnId: p.SnId, - Name: p.Name, - Level: p.Level, - Exp: p.Exp, - ModId: p.PlayerData.GetRoleId(), - Platform: p.Platform, - }) - //比赛场不处理下面的内容 - if !scene.IsMatchScene() && !scene.IsCustom() { - // 破产检测 - sdata := srvdata.PBDB_GameSubsidyMgr.GetData(GameSubsidyid) - if sdata != nil { - if !p.IsRob && p.takeCoin > msg.GetReturnCoin() && p.takeCoin >= int64(sdata.LimitNum) && msg.GetReturnCoin() < int64(sdata.LimitNum) { - CostCoin := p.takeCoin - msg.GetReturnCoin() - - logger.Logger.Infof("NewBankruptLogEx: snid:%v GetReturnCoin:%v coin:%v CostCoin:%v", p.SnId, msg.GetReturnCoin(), p.takeCoin, CostCoin) - log := model.NewBankruptLogEx(p.SnId, scene.dbGameFree.GetId(), p.CreateTime.Unix(), CostCoin, p.Platform, p.Channel, scene.gameId) - if log != nil { - LogChannelSingleton.WriteLog(log) - } - } - } - // 破产检测 - - oldCoin := p.Coin - - //带回金币 - if p.Coin != msg.GetReturnCoin() { - p.Coin = msg.GetReturnCoin() - if p.Coin < 0 { - p.Coin = 0 - } - - p.dirty = true - } - - logger.Logger.Infof("SSPacketID_PACKET_GW_PLAYERLEAVE: snid:%v oldcoin:%v coin:%v", p.SnId, oldCoin, p.Coin) - p.diffData.Coin = -1 //强制更新金币 - p.diffData.TotalConvertibleFlow = -1 //强制更新流水 - p.SendDiffData() //只是把差异发给前端 - - gameCoinTs := msg.GetGameCoinTs() - if !p.IsRob && !scene.IsTestScene() { - //对账点同步 - if p.GameCoinTs < gameCoinTs { - p.GameCoinTs = gameCoinTs - p.dirty = true - } - - //破产统计 - //if int(msg.GetReason()) == common.PlayerLeaveReason_Bekickout { - // if len(scene.paramsEx) > 0 { - // gameIdEx := scene.paramsEx[0] - // gps := PlatformMgrSingleton.GetGameFree(scene.limitPlatform.IdStr, scene.paramsEx[0]) - // if gps != nil { - // lowLimit := gps.DbGameFree.GetLowerThanKick() - // if lowLimit != 0 && p.Coin+p.SafeBoxCoin < int64(lowLimit) { - // p.ReportBankRuptcy(int32(scene.gameId), int32(scene.gameMode), gameIdEx) - // } - // } - // } - //} - } + logger.Logger.Trace("receive GWPlayerLeave:", pack) + msg, ok := pack.(*serverproto.GWPlayerLeave) + if !ok { + return nil + } + + scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId()), true) + if scene == nil { + logger.Logger.Warnf("玩家离开房间,房间没找到 %v", pack) + return nil + } + + p := PlayerMgrSington.GetPlayerBySnId(msg.GetPlayerId()) + if p == nil { + logger.Logger.Warnf("玩家离开房间,玩家信息没找到 %v", pack) + return nil + } + + data := msg.GetPlayerData() + if len(data) != 0 { + logger.Logger.Trace("GWPlayerLeave p.UnmarshalData(data)") + p.UnmarshalData(data, scene) + } + + switch { + case scene.IsCoinScene(): + if !CoinSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { + logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v [coinscene]", + p.SnId, scene.sceneId, scene.gameId, scene.gameMode) + } + case scene.IsHundredScene(): + if !HundredSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { + logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v [hundredcene]", + p.SnId, scene.sceneId, scene.gameId, scene.gameMode) + } + default: + scene.PlayerLeave(p, int(msg.GetReason())) + } + + if p.scene != nil { + logger.Logger.Errorf("after GWPlayerLeave found snid:%v sceneid:%v gameid:%v modeid:%v", + p.SnId, p.scene.sceneId, p.scene.gameId, p.scene.gameMode) + } + + if scene.IsMatchScene() { + //结算积分 + if !p.IsRob { + TournamentMgr.UpdateMatchInfo(p, msg.MatchId, int32(msg.GetReturnCoin()), int32(msg.GetCurIsWin()), msg.GetMatchRobotGrades()) + } else { + p.matchCtx = nil + } + } + + // 同步排位积分 + if scene.IsRankMatch() { + if p.IsRob { + RankMgrSingleton.UpdateRobotSeason(p.Platform, p.SnId, scene.dbGameFree.GetRankType(), + msg.GetRankScore()[scene.dbGameFree.GetRankType()], p.Name, p.Sex, p.HeadUrl, p.Coin, p.PlayerData.GetRoleId()) + } else { + if model.GameParamData.TestRankMatchAward { + if RankMgrSingleton.playerSeasons[p.SnId] != nil { + if RankMgrSingleton.playerSeasons[p.SnId].RankType == nil { + RankMgrSingleton.playerSeasons[p.SnId].RankType = make(map[int32]*model.PlayerRankInfo) + } + if RankMgrSingleton.playerSeasons[p.SnId].RankType[1] == nil { + RankMgrSingleton.playerSeasons[p.SnId].RankType[1] = &model.PlayerRankInfo{} + } + RankMgrSingleton.playerSeasons[p.SnId].RankType[1].LastScore = 7500 + RankMgrSingleton.playerSeasons[p.SnId].RankType[1].Score = 7500 + RankMgrSingleton.playerSeasons[p.SnId].RankType[1].Awards = nil } + RankMgrSingleton.UpdatePlayerSeason(p.SnId, map[int32]int64{1: 10000}) } else { - logger.Logger.Tracef("GWPlayerLeave LocalRobotIdMgrSington %v", msg.GetPlayerId()) - //LocalRobotIdMgrSington.FreeId(msg.GetPlayerId()) + RankMgrSingleton.UpdatePlayerSeason(p.SnId, msg.GetRankScore()) } + + } + } + //更新玩家等级排行榜 + LogChannelSingleton.WriteLog(&model.PlayerLevelInfo{ + SnId: p.SnId, + Name: p.Name, + Level: p.Level, + Exp: p.Exp, + ModId: p.PlayerData.GetRoleId(), + Platform: p.Platform, + }) + //比赛场不处理下面的内容 + if !scene.IsMatchScene() && !scene.IsCustom() { + // 破产检测 + sdata := srvdata.PBDB_GameSubsidyMgr.GetData(GameSubsidyid) + if sdata != nil { + if !p.IsRob && p.takeCoin > msg.GetReturnCoin() && p.takeCoin >= int64(sdata.LimitNum) && msg.GetReturnCoin() < int64(sdata.LimitNum) { + CostCoin := p.takeCoin - msg.GetReturnCoin() + + logger.Logger.Infof("NewBankruptLogEx: snid:%v GetReturnCoin:%v coin:%v CostCoin:%v", p.SnId, msg.GetReturnCoin(), p.takeCoin, CostCoin) + log := model.NewBankruptLogEx(p.SnId, scene.dbGameFree.GetId(), p.CreateTime.Unix(), CostCoin, p.Platform, p.Channel, scene.gameId) + if log != nil { + LogChannelSingleton.WriteLog(log) + } + } + } + // 破产检测 + + oldCoin := p.Coin + + //带回金币 + if p.Coin != msg.GetReturnCoin() { + p.Coin = msg.GetReturnCoin() + if p.Coin < 0 { + p.Coin = 0 + } + + p.dirty = true + } + + logger.Logger.Infof("SSPacketID_PACKET_GW_PLAYERLEAVE: snid:%v oldcoin:%v coin:%v", p.SnId, oldCoin, p.Coin) + p.diffData.Coin = -1 //强制更新金币 + p.diffData.TotalConvertibleFlow = -1 //强制更新流水 + p.SendDiffData() //只是把差异发给前端 + + gameCoinTs := msg.GetGameCoinTs() + if !p.IsRob && !scene.IsTestScene() { + //对账点同步 + if p.GameCoinTs < gameCoinTs { + p.GameCoinTs = gameCoinTs + p.dirty = true + } + + //破产统计 + //if int(msg.GetReason()) == common.PlayerLeaveReason_Bekickout { + // if len(scene.paramsEx) > 0 { + // gameIdEx := scene.paramsEx[0] + // gps := PlatformMgrSingleton.GetGameFree(scene.limitPlatform.IdStr, scene.paramsEx[0]) + // if gps != nil { + // lowLimit := gps.DbGameFree.GetLowerThanKick() + // if lowLimit != 0 && p.Coin+p.SafeBoxCoin < int64(lowLimit) { + // p.ReportBankRuptcy(int32(scene.gameId), int32(scene.gameMode), gameIdEx) + // } + // } + // } + //} } } return nil diff --git a/worldsrv/scenemgr.go b/worldsrv/scenemgr.go index 2e19520..dc72570 100644 --- a/worldsrv/scenemgr.go +++ b/worldsrv/scenemgr.go @@ -102,8 +102,14 @@ func (m *SceneMgr) GetPlatformBySceneId(sceneId int) string { } // GetScene 获取房间对象 -func (m *SceneMgr) GetScene(sceneId int) *Scene { - if s, exist := m.scenes[sceneId]; exist && !s.deleting { +// 默认是不包含删除中的房间 +// hasDeleting true 包含删除中的房间 +func (m *SceneMgr) GetScene(sceneId int, hasDeleting ...bool) *Scene { + has := false + if len(hasDeleting) > 0 { + has = hasDeleting[0] + } + if s, exist := m.scenes[sceneId]; exist && (has || !s.deleting) { return s } return nil From 3c51f2794d65977ad5dacae979e6d27456b8d0c3 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 19 Sep 2024 18:11:38 +0800 Subject: [PATCH 45/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/clawdoll/action_clawdoll.go | 12 ++- protocol/clawdoll/clawdoll.pb.go | 160 +++++++++++++++++----------- protocol/clawdoll/clawdoll.proto | 4 + 3 files changed, 112 insertions(+), 64 deletions(-) diff --git a/gamesrv/clawdoll/action_clawdoll.go b/gamesrv/clawdoll/action_clawdoll.go index 1864924..2bdfdfe 100644 --- a/gamesrv/clawdoll/action_clawdoll.go +++ b/gamesrv/clawdoll/action_clawdoll.go @@ -169,10 +169,14 @@ func (h *CSGetTokenHandler) Process(s *netlib.Session, packetid int, data interf logger.Logger.Trace("======================token========================", token) pack := &clawdoll.SCCLAWDOLLSendToken{ - LogicId: scene.DBGameFree.GetId(), - Appid: machineInfo.AppId, - Token: token, - StreamId: machineInfo.StreamId, + LogicId: scene.DBGameFree.GetId(), + Appid: machineInfo.AppId, + Token: token, + StreamId: machineInfo.StreamId, + IconAddr: machineInfo.IconAddr, + CostItemNum: machineInfo.CostItemNum, + ItemId: machineInfo.ItemId, + ItemNum: machineInfo.ItemNum, } p.SendToClient(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_SENDTOKEN), pack) } diff --git a/protocol/clawdoll/clawdoll.pb.go b/protocol/clawdoll/clawdoll.pb.go index 7f6bfba..53d127f 100644 --- a/protocol/clawdoll/clawdoll.pb.go +++ b/protocol/clawdoll/clawdoll.pb.go @@ -881,10 +881,14 @@ type SCCLAWDOLLSendToken struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogicId int32 `protobuf:"varint,1,opt,name=LogicId,proto3" json:"LogicId,omitempty"` - Appid int64 `protobuf:"varint,2,opt,name=Appid,proto3" json:"Appid,omitempty"` - Token string `protobuf:"bytes,3,opt,name=Token,proto3" json:"Token,omitempty"` - StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` + LogicId int32 `protobuf:"varint,1,opt,name=LogicId,proto3" json:"LogicId,omitempty"` + Appid int64 `protobuf:"varint,2,opt,name=Appid,proto3" json:"Appid,omitempty"` + Token string `protobuf:"bytes,3,opt,name=Token,proto3" json:"Token,omitempty"` + StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` + IconAddr string `protobuf:"bytes,5,opt,name=IconAddr,proto3" json:"IconAddr,omitempty"` //图片地址 + CostItemNum int32 `protobuf:"varint,6,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 + ItemId int32 `protobuf:"varint,7,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具ID + ItemNum int32 `protobuf:"varint,8,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 } func (x *SCCLAWDOLLSendToken) Reset() { @@ -947,6 +951,34 @@ func (x *SCCLAWDOLLSendToken) GetStreamId() string { return "" } +func (x *SCCLAWDOLLSendToken) GetIconAddr() string { + if x != nil { + return x.IconAddr + } + return "" +} + +func (x *SCCLAWDOLLSendToken) GetCostItemNum() int32 { + if x != nil { + return x.CostItemNum + } + return 0 +} + +func (x *SCCLAWDOLLSendToken) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *SCCLAWDOLLSendToken) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + type CLAWDOLLWaitPlayers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1161,62 +1193,70 @@ var file_clawdoll_proto_rawDesc = []byte{ 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x77, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, - 0x4c, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, - 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, - 0x69, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x13, - 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, - 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x74, 0x2a, 0xfd, 0x02, 0x0a, 0x10, 0x43, 0x4c, 0x41, - 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, - 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe1, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, 0x2b, - 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe3, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x10, 0xe4, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xe5, 0x2b, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe6, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x10, 0xe7, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, - 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, - 0x45, 0x54, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xe9, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x54, 0x4f, 0x4b, 0x45, - 0x4e, 0x10, 0xea, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xeb, 0x2b, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x41, - 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xec, 0x2b, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x49, 0x4e, - 0x47, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xed, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, - 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, 0x6c, - 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x28, - 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6b, 0x65, 0x6e, 0x22, 0xe7, 0x01, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, + 0x4c, 0x4c, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, + 0x6f, 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, + 0x67, 0x69, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, + 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x63, 0x0a, + 0x13, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, + 0x4c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, + 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x74, 0x2a, 0xfd, 0x02, 0x0a, 0x10, 0x43, 0x4c, + 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x0f, + 0x0a, 0x0b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, + 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe1, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, + 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe3, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0xe4, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xe5, 0x2b, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe6, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, + 0x65, 0x61, 0x76, 0x65, 0x10, 0xe7, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0xe8, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x47, 0x45, 0x54, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xe9, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x54, 0x4f, 0x4b, + 0x45, 0x4e, 0x10, 0xea, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xeb, + 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, + 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xec, 0x2b, 0x12, 0x1a, 0x0a, + 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x49, + 0x4e, 0x47, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xed, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, + 0x68, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, + 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, + 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2f, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/protocol/clawdoll/clawdoll.proto b/protocol/clawdoll/clawdoll.proto index b8dd5c9..ad26e8e 100644 --- a/protocol/clawdoll/clawdoll.proto +++ b/protocol/clawdoll/clawdoll.proto @@ -118,6 +118,10 @@ message SCCLAWDOLLSendToken { int64 Appid = 2; string Token = 3; string StreamId = 4; + string IconAddr =5; //图片地址 + int32 CostItemNum = 6; //消耗道具数量 + int32 ItemId = 7; //获得道具ID + int32 ItemNum = 8;//获得道具数量 } message CLAWDOLLWaitPlayers { From 02dded9b9ac79a42cb266a789bf4eabd8365e4e4 Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Thu, 19 Sep 2024 18:22:35 +0800 Subject: [PATCH 46/46] =?UTF-8?q?=E5=A8=83=E5=A8=83=E6=9C=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/clawdoll/action_clawdoll.go | 60 +++++- protocol/clawdoll/clawdoll.pb.go | 318 +++++++++++++++++++--------- protocol/clawdoll/clawdoll.proto | 14 +- 3 files changed, 278 insertions(+), 114 deletions(-) diff --git a/gamesrv/clawdoll/action_clawdoll.go b/gamesrv/clawdoll/action_clawdoll.go index 2bdfdfe..cba807f 100644 --- a/gamesrv/clawdoll/action_clawdoll.go +++ b/gamesrv/clawdoll/action_clawdoll.go @@ -169,20 +169,61 @@ func (h *CSGetTokenHandler) Process(s *netlib.Session, packetid int, data interf logger.Logger.Trace("======================token========================", token) pack := &clawdoll.SCCLAWDOLLSendToken{ - LogicId: scene.DBGameFree.GetId(), - Appid: machineInfo.AppId, - Token: token, - StreamId: machineInfo.StreamId, - IconAddr: machineInfo.IconAddr, - CostItemNum: machineInfo.CostItemNum, - ItemId: machineInfo.ItemId, - ItemNum: machineInfo.ItemNum, + LogicId: scene.DBGameFree.GetId(), + Appid: machineInfo.AppId, + Token: token, + StreamId: machineInfo.StreamId, } p.SendToClient(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_SENDTOKEN), pack) } return nil } +type CSDollConfigPacketFactory struct { +} + +type CSDollConfigHandler struct { +} + +func (f *CSDollConfigPacketFactory) CreatePacket() interface{} { + pack := &clawdoll.CSCLAWDOLLConfig{} + return pack +} + +func (h *CSDollConfigHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSDollConfigHandler") + if _, ok := data.(*clawdoll.CSCLAWDOLLConfig); ok { + p := base.PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warn("CSDollConfigHandler p == nil") + return nil + } + + scene := p.GetScene() + if scene == nil { + return nil + } + sceneEx, ok := scene.ExtraData.(*SceneEx) + if !ok { + return nil + } + + machineId := scene.GetDBGameFree().GetId() % 6080000 + machineInfo := sceneEx.GetMachineServerInfo(machineId, p.Platform) + if machineInfo == nil { + logger.Logger.Warn("CSDollConfigHandler machineId = %v not found", machineId) + return nil + } + pack := &clawdoll.SCCLAWDOLLConfig{ + IconAddr: machineInfo.IconAddr, + CostItemNum: machineInfo.CostItemNum, + ItemId: machineInfo.ItemId, + ItemNum: machineInfo.ItemNum, + } + p.SendToClient(int(clawdoll.CLAWDOLLPacketID_PACKET_SC_DollConfig), pack) + } + return nil +} func init() { common.RegisterHandler(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_PLAYEROP), &CSPlayerOpHandler{}) netlib.RegisterFactory(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_PLAYEROP), &CSPlayerOpPacketFactory{}) @@ -190,4 +231,7 @@ func init() { //客户端请求token common.RegisterHandler(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_GETTOKEN), &CSGetTokenHandler{}) netlib.RegisterFactory(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_GETTOKEN), &CSGetTokenPacketFactory{}) + //客户端请求配置信息 + common.RegisterHandler(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_DollConfig), &CSDollConfigHandler{}) + netlib.RegisterFactory(int(clawdoll.CLAWDOLLPacketID_PACKET_CS_DollConfig), &CSDollConfigPacketFactory{}) } diff --git a/protocol/clawdoll/clawdoll.pb.go b/protocol/clawdoll/clawdoll.pb.go index 53d127f..56f3070 100644 --- a/protocol/clawdoll/clawdoll.pb.go +++ b/protocol/clawdoll/clawdoll.pb.go @@ -38,6 +38,8 @@ const ( CLAWDOLLPacketID_PACKET_CS_WAITPLAYERS CLAWDOLLPacketID = 5611 // 获取等待玩家信息 (客户->服务) CLAWDOLLPacketID_PACKET_SC_WAITPLAYERS CLAWDOLLPacketID = 5612 // 获取等待玩家信息 (服务->客户) CLAWDOLLPacketID_PACKET_SC_PLAYINGINFO CLAWDOLLPacketID = 5613 // 正在控制娃娃机的玩家信息 (服务->客户) + CLAWDOLLPacketID_PACKET_CS_DollConfig CLAWDOLLPacketID = 5614 //获取娃娃机配置信息 + CLAWDOLLPacketID_PACKET_SC_DollConfig CLAWDOLLPacketID = 5615 //返回娃娃机配置信息 ) // Enum value maps for CLAWDOLLPacketID. @@ -57,6 +59,8 @@ var ( 5611: "PACKET_CS_WAITPLAYERS", 5612: "PACKET_SC_WAITPLAYERS", 5613: "PACKET_SC_PLAYINGINFO", + 5614: "PACKET_CS_DollConfig", + 5615: "PACKET_SC_DollConfig", } CLAWDOLLPacketID_value = map[string]int32{ "PACKET_ZERO": 0, @@ -73,6 +77,8 @@ var ( "PACKET_CS_WAITPLAYERS": 5611, "PACKET_SC_WAITPLAYERS": 5612, "PACKET_SC_PLAYINGINFO": 5613, + "PACKET_CS_DollConfig": 5614, + "PACKET_SC_DollConfig": 5615, } ) @@ -881,14 +887,10 @@ type SCCLAWDOLLSendToken struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LogicId int32 `protobuf:"varint,1,opt,name=LogicId,proto3" json:"LogicId,omitempty"` - Appid int64 `protobuf:"varint,2,opt,name=Appid,proto3" json:"Appid,omitempty"` - Token string `protobuf:"bytes,3,opt,name=Token,proto3" json:"Token,omitempty"` - StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` - IconAddr string `protobuf:"bytes,5,opt,name=IconAddr,proto3" json:"IconAddr,omitempty"` //图片地址 - CostItemNum int32 `protobuf:"varint,6,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 - ItemId int32 `protobuf:"varint,7,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具ID - ItemNum int32 `protobuf:"varint,8,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 + LogicId int32 `protobuf:"varint,1,opt,name=LogicId,proto3" json:"LogicId,omitempty"` + Appid int64 `protobuf:"varint,2,opt,name=Appid,proto3" json:"Appid,omitempty"` + Token string `protobuf:"bytes,3,opt,name=Token,proto3" json:"Token,omitempty"` + StreamId string `protobuf:"bytes,4,opt,name=StreamId,proto3" json:"StreamId,omitempty"` } func (x *SCCLAWDOLLSendToken) Reset() { @@ -951,34 +953,6 @@ func (x *SCCLAWDOLLSendToken) GetStreamId() string { return "" } -func (x *SCCLAWDOLLSendToken) GetIconAddr() string { - if x != nil { - return x.IconAddr - } - return "" -} - -func (x *SCCLAWDOLLSendToken) GetCostItemNum() int32 { - if x != nil { - return x.CostItemNum - } - return 0 -} - -func (x *SCCLAWDOLLSendToken) GetItemId() int32 { - if x != nil { - return x.ItemId - } - return 0 -} - -func (x *SCCLAWDOLLSendToken) GetItemNum() int32 { - if x != nil { - return x.ItemNum - } - return 0 -} - type CLAWDOLLWaitPlayers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1106,6 +1080,115 @@ func (x *CLAWDOLLPlayerDigestInfo) GetStat() int32 { return 0 } +type CSCLAWDOLLConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSCLAWDOLLConfig) Reset() { + *x = CSCLAWDOLLConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_clawdoll_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSCLAWDOLLConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSCLAWDOLLConfig) ProtoMessage() {} + +func (x *CSCLAWDOLLConfig) ProtoReflect() protoreflect.Message { + mi := &file_clawdoll_proto_msgTypes[13] + 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 CSCLAWDOLLConfig.ProtoReflect.Descriptor instead. +func (*CSCLAWDOLLConfig) Descriptor() ([]byte, []int) { + return file_clawdoll_proto_rawDescGZIP(), []int{13} +} + +type SCCLAWDOLLConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IconAddr string `protobuf:"bytes,1,opt,name=IconAddr,proto3" json:"IconAddr,omitempty"` //图片地址 + CostItemNum int32 `protobuf:"varint,2,opt,name=CostItemNum,proto3" json:"CostItemNum,omitempty"` //消耗道具数量 + ItemId int32 `protobuf:"varint,3,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //获得道具ID + ItemNum int32 `protobuf:"varint,4,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //获得道具数量 +} + +func (x *SCCLAWDOLLConfig) Reset() { + *x = SCCLAWDOLLConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_clawdoll_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCCLAWDOLLConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCCLAWDOLLConfig) ProtoMessage() {} + +func (x *SCCLAWDOLLConfig) ProtoReflect() protoreflect.Message { + mi := &file_clawdoll_proto_msgTypes[14] + 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 SCCLAWDOLLConfig.ProtoReflect.Descriptor instead. +func (*SCCLAWDOLLConfig) Descriptor() ([]byte, []int) { + return file_clawdoll_proto_rawDescGZIP(), []int{14} +} + +func (x *SCCLAWDOLLConfig) GetIconAddr() string { + if x != nil { + return x.IconAddr + } + return "" +} + +func (x *SCCLAWDOLLConfig) GetCostItemNum() int32 { + if x != nil { + return x.CostItemNum + } + return 0 +} + +func (x *SCCLAWDOLLConfig) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *SCCLAWDOLLConfig) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + var File_clawdoll_proto protoreflect.FileDescriptor var file_clawdoll_proto_rawDesc = []byte{ @@ -1193,70 +1276,75 @@ var file_clawdoll_proto_rawDesc = []byte{ 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x47, 0x65, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0xe7, 0x01, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, - 0x4c, 0x4c, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, - 0x6f, 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, - 0x67, 0x69, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, - 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x63, 0x0a, - 0x13, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, - 0x4c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, - 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, - 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x74, 0x2a, 0xfd, 0x02, 0x0a, 0x10, 0x43, 0x4c, - 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x0f, - 0x0a, 0x0b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, - 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe1, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, - 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe3, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x10, 0xe4, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xe5, 0x2b, 0x12, - 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xe6, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x10, 0xe7, 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0xe8, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x47, 0x45, 0x54, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xe9, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x54, 0x4f, 0x4b, - 0x45, 0x4e, 0x10, 0xea, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xeb, - 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, - 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xec, 0x2b, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x49, - 0x4e, 0x47, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xed, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, - 0x68, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, - 0x6c, 0x52, 0x65, 0x61, 0x64, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, - 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2f, 0x63, 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6b, 0x65, 0x6e, 0x22, 0x77, 0x0a, 0x13, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, + 0x4c, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, + 0x67, 0x69, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x67, + 0x69, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x41, 0x70, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x13, + 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x73, 0x12, 0x4c, 0x0a, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, + 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x2e, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0f, 0x57, 0x61, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x18, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x43, 0x4c, + 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x82, 0x01, 0x0a, + 0x10, 0x53, 0x43, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x63, 0x6f, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, + 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, + 0x6d, 0x2a, 0xb3, 0x03, 0x0a, 0x10, 0x43, 0x4c, 0x41, 0x57, 0x44, 0x4f, 0x4c, 0x4c, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe1, 0x2b, + 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, 0xe2, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x10, + 0xe3, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xe4, 0x2b, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x49, + 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xe5, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, + 0x10, 0xe6, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xe7, 0x2b, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x2b, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x4f, 0x4b, 0x45, 0x4e, + 0x10, 0xe9, 0x2b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xea, 0x2b, 0x12, 0x1a, 0x0a, + 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x10, 0xeb, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, + 0x52, 0x53, 0x10, 0xec, 0x2b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x49, 0x4e, 0x47, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xed, + 0x2b, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, + 0x6f, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0xee, 0x2b, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x6f, 0x6c, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x10, 0xef, 0x2b, 0x2a, 0x64, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, + 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6f, 0x73, 0x41, 0x6c, 0x52, + 0x65, 0x61, 0x64, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x42, 0x28, 0x5a, + 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x63, + 0x6c, 0x61, 0x77, 0x64, 0x6f, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1272,7 +1360,7 @@ func file_clawdoll_proto_rawDescGZIP() []byte { } var file_clawdoll_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_clawdoll_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_clawdoll_proto_msgTypes = make([]protoimpl.MessageInfo, 15) var file_clawdoll_proto_goTypes = []interface{}{ (CLAWDOLLPacketID)(0), // 0: clawdoll.CLAWDOLLPacketID (OpResultCode)(0), // 1: clawdoll.OpResultCode @@ -1289,6 +1377,8 @@ var file_clawdoll_proto_goTypes = []interface{}{ (*SCCLAWDOLLSendToken)(nil), // 12: clawdoll.SCCLAWDOLLSendToken (*CLAWDOLLWaitPlayers)(nil), // 13: clawdoll.CLAWDOLLWaitPlayers (*CLAWDOLLPlayerDigestInfo)(nil), // 14: clawdoll.CLAWDOLLPlayerDigestInfo + (*CSCLAWDOLLConfig)(nil), // 15: clawdoll.CSCLAWDOLLConfig + (*SCCLAWDOLLConfig)(nil), // 16: clawdoll.SCCLAWDOLLConfig } var file_clawdoll_proto_depIdxs = []int32{ 2, // 0: clawdoll.SCCLAWDOLLRoomInfo.Players:type_name -> clawdoll.CLAWDOLLPlayerData @@ -1464,6 +1554,30 @@ func file_clawdoll_proto_init() { return nil } } + file_clawdoll_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSCLAWDOLLConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_clawdoll_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCCLAWDOLLConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -1471,7 +1585,7 @@ func file_clawdoll_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_clawdoll_proto_rawDesc, NumEnums: 2, - NumMessages: 13, + NumMessages: 15, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/clawdoll/clawdoll.proto b/protocol/clawdoll/clawdoll.proto index ad26e8e..363d291 100644 --- a/protocol/clawdoll/clawdoll.proto +++ b/protocol/clawdoll/clawdoll.proto @@ -18,6 +18,8 @@ enum CLAWDOLLPacketID { PACKET_CS_WAITPLAYERS = 5611; // 获取等待玩家信息 (客户->服务) PACKET_SC_WAITPLAYERS = 5612; // 获取等待玩家信息 (服务->客户) PACKET_SC_PLAYINGINFO = 5613; // 正在控制娃娃机的玩家信息 (服务->客户) + PACKET_CS_DollConfig = 5614; //获取娃娃机配置信息 + PACKET_SC_DollConfig = 5615; //返回娃娃机配置信息 } //操作结果 @@ -118,10 +120,6 @@ message SCCLAWDOLLSendToken { int64 Appid = 2; string Token = 3; string StreamId = 4; - string IconAddr =5; //图片地址 - int32 CostItemNum = 6; //消耗道具数量 - int32 ItemId = 7; //获得道具ID - int32 ItemNum = 8;//获得道具数量 } message CLAWDOLLWaitPlayers { @@ -136,3 +134,11 @@ message CLAWDOLLPlayerDigestInfo { string Name = 4; //名字 int32 Stat = 5; //玩家状态 0:排队状态 5:大厅观众状态 } +message CSCLAWDOLLConfig{ +} +message SCCLAWDOLLConfig{ + string IconAddr =1; //图片地址 + int32 CostItemNum = 2; //消耗道具数量 + int32 ItemId = 3; //获得道具ID + int32 ItemNum = 4;//获得道具数量 +}