diff --git a/common/broadcasthandler.go b/common/broadcasthandler.go new file mode 100644 index 0000000..0922359 --- /dev/null +++ b/common/broadcasthandler.go @@ -0,0 +1,45 @@ +package common + +import ( + rawproto "google.golang.org/protobuf/proto" + "mongo.games.com/game/proto" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/srvlib" + "mongo.games.com/goserver/srvlib/protocol" +) + +func RegisterBoardCastHandler() { + netlib.Register(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &protocol.SSPacketBroadcast{}, BroadcastHandler) +} + +func BroadcastHandler(s *netlib.Session, packetId int, data interface{}) error { + if bp, ok := data.(*protocol.SSPacketBroadcast); ok { + pd := bp.GetData() + sp := bp.GetSessParam() + if bcss := sp.GetBcss(); bcss != nil { + srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(bcss.GetSArea()), int(bcss.GetSType())) + } + } + return nil +} + +func CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetId int, data interface{}) (rawproto.Message, error) { + pack := &protocol.SSPacketBroadcast{ + SessParam: sp, + PacketId: proto.Int(packetId), + } + + if byteData, ok := data.([]byte); ok { + pack.Data = byteData + } else { + byteData, err := netlib.MarshalPacket(packetId, data) + if err == nil { + pack.Data = byteData + } else { + logger.Logger.Warnf("CreateBroadcastPacket err:%v", err) + return nil, err + } + } + return pack, nil +} diff --git a/worldsrv/clock.go b/common/clock.go similarity index 77% rename from worldsrv/clock.go rename to common/clock.go index 63b3ea6..fc00b79 100644 --- a/worldsrv/clock.go +++ b/common/clock.go @@ -1,27 +1,26 @@ -package main +package common import ( "time" - "mongo.games.com/game/common" "mongo.games.com/goserver/core/module" ) -var ClockMgrSington = &ClockMgr{ +var ClockMgrSingleton = &ClockMgr{ LastHour: -1, LastDay: -1, Notifying: false, } const ( - CLOCK_EVENT_SECOND int = iota - CLOCK_EVENT_MINUTE - CLOCK_EVENT_HOUR - CLOCK_EVENT_DAY - CLOCK_EVENT_WEEK - CLOCK_EVENT_MONTH - CLOCK_EVENT_SHUTDOWN - CLOCK_EVENT_MAX + ClockEventSecond int = iota + ClockEventMinute + ClockEventHour + ClockEventDay + ClockEventWeek + ClockEventMonth + ClockEventShutdown + ClockEventMax ) type ClockSinker interface { @@ -38,7 +37,7 @@ type ClockSinker interface { type BaseClockSinker struct { } -func (s *BaseClockSinker) InterestClockEvent() int { return (1 << CLOCK_EVENT_MAX) - 1 } +func (s *BaseClockSinker) InterestClockEvent() int { return (1 << ClockEventMax) - 1 } func (s *BaseClockSinker) OnSecTimer() {} func (s *BaseClockSinker) OnMiniTimer() {} func (s *BaseClockSinker) OnHourTimer() {} @@ -48,7 +47,7 @@ func (s *BaseClockSinker) OnMonthTimer() {} func (s *BaseClockSinker) OnShutdown() {} type ClockMgr struct { - sinkers [CLOCK_EVENT_MAX][]ClockSinker + sinkers [ClockEventMax][]ClockSinker LastTickTime time.Time LastMonth time.Month LastWeek int @@ -60,9 +59,9 @@ type ClockMgr struct { LastFiveMin int } -func (this *ClockMgr) RegisteSinker(sinker ClockSinker) { +func (this *ClockMgr) RegisterSinker(sinker ClockSinker) { interest := sinker.InterestClockEvent() - for i := 0; i < CLOCK_EVENT_MAX; i++ { + for i := 0; i < ClockEventMax; i++ { if (1< 0 { + return nil + } scene.Destroy(true) return nil } @@ -79,7 +83,7 @@ func (this *CSLeaveRoomHandler) Process(s *netlib.Session, packetid int, data in logger.Logger.Warnf("CSLeaveRoomHandler[%v][%v] scene.gaming==true", scene.SceneId, p.SnId) pack := &gamehall.SCLeaveRoom{ OpRetCode: gamehall.OpResultCode_Game_OPRC_YourAreGamingCannotLeave_Game, - RoomId: proto.Int(scene.SceneId), + RoomId: scene.SceneId, } proto.SetDefaults(pack) p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_LEAVEROOM), pack) @@ -96,7 +100,7 @@ func (this *CSLeaveRoomHandler) Process(s *netlib.Session, packetid int, data in Reason: proto.Int(0), OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game, Mode: msg.Mode, - RoomId: proto.Int(scene.SceneId), + RoomId: scene.SceneId, } proto.SetDefaults(pack) p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_LEAVEROOM), pack) @@ -289,10 +293,48 @@ func CSRoomEvent(s *netlib.Session, packetid int, data interface{}, sid int64) e return nil } +func CSDestroyRoom(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Trace("CSDestroyRoomHandler Process recv ", data) + p := base.PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warn("CSDestroyRoomHandler p == nil") + return nil + } + scene := p.GetScene() + if scene == nil { + logger.Logger.Warn("CSDestroyRoomHandler p.GetScene() == nil") + return nil + } + if !scene.HasPlayer(p) { + return nil + } + + pack := &gamehall.SCDestroyRoom{ + RoomId: scene.SceneId, + OpRetCode: gamehall.OpResultCode_Game_OPRC_Error_Game, + } + send := func() { + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_DESTROYROOM), pack) + logger.Logger.Tracef("SCDestroyRoom: %v", pack) + } + + if scene.Creator != p.SnId { + logger.Logger.Warn("CSDestroyRoomHandler s.creator != p.AccountId") + send() + return nil + } + // 房卡场开始后不能解散 + if scene.IsCustom() && scene.NumOfGames > 0 { + send() + return nil + } + scene.Destroy(true) + return nil +} + func init() { // 房间创建者解散房间 - common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_DESTROYROOM), &CSDestroyRoomHandler{}) - netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_DESTROYROOM), &CSDestroyRoomPacketFactory{}) + common.Register(int(gamehall.GameHallPacketID_PACKET_CS_DESTROYROOM), &gamehall.CSDestroyRoom{}, CSDestroyRoom) // 离开或暂离房间 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LEAVEROOM), &CSLeaveRoomHandler{}) diff --git a/gamesrv/action/action_server.go b/gamesrv/action/action_server.go index 42afa23..8826281 100644 --- a/gamesrv/action/action_server.go +++ b/gamesrv/action/action_server.go @@ -38,73 +38,57 @@ func HandleWGBuyRecTimeItem(session *netlib.Session, packetId int, data interfac return nil } -func HandleWGPlayerLeave(session *netlib.Session, packetId int, data interface{}) error { - logger.Logger.Trace("receive WGPlayerLeaveGame") - if msg, ok := data.(*server.WGPlayerLeave); ok { - p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) - if p != nil { - scene := p.GetScene() - if scene != nil { - scene.PlayerLeave(p, common.PlayerLeaveReason_DropLine, false) - } - } +//func HandleWGPlayerLeave(session *netlib.Session, packetId int, data interface{}) error { +// logger.Logger.Trace("receive WGPlayerLeaveGame") +// if msg, ok := data.(*server.WGPlayerLeave); ok { +// p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) +// if p != nil { +// scene := p.GetScene() +// if scene != nil { +// scene.PlayerLeave(p, common.PlayerLeaveReason_DropLine, false) +// } +// } +// } +// return nil +//} + +//func HandlePlayerChangeItems(session *netlib.Session, packetId int, data interface{}) error { +// logger.Logger.Tracef("receive PlayerChangeItems %v", data) +// msg, ok := data.(*server.PlayerChangeItems) +// if !ok { +// return nil +// } +// p := base.PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) +// if p == nil { +// return nil +// } +// var items []*model.Item +// for _, v := range msg.GetItems() { +// items = append(items, &model.Item{ +// ItemId: v.GetId(), +// ItemNum: v.GetNum(), +// }) +// } +// p.ReceiveAddItems(items) +// return nil +//} + +func CreateSceneHandler(session *netlib.Session, packetId int, data interface{}) error { + logger.Logger.Tracef("receive CreateScene %v", data) + msg, ok := data.(*server.WGCreateScene) + if !ok { + return nil } + base.SceneMgrSington.CreateScene(&base.CreateSceneParam{ + Session: session, + WGCreateScene: msg, + }) return nil } func init() { - //创建场景 - netlib.RegisterFactory(int(server.SSPacketID_PACKET_WG_CREATESCENE), netlib.PacketFactoryWrapper(func() interface{} { - return &server.WGCreateScene{} - })) - netlib.RegisterHandler(int(server.SSPacketID_PACKET_WG_CREATESCENE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { - logger.Logger.Trace("receive WGCreateScene:", pack) - if msg, ok := pack.(*server.WGCreateScene); ok { - sceneId := int(msg.GetSceneId()) - gameMode := int(msg.GetGameMode()) - sceneMode := int(msg.GetSceneMode()) - gameId := int(msg.GetGameId()) - paramsEx := msg.GetParamsEx() - hallId := msg.GetHallId() - groupId := msg.GetGroupId() - dbGameFree := msg.GetDBGameFree() - bEnterAfterStart := msg.GetEnterAfterStart() - totalOfGames := msg.GetTotalOfGames() - baseScore := msg.GetBaseScore() - playerNum := int(msg.GetPlayerNum()) - scene := base.SceneMgrSington.CreateScene(s, sceneId, gameMode, sceneMode, gameId, msg.GetPlatform(), msg.GetParams(), - msg.GetAgentor(), msg.GetCreator(), msg.GetReplayCode(), hallId, groupId, totalOfGames, dbGameFree, - bEnterAfterStart, baseScore, playerNum, msg.GetChessRank(), paramsEx...) - if scene != nil { - if scene.IsMatchScene() { - if len(scene.Params) > 0 { - scene.MatchId = scene.Params[0] - } - if len(scene.Params) > 1 { - scene.MatchFinals = scene.Params[1] == 1 - } - if len(scene.Params) > 2 { - scene.MatchRound = scene.Params[2] - } - if len(scene.Params) > 3 { - scene.MatchCurPlayerNum = scene.Params[3] - } - if len(scene.Params) > 4 { - scene.MatchNextNeed = scene.Params[4] - } - if len(scene.Params) > 5 { - scene.MatchType = scene.Params[5] - } - } - scene.ClubId = msg.GetClub() - scene.RoomId = msg.GetClubRoomId() - scene.RoomPos = msg.GetClubRoomPos() - scene.PumpCoin = msg.GetClubRate() - scene.RealCtrl = msg.RealCtrl - } - } - return nil - })) + // 创建房间 + netlib.Register(int(server.SSPacketID_PACKET_WG_CREATESCENE), &server.WGCreateScene{}, CreateSceneHandler) //删除场景 // 立刻删除,不管游戏是否结束 @@ -254,7 +238,7 @@ func init() { } if scene.Testing { - p.Coin = int64(scene.DbGameFree.GetTestTakeCoin()) + p.Coin = int64(scene.GetDBGameFree().GetTestTakeCoin()) } base.PlayerMgrSington.ManagePlayer(p) scene.PlayerEnter(p, isload) @@ -371,7 +355,7 @@ func init() { //p.coin = msg.GetTakeCoin() //p.takeCoin = msg.GetTakeCoin() if scene.Testing { - p.Coin = int64(scene.DbGameFree.GetTestTakeCoin()) + p.Coin = int64(scene.GetDBGameFree().GetTestTakeCoin()) } p.LastSyncCoin = p.Coin scene.AudienceSit(p) @@ -576,10 +560,13 @@ func init() { return nil })) - //玩家离开 - netlib.Register(int(server.SSPacketID_PACKET_WG_PlayerLEAVE), server.WGPlayerLeave{}, HandleWGPlayerLeave) - //同步记牌器过期时间 + common.RegisterMulticastHandler() + // 玩家离开 + //netlib.Register(int(server.SSPacketID_PACKET_WG_PlayerLEAVE), server.WGPlayerLeave{}, HandleWGPlayerLeave) + // 同步记牌器过期时间 netlib.Register(int(server.SSPacketID_PACKET_WG_BUYRECTIMEITEM), server.WGBuyRecTimeItem{}, HandleWGBuyRecTimeItem) // 修改皮肤 netlib.Register(int(server.SSPacketID_PACKET_WG_UpdateSkin), server.WGUpdateSkin{}, HandleWGUpdateSkin) + // 同步道具数量 + //netlib.Register(int(server.SSPacketID_PACKET_PlayerChangeItems), server.PlayerChangeItems{}, HandlePlayerChangeItems) } diff --git a/gamesrv/avengers/scenedata_avengers.go b/gamesrv/avengers/scenedata_avengers.go index 82d8328..c7bd1fe 100644 --- a/gamesrv/avengers/scenedata_avengers.go +++ b/gamesrv/avengers/scenedata_avengers.go @@ -57,14 +57,14 @@ func (this *AvengersSceneData) SceneDestroy(force bool) { } func (this *AvengersSceneData) init() bool { - if this.DbGameFree == nil { + if this.GetDBGameFree() == nil { return false } - params := this.DbGameFree.GetJackpot() + params := this.GetDBGameFree().GetJackpot() this.jackpot = &base.SlotJackpotPool{} if this.jackpot.Small <= 0 { this.jackpot.Small = 0 - this.jackpot.VirtualJK = int64(params[rule.AVENGERS_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) + this.jackpot.VirtualJK = int64(params[rule.AVENGERS_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) } str := base.SlotsPoolMgr.GetPool(this.GetGameFreeId(), this.Platform) if str != "" { @@ -100,7 +100,7 @@ type AvengersSpinResult struct { } func (this *AvengersSceneData) CalcLinePrize(cards []int, betLines []int64, betValue int64) (spinRes AvengersSpinResult) { - taxRate := this.DbGameFree.GetTaxRate() + taxRate := this.GetDBGameFree().GetTaxRate() calcTaxScore := func(score int64, taxScore *int64) int64 { newScore := int64(float64(score) * float64(10000-taxRate) / 10000.0) if taxScore != nil { @@ -188,7 +188,7 @@ func (this *AvengersSceneData) BroadcastJackpot(sync bool) { this.lastJackpotValue = this.jackpot.VirtualJK pack := &gamehall.SCHundredSceneGetGameJackpot{} jpfi := &gamehall.GameJackpotFundInfo{ - GameFreeId: proto.Int32(this.DbGameFree.Id), + GameFreeId: proto.Int32(this.GetDBGameFree().Id), JackPotFund: proto.Int64(this.jackpot.VirtualJK), } pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) @@ -215,7 +215,7 @@ func (this *AvengersSceneData) PopCoinPool(winCoin int64, IsNovice bool) { } } func (this *AvengersSceneData) RecordBurstLog(name string, wincoin, totalbet int64) { - log := model.NewBurstJackpotLog(this.Platform, this.DbGameFree.GameId, this.GetGameFreeId(), name, wincoin, totalbet) + log := model.NewBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId, this.GetGameFreeId(), name, wincoin, totalbet) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.InsertBurstJackpotLogs(log) }), nil, "InsertBurstJackpotLogs").Start() @@ -223,7 +223,7 @@ func (this *AvengersSceneData) RecordBurstLog(name string, wincoin, totalbet int func (this *AvengersSceneData) BurstHistory(player *AvengersPlayerData) { task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.GetBurstJackpotLog(this.Platform, this.DbGameFree.GameId) + return model.GetBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId) }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { var logsp []*avengers.AvengersBurstHistoryInfo if data != nil { @@ -251,7 +251,7 @@ func (this *AvengersSceneData) GetLastBurstJackPot() time.Time { } func (this *AvengersSceneData) SetLastBurstJackPot() { var randT = rand.Intn(25200-7200+1) + 7200 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(25200-7200+1) + 7200 case 2: @@ -267,7 +267,7 @@ func (this *AvengersSceneData) SetLastBurstJackPot() { func (this *AvengersSceneData) AIAddJackPot() { if time.Now().Sub(this.lastJackPot) > 0 { var randT = rand.Intn(3) + 1 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(3) + 1 case 2: @@ -280,20 +280,20 @@ func (this *AvengersSceneData) AIAddJackPot() { randT = rand.Intn(3) + 1 } this.lastJackPot = time.Now().Add(time.Second * time.Duration(randT)) - val := int64(math.Floor(float64(this.DbGameFree.GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) + val := int64(math.Floor(float64(this.GetDBGameFree().GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) this.jackpot.VirtualJK += val } } func (this *AvengersSceneData) AIBurstJackPot() { if time.Now().Sub(this.GetLastBurstJackPot()) > 0 { this.SetLastBurstJackPot() - jackpotParams := this.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParams[rule.AVENGERS_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) //奖池初始值 + jackpotParams := this.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParams[rule.AVENGERS_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) //奖池初始值 //AI机器人爆奖 val := this.jackpot.VirtualJK this.jackpot.VirtualJK = jackpotInit - bet := int64(this.DbGameFree.GetBaseScore()) * int64(rule.LINENUM) + bet := int64(this.GetDBGameFree().GetBaseScore()) * int64(rule.LINENUM) this.RecordBurstLog(this.RandNickName(), val, bet) } } @@ -314,11 +314,11 @@ func (this *AvengersSceneData) KickPlayerByTime() { } //for _, p := range this.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // this.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(this.DbGameFree.GetPlayNumLimit()) { + // this.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(this.GetDBGameFree().GetPlayNumLimit()) { // this.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} diff --git a/gamesrv/avengers/scenepolicy_avengers.go b/gamesrv/avengers/scenepolicy_avengers.go index 68e2d47..eccf5c8 100644 --- a/gamesrv/avengers/scenepolicy_avengers.go +++ b/gamesrv/avengers/scenepolicy_avengers.go @@ -94,8 +94,8 @@ func (this *ScenePolicyAvengers) OnPlayerEnter(s *base.Scene, p *base.Player) { logger.Logger.Trace("(this *ScenePolicyAvengers) OnPlayerEnter, SceneId=", s.SceneId, " player=", p.SnId) if sceneEx, ok := s.ExtraData.(*AvengersSceneData); ok { playerEx := &AvengersPlayerData{Player: p} - playerEx.init(s) // 玩家当前信息初始化 - playerEx.score = sceneEx.DbGameFree.GetBaseScore() // 底注 + playerEx.init(s) // 玩家当前信息初始化 + playerEx.score = sceneEx.GetDBGameFree().GetBaseScore() // 底注 sceneEx.players[p.SnId] = playerEx p.ExtraData = playerEx AvengersSendRoomInfo(s, p, sceneEx, playerEx, nil) @@ -229,14 +229,14 @@ func (this *ScenePolicyAvengers) GetJackPotVal(s *base.Scene) int64 { func AvengersSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *AvengersSceneData, playerEx *AvengersPlayerData, data *avengers.GameBilledData) { logger.Logger.Trace("-------------------发送房间消息 ", s.RoomId, p.SnId) pack := &avengers.SCAvengersRoomInfo{ - RoomId: proto.Int(s.SceneId), + RoomId: s.SceneId, Creator: proto.Int32(s.Creator), - GameId: proto.Int(s.GameId), - RoomMode: proto.Int(s.GameMode), + GameId: s.GameId, + RoomMode: s.GameMode, Params: common.CopySliceInt64ToInt32(s.Params), State: proto.Int(s.SceneState.GetState()), Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK), - GameFreeId: proto.Int32(s.DbGameFree.Id), + GameFreeId: proto.Int32(s.GetDBGameFree().Id), BilledData: data, } if playerEx != nil { @@ -252,7 +252,7 @@ func AvengersSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *AvengersSceneD pack.Players = append(pack.Players, pd) pack.BetLines = playerEx.betLines pack.FreeTimes = proto.Int32(playerEx.freeTimes) - pack.Chip = proto.Int32(s.DbGameFree.BaseScore) + pack.Chip = proto.Int32(s.GetDBGameFree().BaseScore) pack.SpinID = proto.Int64(playerEx.spinID) if playerEx.totalPriceBonus > 0 { switch playerEx.bonusStage { @@ -367,8 +367,8 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o return false } //先做底注校验 - if sceneEx.DbGameFree.GetBaseScore() != int32(params[0]) { - logger.Logger.Warnf("avengers snid[%v] opcode[%v] params[%v] BaseScore[%v]", p.SnId, opcode, params, sceneEx.DbGameFree.GetBaseScore()) + if sceneEx.GetDBGameFree().GetBaseScore() != int32(params[0]) { + logger.Logger.Warnf("avengers snid[%v] opcode[%v] params[%v] BaseScore[%v]", p.SnId, opcode, params, sceneEx.GetDBGameFree().GetBaseScore()) this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, avengers.OpResultCode_OPRC_Error, params) return false } @@ -405,7 +405,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o if playerEx.freeTimes <= 0 && totalBetValue > playerEx.Coin { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, avengers.OpResultCode_OPRC_CoinNotEnough, params) return false - } else if playerEx.freeTimes <= 0 && int64(sceneEx.DbGameFree.GetBetLimit()) > playerEx.Coin { //押注限制 + } else if playerEx.freeTimes <= 0 && int64(sceneEx.GetDBGameFree().GetBetLimit()) > playerEx.Coin { //押注限制 this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, avengers.OpResultCode_OPRC_CoinNotEnough, params) return false } @@ -419,7 +419,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o //获取当前水池的上下文环境 sceneEx.CpCtx = base.CoinPoolMgr.GetCoinPoolCtx(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) //税收比例 - taxRate := sceneEx.DbGameFree.GetTaxRate() + taxRate := sceneEx.GetDBGameFree().GetTaxRate() if taxRate < 0 || taxRate > 10000 { logger.Logger.Warnf("AvengersErrorTaxRate [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate) taxRate = 500 @@ -448,8 +448,8 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 // 奖池参数 - jackpotParams := sceneEx.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParams[rule.AVENGERS_JACKPOT_InitJackpot]) * int64(sceneEx.DbGameFree.GetBaseScore()) //奖池初始值 + jackpotParams := sceneEx.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParams[rule.AVENGERS_JACKPOT_InitJackpot]) * int64(sceneEx.GetDBGameFree().GetBaseScore()) //奖池初始值 var jackpotFundAdd, prizeFundAdd int64 //奖池/水池增量 if playerEx.freeTimes <= 0 { //正常模式才能记录用户的押注变化,免费模式不能改变押注 @@ -469,7 +469,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o ////统计参与游戏次数 //if !sceneEx.Testing && !playerEx.IsRob { // pack := &server.GWSceneEnd{ - // GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + // GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), // Players: []*server.PlayerCtx{&server.PlayerCtx{SnId: proto.Int32(playerEx.SnId), Coin: proto.Int64(playerEx.Coin)}}, // } // proto.SetDefaults(pack) @@ -668,7 +668,7 @@ func (this *SceneStateAvengersStart) OnPlayerOp(s *base.Scene, p *base.Player, o case AvengersPlayerHistory: task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { spinid := strconv.Itoa(int(playerEx.SnId)) - gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.DbGameFree.GetGameClass(), s.GameId) //复仇者联盟存储个人操作记录不分场次,因为选场界面也需要拉去个人操作记录 + gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.GetDBGameFree().GetGameClass(), int(s.GameId)) //复仇者联盟存储个人操作记录不分场次,因为选场界面也需要拉去个人操作记录 pack := &avengers.SCAvengersPlayerHistory{} for _, v := range gpl.Data { if v.GameDetailedLogId == "" { @@ -806,7 +806,7 @@ func (this *SceneStateAvengersStart) BenchTest(s *base.Scene, p *base.Player) { file.WriteString("玩家id,当前水位,之前余额,之后余额,投入,产出,税收,小游戏,爆奖,中线倍数,中线数,剩余免费次数\r\n") oldCoin := p.Coin - p.Coin = 5000 * int64(s.DbGameFree.GetBaseScore()) + p.Coin = 5000 * int64(s.GetDBGameFree().GetBaseScore()) if playerEx, ok := p.ExtraData.(*AvengersPlayerData); ok { for i := 0; i < BENCH_CNT; i++ { startCoin := p.Coin @@ -817,7 +817,7 @@ func (this *SceneStateAvengersStart) BenchTest(s *base.Scene, p *base.Player) { inCoin := int64(playerEx.RollGameType.BaseResult.TotalBet) outCoin := playerEx.RollGameType.BaseResult.ChangeCoin + inCoin taxCoin := playerEx.RollGameType.BaseResult.Tax - lineScore := float64(playerEx.RollGameType.BaseResult.WinRate*s.DbGameFree.GetBaseScore()) * float64(10000.0-s.DbGameFree.GetTaxRate()) / 10000.0 + lineScore := float64(playerEx.RollGameType.BaseResult.WinRate*s.GetDBGameFree().GetBaseScore()) * float64(10000.0-s.GetDBGameFree().GetTaxRate()) / 10000.0 jackpotScore := outCoin - playerEx.RollGameType.BaseResult.ChangeCoin - int64(lineScore+0.00001) str := fmt.Sprintf("%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v\r\n", p.SnId, poolCoin, startCoin, p.Coin, inCoin, outCoin, taxCoin, @@ -860,7 +860,7 @@ func (this *SceneStateAvengersStart) WinTargetBenchTest(s *base.Scene, p *base.P } file.WriteString("玩家id,当前水位,之前余额,之后余额,投入,产出,税收,小游戏,爆奖,中线倍数,中线数,剩余免费次数\r\n") oldCoin := p.Coin - switch s.DbGameFree.GetSceneType() { + switch s.GetDBGameFree().GetSceneType() { case 1: p.Coin = 100000 case 2: @@ -883,7 +883,7 @@ func (this *SceneStateAvengersStart) WinTargetBenchTest(s *base.Scene, p *base.P inCoin := int64(playerEx.RollGameType.BaseResult.TotalBet) outCoin := playerEx.RollGameType.BaseResult.ChangeCoin + inCoin taxCoin := playerEx.RollGameType.BaseResult.Tax - lineScore := float64(playerEx.RollGameType.BaseResult.WinRate*s.DbGameFree.GetBaseScore()) * float64(10000.0-s.DbGameFree.GetTaxRate()) / 10000.0 + lineScore := float64(playerEx.RollGameType.BaseResult.WinRate*s.GetDBGameFree().GetBaseScore()) * float64(10000.0-s.GetDBGameFree().GetTaxRate()) / 10000.0 jackpotScore := outCoin - playerEx.RollGameType.BaseResult.WinSmallGame - int64(lineScore+0.00001) str := fmt.Sprintf("%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v\r\n", p.SnId, poolCoin, startCoin, p.Coin, inCoin, outCoin, taxCoin, @@ -915,7 +915,7 @@ func AvengersCheckAndSaveLog(sceneEx *AvengersSceneData, playerEx *AvengersPlaye //log2 playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin - playerEx.RollGameType.BaseResult.BasicBet = sceneEx.DbGameFree.GetBaseScore() + playerEx.RollGameType.BaseResult.BasicBet = sceneEx.GetDBGameFree().GetBaseScore() playerEx.RollGameType.BaseResult.RoomId = int32(sceneEx.SceneId) playerEx.RollGameType.BaseResult.AfterCoin = playerEx.Coin playerEx.RollGameType.BaseResult.BeforeCoin = startCoin @@ -974,8 +974,8 @@ func AvengersCheckAndSaveLog(sceneEx *AvengersSceneData, playerEx *AvengersPlaye GameCoinTs: proto.Int64(playerEx.GameCoinTs), } gwPlayerBet := &server.GWPlayerData{ - SceneId: proto.Int(sceneEx.SceneId), - GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + SceneId: sceneEx.SceneId, + GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) sceneEx.SyncPlayerDatas(&base.PlayerDataParam{ diff --git a/gamesrv/base/broadcasthandler.go b/gamesrv/base/broadcasthandler.go deleted file mode 100644 index afebcee..0000000 --- a/gamesrv/base/broadcasthandler.go +++ /dev/null @@ -1,61 +0,0 @@ -package base - -import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/srvlib" - "mongo.games.com/goserver/srvlib/protocol" -) - -var ( - BroadcastMaker = &BroadcastPacketFactory{} -) - -type BroadcastPacketFactory struct { -} - -type BroadcastHandler struct { -} - -func init() { - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &BroadcastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), BroadcastMaker) -} - -func (this *BroadcastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketBroadcast{} - return pack -} - -func (this *BroadcastPacketFactory) CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetid int, data interface{}) (rawproto.Message, error) { - pack := &protocol.SSPacketBroadcast{ - SessParam: sp, - PacketId: proto.Int(packetid), - } - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Warn("BroadcastPacketFactory.CreateBroadcastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *BroadcastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { - if bp, ok := data.(*protocol.SSPacketBroadcast); ok { - pd := bp.GetData() - sp := bp.GetSessParam() - if bcss := sp.GetBcss(); bcss != nil { - srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(bcss.GetSArea()), int(bcss.GetSType())) - } - } - return nil -} diff --git a/gamesrv/base/divisionsystem.go b/gamesrv/base/divisionsystem.go index b016caf..f63a62c 100644 --- a/gamesrv/base/divisionsystem.go +++ b/gamesrv/base/divisionsystem.go @@ -2,5 +2,5 @@ package base // 提供税收和流水,根据代理需求后台进行分账 func ProfitDistribution(p *Player, tax, taxex, validFlow int64) { - //LogChannelSingleton.WriteMQData(model.GenerateTaxDivide(p.SnId, p.Platform, p.Channel, p.BeUnderAgentCode, p.PackageID, tax, taxex, validFlow, p.scene.GameId, p.scene.GameMode, p.scene.DbGameFree.GetId(), p.PromoterTree)) + //LogChannelSingleton.WriteMQData(model.GenerateTaxDivide(p.SnId, p.Platform, p.Channel, p.BeUnderAgentCode, p.PackageID, tax, taxex, validFlow, p.scene.GameId, p.scene.GameMode, p.scene.GetDBGameFree().GetId(), p.PromoterTree)) } diff --git a/gamesrv/base/logchannel.go b/gamesrv/base/logchannel.go index b62cd45..de78540 100644 --- a/gamesrv/base/logchannel.go +++ b/gamesrv/base/logchannel.go @@ -3,6 +3,8 @@ package base import ( "reflect" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/model" "mongo.games.com/game/mq" ) @@ -38,6 +40,7 @@ func (c *LogChannel) WriteLog(log interface{}) { if cname == "" { cname = "_null_" } + logger.Logger.Tracef("LogChannel ==> %#v", log) mq.Send(cname, log) } @@ -54,4 +57,5 @@ func init() { LogChannelSingleton.RegisterLogCName(model.GamePlayerListLogCollName, &model.GamePlayerListLog{}) LogChannelSingleton.RegisterLogCName(model.FriendRecordLogCollName, &model.FriendRecord{}) LogChannelSingleton.RegisterLogCName(model.ItemLogCollName, &model.ItemLog{}) + LogChannelSingleton.RegisterLogCName(mq.DBCustomLog, &model.CustomLog{}) } diff --git a/gamesrv/base/multicasthandler.go b/gamesrv/base/multicasthandler.go deleted file mode 100644 index 6a670d7..0000000 --- a/gamesrv/base/multicasthandler.go +++ /dev/null @@ -1,67 +0,0 @@ -package base - -import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/srvlib" - "mongo.games.com/goserver/srvlib/protocol" -) - -var ( - MulticastMaker = &MulticastPacketFactory{} -) - -type MulticastPacketFactory struct { -} - -type MulticastHandler struct { -} - -func init() { - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), &MulticastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), MulticastMaker) -} - -func (this *MulticastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketMulticast{} - return pack -} - -func (this *MulticastPacketFactory) CreateMulticastPacket(packetid int, data interface{}, sis ...*protocol.MCSessionUnion) (rawproto.Message, error) { - pack := &protocol.SSPacketMulticast{ - Sessions: sis, - PacketId: proto.Int(packetid), - } - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Info("MulticastPacketFactory.CreateMulticastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *MulticastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { - if mp, ok := data.(*protocol.SSPacketMulticast); ok { - pd := mp.GetData() - sis := mp.GetSessions() - for _, si := range sis { - ss := si.GetMcss() - if ss != nil { - ns := srvlib.ServerSessionMgrSington.GetSession(int(ss.GetSArea()), int(ss.GetSType()), int(ss.GetSId())) - if ns != nil { - ns.Send(int(mp.GetPacketId()), pd /*, s.GetSessionConfig().IsInnerLink*/) - } - } - } - } - return nil -} diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 6611f02..9b29b76 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -68,8 +68,8 @@ const ( ) type Player struct { - model.PlayerData //po 持久化对象 - ExtraData interface{} //扩展接口 + model.WGPlayerInfo + ExtraData interface{} //具体游戏对局中的玩家扩展信息 gateSess *netlib.Session //所在GateServer的session worldSess *netlib.Session //所在WorldServer的session scene *Scene //当前所在个Scene @@ -113,7 +113,7 @@ type Player struct { Iparams map[int]int64 //整形参数 sparams map[int]string //字符参数 IsLocal bool //是否本地player - Items map[int32]int64 //背包数据 + Items map[int32]int64 //背包数据, 不可直接修改,使用 AddItems 方法 MatchParams []int32 //比赛参数 排名、段位、假snid、假角色、假皮肤 MatchRobotGrades []MatchRobotGrade TestLog []string // 调试日志 @@ -141,13 +141,15 @@ func NewPlayer(sid int64, data []byte, ws, gs *netlib.Session) *Player { RankScore: make(map[int32]int64), } - // 需要make的,统一在这里初始化默认值,别的地方就不用再初始化了 - p.PlayerData = model.PlayerData{ - //TotalGameData: make(map[int][]*model.PlayerGameTotal), - GDatas: make(map[string]*model.PlayerGameInfo), - ShopTotal: make(map[int32]*model.ShopTotal), - ShopLastLookTime: make(map[int32]int64), - IsFoolPlayer: make(map[string]bool), + //todo 初始化 + p.WGPlayerInfo = model.WGPlayerInfo{ + PlayerData: &model.PlayerData{ + GDatas: make(map[string]*model.PlayerGameInfo), + ShopTotal: make(map[int32]*model.ShopTotal), + ShopLastLookTime: make(map[int32]int64), + IsFoolPlayer: make(map[string]bool), + }, + GameData: make(map[int32]*model.PlayerGameData), } if p.init(data) { @@ -246,7 +248,7 @@ func (this *Player) SyncFlagToWorld() { } pack := &server.GWPlayerFlag{ SnId: proto.Int32(this.SnId), - RoomId: proto.Int(this.scene.SceneId), + RoomId: this.scene.SceneId, Flag: proto.Int(this.flag), } proto.SetDefaults(pack) @@ -373,7 +375,20 @@ func (this *Player) OnAudienceLeave(reason int) { } func (this *Player) MarshalData(gameid int) (d []byte, e error) { - d, e = netlib.Gob.Marshal(&this.PlayerData) + // 防止参数遗漏 + for k, v := range this.GameData { + if v.SnId == 0 { + v.SnId = this.SnId + } + if v.Platform == "" { + v.Platform = this.Platform + } + if v.Id == 0 { + v.Id = k + } + } + + d, e = netlib.Gob.Marshal(&this.WGPlayerInfo) logger.Logger.Trace("(this *Player) MarshalData(gameid int)") return } @@ -382,7 +397,7 @@ func (this *Player) UnmarshalData(data []byte) bool { if len(data) == 0 { return true } - err := netlib.Gob.Unmarshal(data, &this.PlayerData) + err := netlib.Gob.Unmarshal(data, &this.WGPlayerInfo) if err == nil { this.dirty = true return true @@ -439,7 +454,6 @@ func (this *Player) AddCoin(num int64, gainWay int32, syncFlag int, oper, remark return } this.Coin += num - this.Items[common.ItemIDCoin] = this.Coin if this.scene != nil { if !this.IsRob && !this.scene.Testing { //机器人log排除掉 log := model.NewCoinLogEx(&model.CoinLogParam{ @@ -467,9 +481,6 @@ func (this *Player) AddCoin(num int64, gainWay int32, syncFlag int, oper, remark if this.Coin < 0 { this.Coin = 0 } - if this.scene.IsHundredScene() { - this.scene.NewBigCoinNotice(this, int64(num), 5) - } } //增加玩家经验 if num > 0 { @@ -524,7 +535,6 @@ func (this *Player) AddCoinAsync(num int64, gainWay int32, notifyC, broadcast bo return } this.Coin += num - this.Items[common.ItemIDCoin] = this.Coin if this.scene != nil { if !this.IsRob && !this.scene.Testing && writeLog { //机器人log排除掉 log := model.NewCoinLogEx(&model.CoinLogParam{ @@ -607,62 +617,6 @@ func (this *Player) AddRankScore(rankType int32, num int64) { } } -// 保存金币变动日志 -// 数据用途: 个人房间内牌局账变记录,后台部分报表使用,确保数据计算无误,否则可能影响月底对账 -// takeCoin: 牌局结算前玩家身上的金币 -// changecoin: 本局玩家输赢的钱,注意是税后 -// coin: 结算后玩家当前身上的金币余额 -// totalbet: 总下注额 -// taxcoin: 本局该玩家产生的税收,这里要包含俱乐部的税 -// wincoin: 本局赢取的金币,含税 wincoin==changecoin+taxcoin -// jackpotWinCoin: 从奖池中赢取的金币(拉霸类游戏) -// smallGameWinCoin: 小游戏赢取的金币(拉霸类游戏) -func (this *Player) SaveSceneCoinLog(takeCoin, changecoin, coin, totalbet, taxcoin, wincoin int64, jackpotWinCoin int64, smallGameWinCoin int64) { - if this.scene != nil { - if !this.IsRob && !this.scene.Testing && !this.scene.IsMatchScene() { //机器人log排除掉 - var eventType int64 //输赢事件值 默认值为0 - if coin-takeCoin > 0 { - eventType = 1 - } else if coin-takeCoin < 0 { - eventType = -1 - } - log := model.NewSceneCoinLogEx(this.SnId, changecoin, takeCoin, coin, eventType, - int64(this.scene.DbGameFree.GetBaseScore()), totalbet, int32(this.scene.GameId), this.PlayerData.Ip, - this.scene.paramsEx[0], this.Pos, this.Platform, this.Channel, this.BeUnderAgentCode, int32(this.scene.SceneId), - this.scene.DbGameFree.GetGameMode(), this.scene.GetGameFreeId(), taxcoin, wincoin, - jackpotWinCoin, smallGameWinCoin, this.PackageID) - if log != nil { - LogChannelSingleton.WriteLog(log) - } - } - } -} - -// 需要关照 -func (this *Player) IsNeedCare() bool { - return false -} - -// 需要削弱 -func (this *Player) IsNeedWeaken() bool { - return false -} - -func (this *Player) GetCoinOverPercent() int32 { - return 0 -} - -func (this *Player) SyncCoin() { - pack := &player.SCPlayerCoinChange{ - SnId: proto.Int32(this.SnId), - AddCoin: proto.Int64(0), - RestCoin: proto.Int64(this.Coin), - } - proto.SetDefaults(pack) - this.SendToClient(int(player.PlayerPacketID_PACKET_SC_PLAYERCOINCHANGE), pack) - logger.Logger.Trace("(this *Player) SyncCoin SCPlayerCoinChange:", pack) -} - func (this *Player) ReportGameEvent(tax, taxex, changeCoin, validbet, validFlow, in, out int64) { // 记录玩家 首次参与该场次的游戏时间 游戏次数 var gameFirstTime, gameFreeFirstTime time.Time @@ -682,25 +636,12 @@ func (this *Player) ReportGameEvent(tax, taxex, changeCoin, validbet, validFlow, gamingTime := int32(time.Now().Sub(this.scene.GameNowTime).Seconds()) LogChannelSingleton.WriteMQData(model.GenerateGameEvent(model.CreatePlayerGameRecEvent(this.SnId, tax, taxex, changeCoin, validbet, validFlow, in, out, - int32(this.scene.GameId), this.scene.DbGameFree.GetId(), int32(this.scene.GameMode), + int32(this.scene.GameId), this.scene.GetGameFreeId(), int32(this.scene.GameMode), this.scene.GetRecordId(), this.Channel, this.BeUnderAgentCode, this.Platform, this.City, this.DeviceOS, this.CreateTime, gamingTime, gameFirstTime, gameFreeFirstTime, gameTimes, gameFreeTimes, this.LastLoginTime, this.TelephonePromoter, this.DeviceId))) } -// 破产事件 -func (this *Player) ReportBankRuptcy(gameId, gameMode, gameFreeId int32) { - //if !this.IsRob { - // d, e := model.MarshalBankruptcyEvent(2, this.SnId, this.TelephonePromoter, this.Channel, this.BeUnderAgentCode, this.Platform, this.City, this.CreateTime, gameId, gameMode, gameFreeId) - // if e == nil { - // rmd := model.NewInfluxDBData("hj.player_bankruptcy", d) - // if rmd != nil { - // InfluxDBDataChannelSington.Write(rmd) - // } - // } - //} -} - // 汇总玩家该次游戏总产生的税收 // 数据用途: 平台和推广间分账用,确保数据计算无误, // 注意:该税收不包含俱乐部的抽水 @@ -714,30 +655,6 @@ func (this *Player) AddServiceFee(tax int64) { } } -//func (this *Player) SaveReportForm(showId, sceneMode int, keyGameId string, profitCoin, flow int64, validBet int64) { -// //个人报表统计 -// if this.TotalGameData == nil { -// this.TotalGameData = make(map[int][]*model.PlayerGameTotal) -// } -// if this.TotalGameData[showId] == nil { -// this.TotalGameData[showId] = []*model.PlayerGameTotal{new(model.PlayerGameTotal)} -// } -// td := this.TotalGameData[showId][len(this.TotalGameData[showId])-1] -// td.ProfitCoin += profitCoin -// td.BetCoin += validBet -// td.FlowCoin += flow -// ///////////////最多盈利 -// if pgs, exist := this.GDatas[keyGameId]; exist { -// if pgs.Statics.MaxSysOut < profitCoin { -// pgs.Statics.MaxSysOut = profitCoin -// } -// } else { -// gs := model.NewPlayerGameStatics() -// gs.MaxSysOut = profitCoin -// this.GDatas[keyGameId] = &model.PlayerGameInfo{FirstTime: time.Now(), Statics: *gs} -// } -//} - // Statics 弃用,使用 Scene.Statistics 方法 // 个人投入产出汇总,以游戏id为key存储 // 数据用途:计算玩家赔率用,数据确保计算无误,否则可能影响玩家手牌的调控 @@ -851,61 +768,18 @@ func (this *Player) Statics(keyGameId string, keyGameFreeId string, gain int64, ////} } -func (this *Player) SendTrusteeshipTips() { - pack := &player.SCTrusteeshipTips{ - Trusteeship: proto.Int32(this.Trusteeship), - TotalNum: proto.Int32(model.GameParamData.PlayerWatchNum), - } - proto.SetDefaults(pack) - logger.Logger.Trace("SCTrusteeshipTips: ", pack) - this.SendToClient(int(player.PlayerPacketID_PACKET_SC_TRUSTEESHIPTIPS), pack) -} - -func (this *Player) MarshalIParam() []*server.PlayerIParam { - var params []*server.PlayerIParam - for i, v := range this.Iparams { - params = append(params, &server.PlayerIParam{ - ParamId: proto.Int(i), - IntVal: proto.Int64(v), - }) - } - return params -} - func (this *Player) UnmarshalIParam(params []*server.PlayerIParam) { for _, p := range params { this.Iparams[int(p.GetParamId())] = p.GetIntVal() } } -func (this *Player) MarshalSParam() []*server.PlayerSParam { - var params []*server.PlayerSParam - for i, v := range this.sparams { - params = append(params, &server.PlayerSParam{ - ParamId: proto.Int(i), - StrVal: proto.String(v), - }) - } - return params -} - func (this *Player) UnmarshalSParam(params []*server.PlayerSParam) { for _, p := range params { this.sparams[int(p.GetParamId())] = p.GetStrVal() } } -func (this *Player) MarshalCParam() []*server.PlayerCParam { - var params []*server.PlayerCParam - for k, v := range this.cparams { - params = append(params, &server.PlayerCParam{ - StrKey: proto.String(k), - StrVal: proto.String(v), - }) - } - return params -} - func (this *Player) UnmarshalCParam(params []*server.PlayerCParam) { for _, p := range params { this.cparams[p.GetStrKey()] = p.GetStrVal() @@ -1219,17 +1093,6 @@ func (this *Player) NoviceOdds(gameId int) (int32, bool) { return int32(odds), b1 } -/*// 设置玩家捕鱼等级 -func (this *Player) SetFishLevel(level int64) { - data := srvdata.PBDB_PlayerExpMgr.GetData(int32(level)) - if data == nil { - logger.Logger.Errorf("设置玩家等级错误!snid = %v, lvel = %v", this.SnId, level) - return - } - this.FishLevel = level - this.FishExp = int64(data.Exp) -}*/ - // 增加玩家经验 func (this *Player) AddPlayerExp(exp int64) bool { this.Exp += exp @@ -1395,3 +1258,71 @@ func (this *Player) PetUseSkill() bool { func (this *Player) GetSkillAdd(id int32) int32 { return this.GetSkillAdd2(id, ConfigMgrInst) } + +// AddItems 添加道具 +// 增加或减少道具 +// 同步到 worldsrv +func (this *Player) AddItems(args *model.AddItemParam) { + pack := &server.PlayerChangeItems{ + SnId: args.P.SnId, + } + + for _, v := range args.Change { + item := srvdata.GameItemMgr.Get(this.Platform, v.ItemId) + if item == nil { + continue + } + if v.ItemNum < 0 && this.Items[v.ItemId] < -v.ItemNum { + v.ItemNum = -this.Items[v.ItemId] + } + if v.ItemNum == 0 { + continue + } + this.Items[v.ItemId] += v.ItemNum + if !args.NoLog { + logType := 0 + if v.ItemNum < 0 { + logType = 1 + } + LogChannelSingleton.WriteLog(model.NewItemLogEx(model.ItemParam{ + Platform: this.Platform, + SnId: this.SnId, + LogType: int32(logType), + ItemId: v.ItemId, + ItemName: item.Name, + Count: v.ItemNum, + Remark: args.Remark, + TypeId: args.GainWay, + GameId: args.GameId, + GameFreeId: args.GameFreeId, + Cost: args.Cost, + })) + } + pack.Items = append(pack.Items, &server.Item{ + Id: v.ItemId, + Num: v.ItemNum, + }) + } + + if len(pack.Items) > 0 { + this.SendToWorld(int(server.SSPacketID_PACKET_PlayerChangeItems), pack) + logger.Logger.Tracef("PlayerChangeItems: %v", pack) + } +} + +//func (this *Player) ReceiveAddItems(items []*model.Item) { +// for _, v := range items { +// item := srvdata.GameItemMgr.Get(this.Platform, v.ItemId) +// if item == nil { +// continue +// } +// if v.ItemNum < 0 && this.Items[v.ItemId] < -v.ItemNum { +// v.ItemNum = -this.Items[v.ItemId] +// } +// if v.ItemNum == 0 { +// continue +// } +// this.Items[v.ItemId] += v.ItemNum +// logger.Logger.Tracef("ReceiveAddItems snid:%v, item:%v, num:%v change:%v", this.SnId, v.ItemId, this.Items[v.ItemId], v.ItemNum) +// } +//} diff --git a/gamesrv/base/playermgr.go b/gamesrv/base/playermgr.go index 5a4db1e..3db0744 100644 --- a/gamesrv/base/playermgr.go +++ b/gamesrv/base/playermgr.go @@ -55,9 +55,9 @@ func (this *PlayerMgr) AddPlayer(id int64, data []byte, ws, gs *netlib.Session) logger.Logger.Warnf("(this *PlayerMgr) AddPlayer found id=%v player exist snid=%v", id, oldPlayer.SnId) testFlag = true if oldPlayer.scene != nil { - logger.Logger.Warnf("(this *PlayerMgr) AddPlayer found snid=%v in sceneid=%v", id, oldPlayer.SnId, oldPlayer.scene.SceneId) - if SceneMgrSington.GetScene(oldPlayer.scene.SceneId) != nil { - logger.Logger.Warnf("(this *PlayerMgr) AddPlayer found snid=%v in sceneid=%v SceneMgrSington.GetScene(oldPlayer.scene.sceneId) != nil", id, oldPlayer.SnId, oldPlayer.scene.SceneId) + logger.Logger.Warnf("(this *PlayerMgr) AddPlayer found id=%v snid=%v in sceneid=%v", id, oldPlayer.SnId, oldPlayer.scene.SceneId) + if SceneMgrSington.GetScene(int(oldPlayer.scene.SceneId)) != nil { + logger.Logger.Warnf("(this *PlayerMgr) AddPlayer found id=%v snid=%v in sceneid=%v SceneMgrSington.GetScene(oldPlayer.scene.sceneId) != nil", id, oldPlayer.SnId, oldPlayer.scene.SceneId) } } this.DelPlayer(id) @@ -158,7 +158,7 @@ func (this *PlayerMgr) BroadcastMessage(packetid int, rawpack interface{}) bool sc := &protocol.BCSessionUnion{ Bccs: &protocol.BCClientSession{}, } - pack, err := BroadcastMaker.CreateBroadcastPacket(sc, packetid, rawpack) + pack, err := common.CreateBroadcastPacket(sc, packetid, rawpack) if err == nil && pack != nil { srvlib.ServerSessionMgrSington.Broadcast(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), pack, common.GetSelfAreaId(), srvlib.GateServerType) return true diff --git a/gamesrv/base/replay_recorder.go b/gamesrv/base/replay_recorder.go index e4157d3..45c9a37 100644 --- a/gamesrv/base/replay_recorder.go +++ b/gamesrv/base/replay_recorder.go @@ -13,11 +13,6 @@ import ( "mongo.games.com/goserver/core/netlib" ) -const ( - ReplayServerType int = 8 - ReplayServerId = 801 -) - var _replayIgnorePacketIds = map[int]bool{} type ReplayRecorder struct { @@ -97,13 +92,13 @@ func (this *ReplayRecorder) Fini(s *Scene) { // todo dev //Rec: this.rs, LogId: proto.String(this.Logid), - GameId: proto.Int32(s.DbGameFree.GetGameId()), - RoomMode: proto.Int32(s.DbGameFree.GetGameMode()), + GameId: int32(s.GetGameId()), + RoomMode: int32(s.GetGameMode()), NumOfGames: proto.Int(s.NumOfGames), Platform: proto.String(s.Platform), DatasVer: proto.Int32(s.rrVer), GameFreeid: proto.Int32(s.GetGameFreeId()), - RoomId: proto.Int(s.SceneId), + RoomId: s.SceneId, } if s.ClubId != 0 { pack.ClubId = proto.Int32(s.ClubId) diff --git a/gamesrv/base/scene.go b/gamesrv/base/scene.go index d2b110f..bec0917 100644 --- a/gamesrv/base/scene.go +++ b/gamesrv/base/scene.go @@ -11,7 +11,6 @@ import ( "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/core/timer" "mongo.games.com/goserver/core/utils" srvlibproto "mongo.games.com/goserver/srvlib/protocol" @@ -24,12 +23,6 @@ import ( "mongo.games.com/game/srvdata" ) -const ( - SCENE_STATE_INITED int = iota - SCENE_STATE_RUNNING - SCENE_STATE_OVER -) - const ReplayIdTf = "20060102150405" var sceneRandSeed = time.Now().UnixNano() @@ -43,173 +36,96 @@ type CanRebindSnId interface { RebindPlayerSnId(oldSnId, newSnId int32) } -// 房间比赛数据变化 -type SceneMatchChgData struct { - NextBaseScore int32 //底分 - NextOutScore int32 //淘汰分 -} - +// todo 结构优化 type Scene struct { - ws *netlib.Session // 大厅服 - Rand *rand.Rand // 随机数生成器 - ExtraData interface{} // 房间数据 - matchData interface{} // 比赛房数据 - aiMgr AIMgr // - WithLocalAI bool // - SceneId int // 房间id - GameId int // 游戏模式id - GameMode int // 弃用了,都是0 - SceneMode int // 房间模式,如:公共房间 common.SceneMode_Public - SceneType int // 场次,新手场,中级场... - Platform string // 平台id - Params []int64 - paramsEx []int32 - Creator int32 - agentor int32 - hallId int32 - replayCode string + *server.WGCreateScene + ws *netlib.Session // 大厅服 + Rand *rand.Rand // 随机数生成器 + ExtraData interface{} // 房间数据 + aiMgr AIMgr // + WithLocalAI bool // disbandGen int //第几次解散申请 disbandParam []int64 //解散参数 disbandPos int32 //发起解散的玩家位置 disbandTs int64 //解散发起时间戳 - playerNum int //游戏人数 realPlayerNum int //真实玩家人数 robotNum int //机器人数量 robotLimit int //最大限制机器人数量 robotNumLastInvite int //上次邀请机器人时的数量 - TotalOfGames int //游戏总局数 NumOfGames int //局数 Players map[int32]*Player //参与者 audiences map[int32]*Player //观众 sp ScenePolicy //场景游戏策略 - //mp MatchPolicy //场景比赛策略 - rr *ReplayRecorder //回放记录器 - rrVer int32 //录像的协议版本号 - DbGameFree *server.DB_GameFree //自由场数据 - SceneState SceneState //场景状态 - hDisband timer.TimerHandle //解散handle - StateStartTime time.Time //状态开始时间 - stateEndTime time.Time //状态结束时间 - GameStartTime time.Time //游戏开始计时时间 - GameNowTime time.Time //当局游戏开始时间 - nextInviteTime time.Time //下次邀请机器人时间 - inviteInterval int64 //邀请间隔 - pause bool - Gaming bool - destroyed bool - completed bool - Testing bool //是否为测试场 - graceDestroy bool //等待销毁 - replayAddId int32 - KeyGameId string //游戏类型唯一ID - KeyGamefreeId string //游戏场次唯一id - KeyGameDif string - GroupId int32 //分组id - bEnterAfterStart bool //是否允许中途加入 - ClubId int32 - RoomId string //俱乐部那个包间 - RoomPos int32 //房间桌号 - PumpCoin int32 //抽水比例,同一个俱乐部下面的抽水比例是一定的,百分比 - DealyTime int64 //结算延时时间 - CpCtx model.CoinPoolCtx //水池环境 - CpControlled bool //被水池控制了 - timerRandomRobot int64 - nogDismiss int //检查机器人离场时的局数(同一局只检查一次) - //playerStatement map[int32]*webapi.PlayerStatement //玩家流水记录 - SystemCoinOut int64 //本局游戏机器人营收 机器人赢:正值 机器人输:负值 - matchChgData *SceneMatchChgData //比赛变化数据 - ChessRank []int32 - - LoopNum int // 循环计数 - results []int // 本局游戏结果 - WebUser string // 操作人 - resultHistory [][]int // 记录数 [控制结果,局数...] - BaseScore int32 //tienlen游戏底分 - MatchId int64 //标记本次比赛的id,并不是后台id - MatchFinals bool //比赛场决赛 - MatchRound int64 - MatchCurPlayerNum int64 - MatchNextNeed int64 - MatchType int64 // 0.普通场 1.锦标赛 2.冠军赛 3.vip专属 - MatchStop bool - RealCtrl bool - Novice bool - Welfare bool - KillPoints bool + rr *ReplayRecorder //回放记录器 + rrVer int32 //录像的协议版本号 + SceneState SceneState //场景状态 + StateStartTime time.Time //状态开始时间 + stateEndTime time.Time //状态结束时间 + GameStartTime time.Time //游戏开始计时时间 + GameNowTime time.Time //当局游戏开始时间 + nextInviteTime time.Time //下次邀请机器人时间 + inviteInterval int64 //邀请间隔 + pause bool + Gaming bool + destroyed bool + completed bool + Testing bool //是否为测试场 + graceDestroy bool //等待销毁 + replayAddId int32 + KeyGameId string //游戏类型唯一ID + KeyGamefreeId string //游戏场次唯一id + KeyGameDif string + GroupId int32 //分组id + bEnterAfterStart bool //是否允许中途加入 + ClubId int32 + RoomId string //俱乐部那个包间 + RoomPos int32 //房间桌号 + PumpCoin int32 //抽水比例,同一个俱乐部下面的抽水比例是一定的,百分比 + DealyTime int64 //结算延时时间 + CpCtx model.CoinPoolCtx //水池环境 + CpControlled bool //被水池控制了 + timerRandomRobot int64 + nogDismiss int //检查机器人离场时的局数(同一局只检查一次) + SystemCoinOut int64 //本局游戏机器人营收 机器人赢:正值 机器人输:负值 + ChessRank []int32 + RealCtrl bool + CycleID string } -func NewScene(ws *netlib.Session, sceneId, gameMode, sceneMode, gameId int, platform string, params []int64, - agentor, creator int32, replayCode string, hallId, groupId, totalOfGames int32, dbGameFree *server.DB_GameFree, bEnterAfterStart bool, baseScore int32, playerNum int, cherank []int32, paramsEx ...int32) *Scene { +func NewScene(args *CreateSceneParam) *Scene { + gameId := int(args.GetGameId()) + gameMode := int(args.GetGameMode()) sp := GetScenePolicy(gameId, gameMode) if sp == nil { logger.Logger.Errorf("Game id %v not register in ScenePolicyPool.", gameId) return nil } + tNow := time.Now() s := &Scene{ - ws: ws, - SceneId: sceneId, - GameId: gameId, - GameMode: gameMode, - SceneMode: sceneMode, - SceneType: int(dbGameFree.GetSceneType()), - Params: params, - paramsEx: paramsEx, - Creator: creator, - agentor: agentor, - replayCode: replayCode, + WGCreateScene: args.WGCreateScene, + ws: args.Session, Players: make(map[int32]*Player), audiences: make(map[int32]*Player), sp: sp, - hDisband: timer.TimerHandle(0), GameStartTime: tNow, - hallId: hallId, - Platform: platform, - DbGameFree: dbGameFree, inviteInterval: model.GameParamData.RobotInviteInitInterval, - GroupId: groupId, - bEnterAfterStart: bEnterAfterStart, - TotalOfGames: int(totalOfGames), - results: make([]int, common.MaxLoopNum), - BaseScore: baseScore, - playerNum: playerNum, - ChessRank: cherank, - } - if s != nil && s.init() { - logger.Logger.Trace("NewScene init success.") - if !s.Testing { - s.rrVer = ReplayRecorderVer[gameId] - s.RecordReplayStart() - } - return s - } else { - logger.Logger.Trace("NewScene init failed.") - return nil + bEnterAfterStart: args.GetEnterAfterStart(), + ChessRank: args.GetChessRank(), + KeyGameId: strconv.Itoa(int(args.GetGameId())), + KeyGamefreeId: strconv.Itoa(int(args.GetDBGameFree().GetId())), + KeyGameDif: args.GetDBGameFree().GetGameDif(), } + s.CycleID, _ = model.AutoIncGameLogId() + s.init() + return s } -//func (this *Scene) BindAIMgr(aimgr AIMgr) { -// this.aiMgr = aimgr -//} - -// 根据gamedifid,转为gameid,然后返回所有的相同gameid的数据 -func (this *Scene) GetTotalTodayDaliyGameData(keyGameId string, pd *Player) *model.PlayerGameStatics { - todayData := model.NewPlayerGameStatics() - - if pd.TodayGameData == nil { - return todayData +func (this *Scene) GetSceneType() int32 { + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetSceneType() } - - if pd.TodayGameData.CtrlData == nil { - return todayData - } - - if info, ok := pd.TodayGameData.CtrlData[keyGameId]; ok { - todayData.TotalIn += info.TotalIn - todayData.TotalOut += info.TotalOut - } - - return todayData + return 0 } func (this *Scene) RebindPlayerSnId(oldSnId, newSnId int32) { @@ -229,42 +145,13 @@ func (this *Scene) RebindPlayerSnId(oldSnId, newSnId int32) { func (this *Scene) GetInit() bool { return this.init() } + func (this *Scene) init() bool { tNow := time.Now() sceneRandSeed++ this.Rand = rand.New(rand.NewSource(sceneRandSeed)) this.nextInviteTime = tNow.Add(time.Second * time.Duration(this.Rand.Int63n(model.GameParamData.RobotInviteInitInterval))) this.RandRobotCnt() - - if len(this.paramsEx) != 0 { - if this.IsMatchScene() { - //this.mp = GetMatchPolicy(this.gameId) - baseScore := this.GetParamEx(common.PARAMEX_MATCH_BASESCORE) - this.DbGameFree.BaseScore = proto.Int32(baseScore) - } else { - if this.DbGameFree.GetSceneType() == -1 { - this.Testing = true - } else { - this.Testing = false - } - } - - this.KeyGameId = strconv.Itoa(int(this.DbGameFree.GetGameId())) - this.KeyGamefreeId = strconv.Itoa(int(this.DbGameFree.GetId())) - this.KeyGameDif = this.DbGameFree.GetGameDif() - } - // test - //for i := 0; i < 100; i++ { - // n := this.rand.Intn(10) - // r := this.rand.Intn(3) + 1 - // str := fmt.Sprint(this.rand.Intn(1000), ":", r) - // for j := 0; j < n; j++ { - // str += fmt.Sprint(",", this.rand.Intn(1000), ":", r) - // } - // logger.Logger.Trace("--> str ", str) - // this.ParserResults1(str, "") - //} - // test return true } @@ -277,45 +164,13 @@ func (this *Scene) GetParam(idx int) int64 { } func (this *Scene) GetBetMap() []int64 { - return this.DbGameFree.GetOtherIntParams() -} - -func (this *Scene) IsDisbanding() bool { - return this.hDisband != timer.TimerHandle(0) -} - -func (this *Scene) GetParamEx(idx int) int32 { - if idx < 0 || idx > len(this.paramsEx) { - return -1 - } - - return this.paramsEx[idx] -} - -func (this *Scene) SetParamEx(idx int, val int32) { - cnt := len(this.paramsEx) - if idx >= 0 && idx < cnt { - this.paramsEx[idx] = val - } -} - -func (this *Scene) GetMatchTotalOfGame() int { - return int(this.GetParamEx(common.PARAMEX_MATCH_NUMOFGAME)) -} - -func (this *Scene) GetMatchBaseScore() int32 { - return this.GetParamEx(common.PARAMEX_MATCH_BASESCORE) + return this.GetDBGameFree().GetOtherIntParams() } func (this *Scene) GetGameFreeId() int32 { - return this.DbGameFree.Id -} -func (this *Scene) GetDBGameFree() *server.DB_GameFree { - return this.DbGameFree -} -func (this *Scene) GetPlatform() string { - return this.Platform + return this.GetDBGameFree().GetId() } + func (this *Scene) GetKeyGameId() string { return this.KeyGameId } @@ -323,10 +178,10 @@ func (this *Scene) SetKeyGameId(keyGameId string) { this.KeyGameId = keyGameId } func (this *Scene) GetSceneId() int { - return this.SceneId + return int(this.SceneId) } func (this *Scene) SetSceneId(sceneId int) { - this.SceneId = sceneId + this.SceneId = int32(sceneId) } func (this *Scene) GetGroupId() int32 { return this.GroupId @@ -347,22 +202,22 @@ func (this *Scene) SetSceneState(state SceneState) { this.SceneState = state } func (this *Scene) GetGameId() int { - return this.GameId + return int(this.GameId) } func (this *Scene) SetGameId(gameId int) { - this.GameId = gameId + this.GameId = int32(gameId) } func (this *Scene) GetPlayerNum() int { - return this.playerNum + return int(this.WGCreateScene.GetPlayerNum()) } func (this *Scene) SetPlayerNum(playerNum int) { - this.playerNum = playerNum + this.PlayerNum = int32(playerNum) } func (this *Scene) GetGameMode() int { - return this.GameMode + return int(this.GameMode) } func (this *Scene) SetGameMode(gameMode int) { - this.GameMode = gameMode + this.GameMode = int32(gameMode) } func (this *Scene) GetGaming() bool { return this.Gaming @@ -383,23 +238,15 @@ func (this *Scene) SetCreator(creator int32) { this.Creator = creator } func (this *Scene) GetSceneMode() int { - return this.SceneMode + return int(this.SceneMode) } func (this *Scene) SetSceneMode(sceneMode int) { - this.SceneMode = sceneMode + this.SceneMode = int32(sceneMode) } func (this *Scene) GetParams() []int64 { return this.Params } -func (this *Scene) SetParams(params []int64) { - this.Params = params -} -func (this *Scene) GetParamsEx() []int32 { - return this.paramsEx -} -func (this *Scene) SetParamsEx(paramsEx []int32) { - this.paramsEx = paramsEx -} + func (this *Scene) GetStateStartTime() time.Time { return this.StateStartTime } @@ -433,12 +280,6 @@ func (this *Scene) SetCpCtx(cpCtx model.CoinPoolCtx) { func (this *Scene) GetAudiences() map[int32]*Player { return this.audiences } -func (this *Scene) GetAgentor() int32 { - return this.agentor -} -func (this *Scene) SetAgentor(agentor int32) { - this.agentor = agentor -} func (this *Scene) GetDisbandGen() int { return this.disbandGen } @@ -457,12 +298,6 @@ func (this *Scene) GetGraceDestroy() bool { func (this *Scene) SetGraceDestroy(graceDestroy bool) { this.graceDestroy = graceDestroy } -func (this *Scene) GetMatchChgData() *SceneMatchChgData { - return this.matchChgData -} -func (this *Scene) SetMatchChgData(matchChgData *SceneMatchChgData) { - this.matchChgData = matchChgData -} func (this *Scene) GetCpControlled() bool { return this.CpControlled @@ -535,9 +370,9 @@ func (this *Scene) PlayerEnter(p *Player, isLoaded bool) { p.scene = this pack := &gamehall.SCEnterRoom{ - GameId: proto.Int(this.GameId), - ModeType: proto.Int(this.GameMode), - RoomId: proto.Int(this.SceneId), + GameId: this.GameId, + ModeType: this.GameMode, + RoomId: this.SceneId, OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game, Params: []int32{}, ClubId: proto.Int32(this.ClubId), @@ -547,7 +382,7 @@ func (this *Scene) PlayerEnter(p *Player, isLoaded bool) { if p.IsRob { this.robotNum++ - logger.Logger.Tracef("(this *Scene) PlayerEnter(%v) robot(%v) robotlimit(%v)", this.DbGameFree.GetName()+this.DbGameFree.GetTitle(), this.robotNum, this.robotLimit) + logger.Logger.Tracef("(this *Scene) PlayerEnter(%v) robot(%v) robotlimit(%v)", this.GetDBGameFree().GetName()+this.GetDBGameFree().GetTitle(), this.robotNum, this.robotLimit) } else { p.Trusteeship = 0 p.ValidCacheBetTotal = 0 @@ -564,7 +399,7 @@ func (this *Scene) PlayerEnter(p *Player, isLoaded bool) { utils.RunPanicless(func() { this.sp.OnPlayerEnter(this, p) }) if p.WBLevel < 0 { - WarningBlackPlayer(p.SnId, this.DbGameFree.Id) + WarningBlackPlayer(p.SnId, this.GetDBGameFree().Id) } this.ResetNextInviteTime() @@ -583,7 +418,7 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) { pack := &gamehall.SCLeaveRoom{ //OpRetCode: p.opCode, //protocol.OpResultCode_OPRC_Hundred_YouHadBetCannotLeave, OpRetCode: gamehall.OpResultCode_Game(p.OpCode), - RoomId: proto.Int(this.SceneId), + RoomId: this.SceneId, } if pack.GetOpRetCode() == gamehall.OpResultCode_Game_OPRC_Sucess_Game { //不能这么做,机器人有特殊判定 @@ -605,7 +440,7 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) { //send world离开房间 pack := &server.GWPlayerLeave{ - RoomId: proto.Int(this.SceneId), + RoomId: this.SceneId, PlayerId: proto.Int32(p.SnId), Reason: proto.Int(reason), ServiceFee: proto.Int64(p.serviceFee), @@ -615,7 +450,7 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) { LostTimes: proto.Int(p.lostTimes), TotalConvertibleFlow: proto.Int64(p.TotalConvertibleFlow), ValidCacheBetTotal: proto.Int64(p.ValidCacheBetTotal), - MatchId: this.MatchId, + MatchId: this.GetMatch().GetMatchSortId(), CurIsWin: proto.Int64(p.CurIsWin), // 负数:输 0:平局 正数:赢 } matchRobotGrades := p.MatchRobotGrades @@ -633,16 +468,16 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) { } pack.GameCoinTs = proto.Int64(p.GameCoinTs) if !p.IsLocal { - data, err := p.MarshalData(this.GameId) + data, err := p.MarshalData(int(this.GameId)) if err == nil { pack.PlayerData = data } } - pack.Items = make(map[int32]int64) - for id, num := range p.Items { - pack.Items[id] = num - } + //pack.Items = make(map[int32]int64) + //for id, num := range p.Items { + // pack.Items[id] = num + //} pack.RankScore = make(map[int32]int64) for k, v := range p.RankScore { pack.RankScore[k] = v @@ -663,7 +498,7 @@ func (this *Scene) PlayerLeave(p *Player, reason int, isBill bool) { } this.robotNum = num } - logger.Logger.Tracef("(this *Scene) PlayerLeave(%v) robot(%v) robotlimit(%v)", this.DbGameFree.GetName()+this.DbGameFree.GetTitle(), this.robotNum, this.robotLimit) + logger.Logger.Tracef("(this *Scene) PlayerLeave(%v) robot(%v) robotlimit(%v)", this.GetDBGameFree().GetName()+this.GetDBGameFree().GetTitle(), this.robotNum, this.robotLimit) } else { this.realPlayerNum-- this.RandRobotCnt() @@ -678,9 +513,9 @@ func (this *Scene) AudienceEnter(p *Player, isload bool) { p.scene = this p.MarkFlag(PlayerState_Audience) pack := &gamehall.SCEnterRoom{ - GameId: proto.Int(this.GameId), - ModeType: proto.Int(this.GameMode), - RoomId: proto.Int(this.SceneId), + GameId: this.GameId, + ModeType: this.GameMode, + RoomId: this.SceneId, OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game, } proto.SetDefaults(pack) @@ -699,8 +534,8 @@ func (this *Scene) AudienceLeave(p *Player, reason int) { //当前状态不能离场 if !this.CanChangeCoinScene(p) { pack := &gamehall.SCLeaveRoom{ - OpRetCode: (gamehall.OpResultCode_Game(p.OpCode)), //protocol.OpResultCode_OPRC_Hundred_YouHadBetCannotLeave, - RoomId: proto.Int(this.SceneId), + OpRetCode: gamehall.OpResultCode_Game(p.OpCode), //protocol.OpResultCode_OPRC_Hundred_YouHadBetCannotLeave, + RoomId: this.SceneId, } proto.SetDefaults(pack) p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_LEAVEROOM), pack) @@ -712,7 +547,7 @@ func (this *Scene) AudienceLeave(p *Player, reason int) { delete(this.audiences, p.SnId) //send world离开房间 pack := &server.GWPlayerLeave{ - RoomId: proto.Int(this.SceneId), + RoomId: this.SceneId, PlayerId: proto.Int32(p.SnId), Reason: proto.Int(reason), TotalConvertibleFlow: proto.Int64(p.TotalConvertibleFlow), @@ -820,11 +655,11 @@ func (this *Scene) PlayerRehold(snid int32, sid int64, gs *netlib.Session) { func (this *Scene) PlayerReturn(p *Player, isLoaded bool) { logger.Logger.Trace("(this *Scene) PlayerReturn") pack := &gamehall.SCReturnRoom{ - RoomId: proto.Int(this.SceneId), - GameId: proto.Int(this.GameId), - ModeType: proto.Int(this.GameMode), + RoomId: this.SceneId, + GameId: this.GameId, + ModeType: this.GameMode, Params: common.CopySliceInt64ToInt32(this.Params), - HallId: proto.Int32(this.hallId), + HallId: this.GetDBGameFree().GetId(), IsLoaded: proto.Bool(isLoaded), OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game, ClubId: proto.Int32(this.ClubId), @@ -893,7 +728,7 @@ func (this *Scene) Broadcast(packetid int, msg rawproto.Message, excludeSid int6 } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, msg, v...) + pack, err := common.CreateMulticastPacket(packetid, msg, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -917,7 +752,7 @@ func (this *Scene) RobotBroadcast(packetid int, msg rawproto.Message) { } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, msg, v...) + pack, err := common.CreateMulticastPacket(packetid, msg, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -925,6 +760,7 @@ func (this *Scene) RobotBroadcast(packetid int, msg rawproto.Message) { } } } + func (this *Scene) BroadcastToAudience(packetid int, msg rawproto.Message) { if len(this.audiences) > 0 { mgs := make(map[*netlib.Session][]*srvlibproto.MCSessionUnion) @@ -941,7 +777,7 @@ func (this *Scene) BroadcastToAudience(packetid int, msg rawproto.Message) { } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, msg, v...) + pack, err := common.CreateMulticastPacket(packetid, msg, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -983,7 +819,7 @@ func (this *Scene) ChangeSceneState(stateid int) { logger.Logger.Tracef("(this *Scene) [%v] ChangeSceneState -> %v", this.SceneId, state.GetState()) this.SceneState = state this.SceneState.OnEnter(this) - //this.NotifySceneState(stateid) + //this.SyncSceneState(stateid) } if this.aiMgr != nil { @@ -1045,7 +881,7 @@ func (this *Scene) Destroy(force bool) { } isCompleted := this.sp.IsCompleted(this) || this.completed - SceneMgrSington.DestroyScene(this.SceneId) + SceneMgrSington.DestroyScene(int(this.SceneId)) pack := &server.GWDestroyScene{ SceneId: int64(this.SceneId), IsCompleted: isCompleted, @@ -1074,8 +910,12 @@ func (this *Scene) IsMatchScene() bool { return this.SceneId >= common.MatchSceneStartId && this.SceneId <= common.MatchSceneMaxId } +func (this *Scene) IsCustom() bool { + return this.GetDBGameFree().GetIsCustom() > 0 +} + func (this *Scene) IsFull() bool { - return len(this.Players) >= this.playerNum + return len(this.Players) >= this.GetPlayerNum() } // 大厅场 @@ -1094,15 +934,15 @@ func (this *Scene) IsHundredScene() bool { } func (this *Scene) GetCoinSceneLowerThanKick() int64 { - if this.DbGameFree != nil { - return this.DbGameFree.GetLowerThanKick() + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetLowerThanKick() } return 0 } func (this *Scene) GetCoinSceneMaxCoinLimit() int64 { - if this.DbGameFree != nil { - return this.DbGameFree.GetMaxCoinLimit() + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetMaxCoinLimit() } return 0 } @@ -1121,7 +961,7 @@ func (this *Scene) CoinInLimitLocal(coin int64) bool { // NotCoinInLimitType 金额超出入场限额,返回踢出类型 func (this *Scene) NotCoinInLimitType(coin int64) int { - if common.IsLocalGame(this.GameId) { + if common.IsLocalGame(int(this.GameId)) { minCoin := this.GetLimitCoin() if minCoin != 0 && coin < minCoin { return common.PlayerLeaveReason_Bekickout @@ -1148,7 +988,7 @@ func (this *Scene) NotCoinInLimitType(coin int64) int { // CoinInLimit 单入场限额检查 func (this *Scene) CoinInLimit(coin int64) bool { - if common.IsLocalGame(this.GameId) { + if common.IsLocalGame(int(this.GameId)) { return this.CoinInLimitLocal(coin) } @@ -1171,7 +1011,7 @@ func (this *Scene) GetLimitCoin() int64 { limitCoin := int64(0) tmpIds := []int32{} for _, data := range srvdata.PBDB_CreateroomMgr.Datas.GetArr() { - if int(data.GameId) == this.GameId && int(data.GameSite) == this.SceneType { + if data.GameId == this.GameId && data.GameSite == this.GetDBGameFree().GetSceneType() { betRange := data.GetBetRange() if len(betRange) == 0 { continue @@ -1220,8 +1060,8 @@ func (this *Scene) CoinOverMaxLimit(coin int64, p *Player) bool { } } } else { - if this.DbGameFree != nil { - limit := this.DbGameFree.GetRobotLimitCoin() + if this.GetDBGameFree() != nil { + limit := this.GetDBGameFree().GetRobotLimitCoin() if len(limit) >= 2 { comp := common.RandInt(int(limit[0]), int(limit[1])) if coin > int64(comp) { @@ -1245,32 +1085,32 @@ func (this *Scene) CorrectBillCoin(coin, limit1, limit2 int64) int64 { } func (this *Scene) GetCoinSceneServiceFee() int32 { - if this.DbGameFree != nil { - return this.DbGameFree.GetServiceFee() + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetServiceFee() } return 0 } func (this *Scene) GetCoinSceneTypeId() int32 { - if this.DbGameFree != nil { - return this.DbGameFree.Id + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().Id } return 0 } func (this *Scene) GetCoinSceneName() string { - if this.DbGameFree != nil { - return this.DbGameFree.GetName() + this.DbGameFree.GetTitle() + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetName() + this.GetDBGameFree().GetTitle() } return "" } func (this *Scene) GetHundredSceneName() string { - if this.IsHundredScene() && this.DbGameFree != nil { - if this.DbGameFree.GetName() == this.DbGameFree.GetTitle() { - return this.DbGameFree.GetTitle() + if this.IsHundredScene() && this.GetDBGameFree() != nil { + if this.GetDBGameFree().GetName() == this.GetDBGameFree().GetTitle() { + return this.GetDBGameFree().GetTitle() } else { - return this.DbGameFree.GetName() + this.DbGameFree.GetTitle() + return this.GetDBGameFree().GetName() + this.GetDBGameFree().GetTitle() } } return "" @@ -1338,20 +1178,21 @@ func (this *Scene) SyncPlayerCoin() { // this.SendToWorld(int(server.SSPacketID_PACKET_GW_SYNCPLAYERCOIN), pack) //} } -func (this *Scene) NotifySceneStateFishing(state int) { + +func (this *Scene) SyncSceneState(state int) { pack := &server.GWSceneState{ - RoomId: proto.Int(this.SceneId), - Fishing: proto.Int32(int32(state)), + RoomId: int32(this.SceneId), + RoomState: int32(state), } - proto.SetDefaults(pack) this.SendToWorld(int(server.SSPacketID_PACKET_GW_SCENESTATE), pack) } + func (this *Scene) NotifySceneRoundStart(round int) { pack := &server.GWSceneStart{ - RoomId: proto.Int(this.SceneId), + RoomId: this.SceneId, CurrRound: proto.Int(round), Start: proto.Bool(true), - MaxRound: proto.Int(this.TotalOfGames), + MaxRound: this.TotalOfGames, } proto.SetDefaults(pack) this.SendToWorld(int(server.SSPacketID_PACKET_GW_SCENESTART), pack) @@ -1359,18 +1200,19 @@ func (this *Scene) NotifySceneRoundStart(round int) { func (this *Scene) NotifySceneRoundPause() { pack := &server.GWSceneStart{ - RoomId: proto.Int(this.SceneId), + RoomId: this.SceneId, Start: proto.Bool(false), CurrRound: proto.Int(this.NumOfGames), - MaxRound: proto.Int(this.TotalOfGames), + MaxRound: this.TotalOfGames, } proto.SetDefaults(pack) this.SendToWorld(int(server.SSPacketID_PACKET_GW_SCENESTART), pack) } + func (this *Scene) SyncGameState(sec, bl int) { if this.SceneState != nil { pack := &server.GWGameState{ - SceneId: proto.Int(this.SceneId), + SceneId: this.SceneId, State: proto.Int(this.SceneState.GetState()), Ts: proto.Int64(time.Now().Unix()), Sec: proto.Int(sec), @@ -1381,37 +1223,24 @@ func (this *Scene) SyncGameState(sec, bl int) { } } -// 游戏开始的时候同步防伙牌数据 +// SyncScenePlayer 游戏开始的时候同步防伙牌数据 func (this *Scene) SyncScenePlayer() { pack := &server.GWScenePlayerLog{ - GameId: proto.Int(this.GameId), - GameFreeId: proto.Int32(this.DbGameFree.GetId()), + GameId: this.GameId, + GameFreeId: proto.Int32(this.GetDBGameFree().GetId()), } for _, value := range this.Players { if value.IsRob || !value.IsGameing() { continue } pack.Snids = append(pack.Snids, value.SnId) - pack.IsGameing = append(pack.IsGameing, value.IsGameing()) } this.SendToWorld(int(server.SSPacketID_PACKET_GW_SCENEPLAYERLOG), pack) } -// 防伙牌换桌 -func (this *Scene) ChangeSceneEvent() { - timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { - if this.DbGameFree.GetMatchMode() == 1 { - return true - } - this.SendToWorld(int(server.SSPacketID_PACKET_GW_CHANGESCENEEVENT), &server.GWChangeSceneEvent{ - SceneId: proto.Int(this.SceneId), - }) - return true - }), nil, time.Second*3, 1) -} func (this *Scene) RecordReplayStart() { if !this.IsHundredScene() && !this.IsMatchScene() { - logger.Logger.Trace("RecordReplayStart-----", this.replayCode, this.NumOfGames, this.replayAddId) + logger.Logger.Trace("RecordReplayStart-----", this.GetReplayCode(), this.NumOfGames, this.replayAddId) id := fmt.Sprintf("%d%d%v%d", this.GameId, this.SceneId, this.GameNowTime.Format(ReplayIdTf), this.replayAddId) this.rr = NewReplayRecorder(id) } @@ -1419,7 +1248,7 @@ func (this *Scene) RecordReplayStart() { func (this *Scene) RecordReplayOver() { if !this.Testing && !this.IsHundredScene() && !this.IsMatchScene() { - logger.Logger.Trace("RecordReplayOver-----", this.replayCode, this.NumOfGames, this.replayAddId) + logger.Logger.Trace("RecordReplayOver-----", this.GetReplayCode(), this.NumOfGames, this.replayAddId) this.replayAddId++ this.rr.Fini(this) @@ -1458,7 +1287,7 @@ func (this *Scene) TryDismissRob(params ...int) { this.nogDismiss = this.NumOfGames //如果是满桌并且是禁止匹配真人,那么保持满桌几局 - if this.DbGameFree.GetMatchTrueMan() == common.MatchTrueMan_Forbid && this.IsFull() && rand.Intn(4) == 1 { + if this.GetDBGameFree().GetMatchTrueMan() == common.MatchTrueMan_Forbid && this.IsFull() && rand.Intn(4) == 1 { hasLeave = true } @@ -1474,7 +1303,7 @@ func (this *Scene) TryDismissRob(params ...int) { } } - if !hasLeave && this.DbGameFree.GetMatchTrueMan() != common.MatchTrueMan_Forbid && len(params) > 0 && + if !hasLeave && this.GetDBGameFree().GetMatchTrueMan() != common.MatchTrueMan_Forbid && len(params) > 0 && params[0] == 1 && this.IsFull() && common.RandInt(10000) < 4000 { for _, r := range this.Players { if r.IsRob { @@ -1518,11 +1347,12 @@ func (this *Scene) TryDismissRob(params ...int) { func (this *Scene) CreateGameRecPacket() *server.GWGameRec { return &server.GWGameRec{ - RoomId: proto.Int(this.SceneId), + RoomId: this.SceneId, NumOfGames: proto.Int(this.NumOfGames), GameTime: proto.Int(int(time.Now().Sub(this.GameStartTime) / time.Second)), } } + func (this *Scene) IsAllReady() bool { for _, p := range this.Players { if !p.IsOnLine() || !p.IsReady() { @@ -1594,9 +1424,10 @@ func (this *Scene) CoinPoolCanOut() bool { if setting != nil { return int32(noRobotPlayerCount) >= setting.GetMinOutPlayerNum() } - return int32(noRobotPlayerCount) >= this.dbGameFree.GetMinOutPlayerNum() + return int32(noRobotPlayerCount) >= this.GetDBGameFree().GetMinOutPlayerNum() */ } + func (this *Scene) ClearAutoPlayer() { for _, p := range this.Players { if p.IsAuto() { @@ -1606,35 +1437,11 @@ func (this *Scene) ClearAutoPlayer() { } } -func (this *Scene) NewBigCoinNotice(player *Player, num int64, msgType int64) { - //if !this.Testing && !this.IsMatchScene() { - // if num < model.GameParamData.NoticeCoinMin || model.GameParamData.NoticeCoinMax < num { - // return - // } - // start := time.Now().Add(time.Second * 30).Unix() - // content := fmt.Sprintf("%v|%v|%v", player.GetName(), this.GetHundredSceneName(), num) - // pack := &server.GWNewNotice{ - // Ch: proto.String(""), - // Content: proto.String(content), - // Start: proto.Int64(start), - // Interval: proto.Int64(0), - // Count: proto.Int64(1), - // Msgtype: proto.Int64(msgType), - // Platform: proto.String(player.Platform), - // Isrob: proto.Bool(player.IsRob), - // Priority: proto.Int32(int32(num)), - // } - // if common.HorseRaceLampPriority_Rand == model.GameParamData.NoticePolicy { - // pack.Priority = proto.Int32(rand.Int31n(100)) - // } - // this.SendToWorld(int(server.SSPacketID_PACKET_GW_NEWNOTICE), pack) - //} -} - type GameDetailedParam struct { Trend20Lately string //最近20局开奖结果 CtrlType int PlayerPool map[int]int + CycleId string } // 保存详细游戏日志 @@ -1642,8 +1449,8 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga if this != nil { if !this.Testing { //测试场屏蔽掉 trend20Lately := gameDetailedParam.Trend20Lately - baseScore := this.DbGameFree.GetBaseScore() - if common.IsLocalGame(this.GameId) { + baseScore := this.GetDBGameFree().GetBaseScore() + if common.IsLocalGame(int(this.GameId)) { baseScore = this.BaseScore } if this.IsCoinScene() { @@ -1652,13 +1459,16 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga if _, ok := mapPlatform[p.Platform]; !ok { mapPlatform[p.Platform] = true log := model.NewGameDetailedLogEx(logid, int32(this.GameId), int32(this.SceneId), - this.DbGameFree.GetGameMode(), this.DbGameFree.Id, int32(len(this.Players)), + this.GetDBGameFree().GetGameMode(), this.GetDBGameFree().Id, int32(len(this.Players)), int32(time.Now().Unix()-this.GameNowTime.Unix()), baseScore, - gamedetailednote, p.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[this.GameId], trend20Lately, - gameDetailedParam.CtrlType, gameDetailedParam.PlayerPool) + gamedetailednote, p.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[int(this.GameId)], trend20Lately, + gameDetailedParam.CtrlType, gameDetailedParam.PlayerPool, gameDetailedParam.CycleId) if log != nil { if this.IsMatchScene() { - log.MatchId = this.MatchId + log.MatchId = this.GetMatch().GetMatchSortId() + } + if this.IsCustom() { + log.CycleId = this.CycleID } LogChannelSingleton.WriteLog(log) } @@ -1666,13 +1476,16 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga } } else { log := model.NewGameDetailedLogEx(logid, int32(this.GameId), int32(this.SceneId), - this.DbGameFree.GetGameMode(), this.DbGameFree.Id, int32(len(this.Players)), + this.GetDBGameFree().GetGameMode(), this.GetDBGameFree().Id, int32(len(this.Players)), int32(time.Now().Unix()-this.GameNowTime.Unix()), baseScore, - gamedetailednote, this.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[this.GameId], trend20Lately, - gameDetailedParam.CtrlType, gameDetailedParam.PlayerPool) + gamedetailednote, this.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[int(this.GameId)], trend20Lately, + gameDetailedParam.CtrlType, gameDetailedParam.PlayerPool, gameDetailedParam.CycleId) if log != nil { if this.IsMatchScene() { - log.MatchId = this.MatchId + log.MatchId = this.GetMatch().GetMatchSortId() + } + if this.IsCustom() { + log.CycleId = this.CycleID } newLog := new(model.GameDetailedLog) *newLog = *log @@ -1704,6 +1517,7 @@ type SaveGamePlayerListLogParam struct { WinSmallGame int64 //拉霸专用 小游戏奖励 WinTotal int64 //拉霸专用 本局输赢 PlayerName string //玩家名字 + CycleId string // 房卡场对局id } func GetSaveGamePlayerListLogParam(platform, channel, promoter, packageTag, logid string, @@ -1733,7 +1547,7 @@ func (this *Scene) SaveFriendRecord(snid int32, isWin int32, billCoin int64, bas if this.SceneMode == common.SceneMode_Private { return } - log := model.NewFriendRecordLogEx(this.Platform, snid, isWin, int32(this.GameId), baseScore, billCoin, this.MatchType) + log := model.NewFriendRecordLogEx(this.Platform, snid, isWin, this.GameId, baseScore, billCoin, int64(this.GetMatch().GetMatchType())) if log != nil { LogChannelSingleton.WriteLog(log) } @@ -1747,12 +1561,12 @@ func (this *Scene) SaveGamePlayerListLog(snid int32, param *SaveGamePlayerListLo playerEx := this.GetPlayer(snid) //有些结算的时候,玩家已经退场,不要用是否在游戏,0709,修改为扣税后数值 if playerEx != nil && !param.IsLeave && !playerEx.IsRob && (param.IsFree || param.TotalIn != 0 || param.TotalOut != 0) { - totalFlow := param.ValidFlow * int64(this.DbGameFree.GetBetWaterRate()) / 100 + totalFlow := param.ValidFlow * int64(this.GetDBGameFree().GetBetWaterRate()) / 100 playerEx.TotalConvertibleFlow += totalFlow playerEx.TotalFlow += totalFlow playerEx.ValidCacheBetTotal += param.ValidBet //报表统计 - //playerEx.SaveReportForm(int(this.DbGameFree.GetGameClass()), this.SceneMode, this.KeyGameId, + //playerEx.SaveReportForm(int(this.GetDBGameFree().GetGameClass()), this.SceneMode, this.KeyGameId, // param.WinAmountNoAnyTax, totalFlow, param.ValidBet) //分配利润 ProfitDistribution(playerEx, param.TaxCoin, param.ClubPumpCoin, totalFlow) @@ -1768,8 +1582,8 @@ func (this *Scene) SaveGamePlayerListLog(snid int32, param *SaveGamePlayerListLo this.GameId == common.GameId_TamQuoc { //复仇者联盟强制为0,所有场次操作记录放一起 roomType = 0 } - baseScore := this.DbGameFree.GetBaseScore() - if common.IsLocalGame(this.GameId) { + baseScore := this.GetDBGameFree().GetBaseScore() + if common.IsLocalGame(int(this.GameId)) { baseScore = this.BaseScore } @@ -1779,10 +1593,10 @@ func (this *Scene) SaveGamePlayerListLog(snid int32, param *SaveGamePlayerListLo } log := model.NewGamePlayerListLogEx(snid, param.LogId, param.Platform, param.Channel, param.Promoter, param.PackageTag, - int32(this.GameId), baseScore, int32(this.SceneId), this.DbGameFree.GetGameMode(), + this.GameId, baseScore, this.SceneId, int32(this.GetGameMode()), this.GetGameFreeId(), param.TotalIn, param.TotalOut, this.ClubId, this.RoomId, param.TaxCoin, param.ClubPumpCoin, roomType, - param.BetAmount, param.WinAmountNoAnyTax, this.KeyGameId, Name, this.DbGameFree.GetGameClass(), - param.IsFirstGame, this.MatchId, this.MatchType, param.IsFree, param.WinSmallGame, param.WinTotal) + param.BetAmount, param.WinAmountNoAnyTax, this.KeyGameId, Name, this.GetDBGameFree().GetGameClass(), + param.IsFirstGame, this.GetMatch().GetMatchSortId(), int64(this.GetMatch().GetMatchType()), param.IsFree, param.WinSmallGame, param.WinTotal, param.CycleId) if log != nil { LogChannelSingleton.WriteLog(log) } @@ -1813,9 +1627,9 @@ func (this *Scene) RobotIsLimit() bool { return true } // 房间需要给真人留一个空位 - //if this.DbGameFree.GetMatchTrueMan() == common.MatchTrueMan_Priority && this.playerNum-this.realPlayerNum-1 <= this.robotNum { + //if this.GetDBGameFree().GetMatchTrueMan() == common.MatchTrueMan_Priority && this.playerNum-this.realPlayerNum-1 <= this.robotNum { // 没有真人的房间需要给真人留一个空位 - if this.DbGameFree.GetMatchTrueMan() == common.MatchTrueMan_Priority && this.playerNum-1 <= this.robotNum { + if this.GetDBGameFree().GetMatchTrueMan() == common.MatchTrueMan_Priority && this.GetPlayerNum()-1 <= this.robotNum { return true } } else if this.IsHundredScene() { @@ -1828,11 +1642,11 @@ func (this *Scene) RobotIsLimit() bool { } func (this *Scene) RandRobotCnt() { - if this.DbGameFree != nil { - if this.DbGameFree.GetMatchMode() == 1 { + if this.GetDBGameFree() != nil { + if this.GetDBGameFree().GetMatchMode() == 1 { return } - numrng := this.DbGameFree.GetRobotNumRng() + numrng := this.GetDBGameFree().GetRobotNumRng() if len(numrng) >= 2 { if numrng[1] == numrng[0] { this.robotLimit = int(numrng[0]) @@ -1846,13 +1660,14 @@ func (this *Scene) RandRobotCnt() { //logger.Logger.Tracef("===(this *Scene) RandRobotCnt() sceneid:%v gameid:%v mode:%v robotLimit:%v robotNum:%v", this.SceneId, this.GameId, this.GameMode, this.robotLimit, this.robotNum) } } + func (this *Scene) GetRobotTime() int64 { l := int64(common.RandInt(model.NormalParamData.RobotRandomTimeMin, model.NormalParamData.RobotRandomTimeMax)) return l + time.Now().Unix() } func (this *Scene) IsPreCreateScene() bool { - return this.DbGameFree.GetCreateRoomNum() > 0 + return this.GetDBGameFree().GetCreateRoomNum() > 0 } func (this *Scene) TryInviteRobot() { @@ -1860,7 +1675,7 @@ func (this *Scene) TryInviteRobot() { return } // 游戏配置错误 - if this.DbGameFree == nil { + if this.GetDBGameFree() == nil { return } // 私有房间不邀请机器人,比赛场部邀请机器人 @@ -1868,11 +1683,11 @@ func (this *Scene) TryInviteRobot() { return } // 队列匹配不邀请机器人 - if this.DbGameFree.GetMatchMode() == 1 { + if this.GetDBGameFree().GetMatchMode() == 1 { return } // 不使用机器人 - if this.DbGameFree.GetBot() == 0 { //机器人不进的场 + if this.GetDBGameFree().GetBot() == 0 { //机器人不进的场 return } @@ -1886,7 +1701,7 @@ func (this *Scene) TryInviteRobot() { return } - switch this.DbGameFree.GetGameType() { + switch this.GetDBGameFree().GetGameType() { case common.GameType_Fishing: if this.robotNum >= this.robotLimit { return @@ -1922,8 +1737,8 @@ func (this *Scene) TryInviteRobot() { } hadCnt := len(this.Players) robCnt = this.robotLimit - this.robotNum - if robCnt > this.playerNum-hadCnt { - robCnt = this.playerNum - hadCnt + if robCnt > this.GetPlayerNum()-hadCnt { + robCnt = this.GetPlayerNum() - hadCnt } } else if this.IsHundredScene() { robCnt = this.robotLimit - this.robotNum @@ -1934,7 +1749,7 @@ func (this *Scene) TryInviteRobot() { return } hadCnt := len(this.Players) - robCnt = this.playerNum - hadCnt + robCnt = this.GetPlayerNum() - hadCnt if this.realPlayerNum == 0 { //一个真人都没有,不让机器人坐满房间 robCnt-- } @@ -1942,7 +1757,7 @@ func (this *Scene) TryInviteRobot() { } if robCnt > 0 { var num int32 - if this.DbGameFree.GameId == common.GameId_ChesstitiansCambodianRobot { + if this.GetDBGameFree().GameId == common.GameId_ChesstitiansCambodianRobot { num = int32(robCnt) } else { num = this.Rand.Int31n(int32(robCnt + 1)) @@ -1951,11 +1766,11 @@ func (this *Scene) TryInviteRobot() { if this.IsCoinScene() /* && this.gaming*/ { //如果牌局正在进行中,一个一个进 num = 1 } - //logger.Logger.Tracef("(this *Scene)(groupid:%v sceneid:%v) TryInviteRobot(%v) current robot(%v+%v) robotlimit(%v)", this.groupId, this.sceneId, this.dbGameFree.GetName()+this.dbGameFree.GetTitle(), this.robotNum, num, this.robotLimit) + //logger.Logger.Tracef("(this *Scene)(groupid:%v sceneid:%v) TryInviteRobot(%v) current robot(%v+%v) robotlimit(%v)", this.groupId, this.sceneId, this.GetDBGameFree().GetName()+this.GetDBGameFree().GetTitle(), this.robotNum, num, this.robotLimit) //同步下房间里的参数' - NpcServerAgentSingleton.SyncDBGameFree(this.SceneId, this.GetDBGameFree()) + NpcServerAgentSingleton.SyncDBGameFree(int(this.SceneId), this.GetDBGameFree()) //然后再邀请 - NpcServerAgentSingleton.Invite(this.SceneId, int(num), this.DbGameFree.Id) + NpcServerAgentSingleton.Invite(int(this.SceneId), int(num), this.GetDBGameFree().Id) } } } @@ -1987,10 +1802,10 @@ func (this *Scene) IsAllRealInGame() bool { // 是否开启机器人对战游戏 func (this *Scene) IsRobFightGame() bool { - if this.DbGameFree == nil { + if this.GetDBGameFree() == nil { return false } - if this.DbGameFree.GetAi()[0] == 1 && model.GameParamData.IsRobFightTest == true { + if this.GetDBGameFree().GetAi()[0] == 1 && model.GameParamData.IsRobFightTest == true { return true } return false @@ -2019,7 +1834,7 @@ func (this *Scene) RobotLeaveHundred() { //钱多 leave = true reason = common.PlayerLeaveReason_Normal - } else if p.Coin < int64(this.DbGameFree.GetBetLimit()) { + } else if p.Coin < int64(this.GetDBGameFree().GetBetLimit()) { //少于下注限额 leave = true reason = common.PlayerLeaveReason_Normal @@ -2079,7 +1894,7 @@ func (this *Scene) GetRecordId() string { func (this *Scene) RandTakeCoin(p *Player) (takeCoin, leaveCoin, gameTimes int64) { if p.IsRob && p.IsLocal { - dbGameFree := this.DbGameFree + dbGameFree := this.GetDBGameFree() takerng := dbGameFree.GetRobotTakeCoin() if len(takerng) >= 2 && takerng[1] > takerng[0] { if takerng[0] < dbGameFree.GetLimitCoin() { @@ -2118,8 +1933,8 @@ func (this *Scene) TryBillExGameDrop(p *Player) { this.DropCollectBox(p) - baseScore := this.DbGameFree.BaseScore - if common.IsLocalGame(this.GameId) { + baseScore := this.GetDBGameFree().BaseScore + if common.IsLocalGame(int(this.GameId)) { baseScore = this.BaseScore } if baseScore == 0 { @@ -2127,7 +1942,7 @@ func (this *Scene) TryBillExGameDrop(p *Player) { } // 场次掉落开关 - if this.DbGameFree.IsDrop != 1 { + if this.GetDBGameFree().IsDrop != 1 { return } @@ -2137,32 +1952,27 @@ func (this *Scene) TryBillExGameDrop(p *Player) { } dropInfo := srvdata.GameDropMgrSingleton.GetDropInfoByBaseScore(baseScore) - if dropInfo != nil && len(dropInfo) != 0 && p.Items != nil { + if dropInfo != nil && len(dropInfo) != 0 { realDrop := make(map[int32]int32) for _, drop := range dropInfo { - if _, ok := p.Items[drop.ItemId]; ok { - //概率 - randTmp := rand.Int31n(10000) - if randTmp < drop.Rate { - //个数 - num := drop.MinAmount - if drop.MaxAmount > drop.MinAmount { - num = rand.Int31n(drop.MaxAmount-drop.MinAmount+1) + drop.MinAmount - } - oldNum := num - a := math.Max(float64(p.MoneyTotal), 50) * 10.0 / math.Max(float64(p.VCardCost), 500.0) - num = int32(float64(num) * math.Min(a, 1.5)) - if num == 0 { - // 50%概率给oldNum - if rand.Int31n(100) < 50 { - num = oldNum - } - } - p.Items[drop.ItemId] += int64(num) - realDrop[drop.ItemId] = num + //概率 + randTmp := rand.Int31n(10000) + if randTmp < drop.Rate { + //个数 + num := drop.MinAmount + if drop.MaxAmount > drop.MinAmount { + num = rand.Int31n(drop.MaxAmount-drop.MinAmount+1) + drop.MinAmount } - } else { - logger.Logger.Error("itemid not exist! ", drop.ItemId) + oldNum := num + a := math.Max(float64(p.MoneyTotal), 50) * 10.0 / math.Max(float64(p.VCardCost), 500.0) + num = int32(float64(num) * math.Min(a, 1.5)) + if num == 0 { + // 50%概率给oldNum + if rand.Int31n(100) < 50 { + num = oldNum + } + } + realDrop[drop.ItemId] = num } } if realDrop != nil && len(realDrop) != 0 { @@ -2170,30 +1980,21 @@ func (this *Scene) TryBillExGameDrop(p *Player) { pack := &player.SCGameExDropItems{} pack.Items = make(map[int32]int32) for id, num := range realDrop { - remark := fmt.Sprintf("游戏掉落%v", id) pack.Items[id] = proto.Int32(num) itemData := srvdata.GameItemMgr.Get(p.Platform, id) if itemData != nil { - //logType 0获得 1消耗 - log := model.NewItemLogEx(model.ItemParam{ - Platform: p.Platform, - SnId: p.SnId, - LogType: 0, - ItemId: itemData.Id, - ItemName: itemData.Name, - Count: int64(num), - Remark: remark, - TypeId: common.GainWay_Game, + p.AddItems(&model.AddItemParam{ + P: p.PlayerData, + Change: nil, + GainWay: common.GainWay_Game, + Operator: "system", + Remark: fmt.Sprintf("游戏掉落%v", id), GameId: int64(this.GameId), GameFreeId: int64(this.GetGameFreeId()), }) - if log != nil { - logger.Logger.Trace("WriteLog: ", log) - LogChannelSingleton.WriteLog(log) - } } } - if pack != nil && pack.Items != nil && len(pack.Items) != 0 { + if len(pack.Items) > 0 { p.SendToClient(int(player.PlayerPacketID_PACKET_SCGAMEEXDROPITEMS), pack) logger.Logger.Trace("SCGAMEEXDROPITEMS ", pack) } @@ -2218,28 +2019,23 @@ func (this *Scene) DropCollectBox(p *Player) { pack.Items = make(map[int32]int32) itemData := srvdata.GameItemMgr.Get(p.Platform, common.ItemIDCollectBox) if itemData != nil { - p.Items[itemData.Id] = p.Items[itemData.Id] + 1 pack.Items = map[int32]int32{itemData.Id: 1} - remark := fmt.Sprintf("游戏掉落%v", itemData.Id) - //logType 0获得 1消耗 - log := model.NewItemLogEx(model.ItemParam{ - Platform: p.Platform, - SnId: p.SnId, - LogType: 0, - ItemId: itemData.Id, - ItemName: itemData.Name, - Count: 1, - Remark: remark, - TypeId: common.GainWay_Game, + p.AddItems(&model.AddItemParam{ + P: p.PlayerData, + Change: []*model.Item{ + { + ItemId: itemData.Id, + ItemNum: 1, + }, + }, + GainWay: common.GainWay_Game, + Operator: "system", + Remark: fmt.Sprintf("游戏掉落%v", itemData.Id), GameId: int64(this.GameId), GameFreeId: int64(this.GetGameFreeId()), }) - if log != nil { - logger.Logger.Trace("WriteLog: ", log) - LogChannelSingleton.WriteLog(log) - } } - if pack != nil && pack.Items != nil && len(pack.Items) != 0 { + if len(pack.Items) > 0 { p.SendToClient(int(player.PlayerPacketID_PACKET_SCGAMEEXDROPITEMS), pack) logger.Logger.Trace("SCGAMEEXDROPITEMS", pack) } @@ -2411,7 +2207,7 @@ func (this *Scene) Statistics(param *StaticParam) { return } - _, isNovice := p.NoviceOdds(this.GameId) + _, isNovice := p.NoviceOdds(int(this.GameId)) isControl := this.IsControl(param.HasRobotGaming) // 需要调控的房间 var wbLevel = p.WBLevel // 原来的黑白名单等级; 注意SyncPlayerDatas会修改WBLevel @@ -2496,8 +2292,8 @@ func (this *Scene) Statistics(param *StaticParam) { } // 新手输赢统计 - if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, this.GameId) && isControl && wbLevel == 0 && isNovice { - keyNoviceGameId := common.GetKeyNoviceGameId(this.GameId) + if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, int(this.GameId)) && isControl && wbLevel == 0 && isNovice { + keyNoviceGameId := common.GetKeyNoviceGameId(int(this.GameId)) var gs *model.PlayerGameStatics if data, ok := p.GDatas[keyNoviceGameId]; ok { statics = append(statics, &data.Statics) @@ -2597,7 +2393,7 @@ func (this *Scene) Statistics(param *StaticParam) { } p.WinCoin += totalOut p.TaxCoin += param.GainTax - if isPlayerPool && srvdata.GameFreeMgr.IsPlayerPool(this.GameId) { + if isPlayerPool && srvdata.GameFreeMgr.IsPlayerPool(int(this.GameId)) { p.TotalOut += totalOut p.PlayerTax += param.GainTax } @@ -2606,7 +2402,7 @@ func (this *Scene) Statistics(param *StaticParam) { p.FailTimes++ } p.FailCoin += totalIn - if isPlayerPool && srvdata.GameFreeMgr.IsPlayerPool(this.GameId) { + if isPlayerPool && srvdata.GameFreeMgr.IsPlayerPool(int(this.GameId)) { p.TotalIn += totalIn } } else { diff --git a/gamesrv/base/scene_mgr.go b/gamesrv/base/scene_mgr.go index c241b03..4be3d5e 100644 --- a/gamesrv/base/scene_mgr.go +++ b/gamesrv/base/scene_mgr.go @@ -21,136 +21,82 @@ var SceneMgrSington = &SceneMgr{ } type SceneMgr struct { - scenes map[int]*Scene - scenesByGame map[int]map[int]*Scene - scenesByGameFree map[int32]map[int]*Scene - lastSendJackPot time.Time - PlatformScene map[string]bool + scenes map[int]*Scene // 房间id + scenesByGame map[int]map[int]*Scene // 游戏id:房间id + scenesByGameFree map[int32]map[int]*Scene // 场次id:房间id + lastSendJackPot time.Time // + PlatformScene map[string]bool // } -func (this *SceneMgr) makeKey(gameid, gamemode int) int { - return int(gameid*10000 + gamemode) +type CreateSceneParam struct { + Session *netlib.Session + *server.WGCreateScene } -func (this *SceneMgr) CreateScene(s *netlib.Session, sceneId, gameMode, sceneMode, gameId int, platform string, - params []int64, agentor, creator int32, replayCode string, hallId, groupId, totalOfGames int32, - dbGameFree *server.DB_GameFree, bEnterAfterStart bool, baseScore int32, playerNum int, chessRank []int32, paramsEx ...int32) *Scene { - scene := NewScene(s, sceneId, gameMode, sceneMode, gameId, platform, params, agentor, creator, replayCode, - hallId, groupId, totalOfGames, dbGameFree, bEnterAfterStart, baseScore, playerNum, chessRank, paramsEx...) +func (this *SceneMgr) CreateScene(args *CreateSceneParam) *Scene { + scene := NewScene(args) if scene == nil { logger.Logger.Error("(this *SceneMgr) CreateScene, scene == nil") return nil } - this.scenes[scene.SceneId] = scene + + platform := args.GetPlatform() + gameId := args.GetGameId() + gameFreeId := args.GetDBGameFree().GetId() + // 平台标记 + this.scenes[int(scene.SceneId)] = scene if _, ok := this.PlatformScene[platform]; !ok { this.PlatformScene[platform] = true } - // - key := this.makeKey(gameId, gameMode) - if ss, exist := this.scenesByGame[key]; exist { - ss[scene.SceneId] = scene + // 游戏id索引 + if ss, exist := this.scenesByGame[int(gameId)]; exist { + ss[int(scene.SceneId)] = scene } else { ss = make(map[int]*Scene) - ss[scene.SceneId] = scene - this.scenesByGame[key] = ss + ss[int(scene.SceneId)] = scene + this.scenesByGame[int(gameId)] = ss } - // - if ss, exist := this.scenesByGameFree[dbGameFree.GetId()]; exist { - ss[scene.SceneId] = scene + // 场次id索引 + if ss, exist := this.scenesByGameFree[gameFreeId]; exist { + ss[int(scene.SceneId)] = scene } else { ss = make(map[int]*Scene) - ss[scene.SceneId] = scene - this.scenesByGameFree[dbGameFree.GetId()] = ss + ss[int(scene.SceneId)] = scene + this.scenesByGameFree[gameFreeId] = ss } scene.OnStart() - logger.Logger.Infof("(this *SceneMgr) CreateScene,New scene,id:[%d] replaycode:[%v]", scene.SceneId, replayCode) + logger.Logger.Infof("(this *SceneMgr) CreateScene,New scene,id:[%d] replaycode:[%v]", scene.SceneId, args.GetReplayCode()) + return scene } func (this *SceneMgr) DestroyScene(sceneId int) { if scene, exist := this.scenes[sceneId]; exist { scene.OnStop() - // - key := this.makeKey(scene.GameId, scene.GameMode) - if ss, exist := this.scenesByGame[key]; exist { - delete(ss, scene.SceneId) + // 游戏id + if ss, exist := this.scenesByGame[scene.GetGameId()]; exist { + delete(ss, int(scene.SceneId)) } - // + // 场次id if ss, exist := this.scenesByGameFree[scene.GetGameFreeId()]; exist { - delete(ss, scene.SceneId) + delete(ss, int(scene.SceneId)) } + // 房间id delete(this.scenes, sceneId) logger.Logger.Infof("(this *SceneMgr) DestroyScene, sceneid = %v", sceneId) } } -func (this *SceneMgr) GetPlayerNumByGameFree(platform string, gamefreeid, groupId int32) int32 { - var num int32 - if ss, exist := SceneMgrSington.scenesByGameFree[gamefreeid]; exist { - for _, scene := range ss { - if groupId != 0 { - if scene.GroupId == groupId { - cnt := scene.GetRealPlayerCnt() - num += int32(cnt) - } - } else { - if scene.Platform == platform { - cnt := scene.GetRealPlayerCnt() - num += int32(cnt) - } - } - } - } - return num -} - -func (this *SceneMgr) GetPlayerNumByGame(platform string, gameid, gamemode, groupId int32) map[int32]int32 { - nums := make(map[int32]int32) - key := this.makeKey(int(gameid), int(gamemode)) - if ss, exist := SceneMgrSington.scenesByGame[key]; exist { - for _, scene := range ss { - if groupId != 0 { - if scene.GroupId == groupId { - cnt := scene.GetRealPlayerCnt() - nums[scene.GetGameFreeId()] = nums[scene.GetGameFreeId()] + int32(cnt) - } - } else { - if scene.Platform == platform { - cnt := scene.GetRealPlayerCnt() - nums[scene.GetGameFreeId()] = nums[scene.GetGameFreeId()] + int32(cnt) - } - } - } - } - return nums -} - -func (this *SceneMgr) GetPlayersByGameFree(platform string, gamefreeid int32) []*Player { - players := make([]*Player, 0) - if ss, exist := SceneMgrSington.scenesByGameFree[gamefreeid]; exist { - for _, scene := range ss { - if scene.Platform == platform { - for _, p := range scene.Players { - if p != nil { - players = append(players, p) - } - } - } - } - } - return players -} - func (this *SceneMgr) GetScene(sceneId int) *Scene { if s, exist := this.scenes[sceneId]; exist { return s } return nil } + func (this *SceneMgr) GetSceneByGameId(platform string, gameId int32) []*Scene { - key := this.makeKey(int(gameId), 0) var ss []*Scene - if data, ok := this.scenesByGame[key]; ok { + if data, ok := this.scenesByGame[int(gameId)]; ok { for _, scene := range data { if scene.Platform == platform { ss = append(ss, scene) @@ -159,6 +105,7 @@ func (this *SceneMgr) GetSceneByGameId(platform string, gameId int32) []*Scene { } return ss } + func (this *SceneMgr) JackPotSync(platform string, gameIds ...int32) { for _, gameId := range gameIds { ss := this.GetSceneByGameId(platform, gameId) @@ -169,7 +116,7 @@ func (this *SceneMgr) JackPotSync(platform string, gameIds ...int32) { val := s.sp.GetJackPotVal(s) if val > 0 { jpfi := &gamehall.GameJackpotFundInfo{ - GameFreeId: proto.Int32(s.DbGameFree.Id), + GameFreeId: proto.Int32(s.GetGameFreeId()), JackPotFund: proto.Int64(val), } pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) @@ -195,7 +142,7 @@ func (this *SceneMgr) JackPotSync(platform string, gameIds ...int32) { for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - cPack, err := MulticastMaker.CreateMulticastPacket(int(gamehall.HundredScenePacketID_PACKET_SC_GAMEJACKPOT), pack, v...) + cPack, err := common.CreateMulticastPacket(int(gamehall.HundredScenePacketID_PACKET_SC_GAMEJACKPOT), pack, v...) if err == nil { proto.SetDefaults(cPack) gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), cPack) @@ -205,16 +152,13 @@ func (this *SceneMgr) JackPotSync(platform string, gameIds ...int32) { } } } + func (this *SceneMgr) OnMiniTimer() { - for _, scene := range this.scenes { - scene.SyncPlayerCoin() - } + } func (this *SceneMgr) OnHourTimer() { - // for _, scene := range this.scenes { - // scene.OnHourTimer() - // } + } func (this *SceneMgr) OnDayTimer() { diff --git a/gamesrv/base/scene_policy.go b/gamesrv/base/scene_policy.go index 9b2ee48..3c36f38 100644 --- a/gamesrv/base/scene_policy.go +++ b/gamesrv/base/scene_policy.go @@ -1,15 +1,9 @@ package base -import ( - "time" -) - // 根据不同的房间模式,选择不同的房间业务逻辑 var ScenePolicyPool = make(map[int]map[int]ScenePolicy) // gameId:gameMode type ScenePolicy interface { - //心跳间隔 - GetHeartBeatInterval() time.Duration //场景开启事件 OnStart(s *Scene) //场景关闭事件 @@ -105,7 +99,6 @@ func RegisteScenePolicy(gameId, mode int, sp ScenePolicy) { type BaseScenePolicy struct { } -func (bsp *BaseScenePolicy) GetHeartBeatInterval() time.Duration { return time.Second } func (bsp *BaseScenePolicy) OnStart(s *Scene) { if s.aiMgr != nil { s.aiMgr.OnStart(s) diff --git a/gamesrv/caishen/scenedata_caishen.go b/gamesrv/caishen/scenedata_caishen.go index 677e4a7..fc58b33 100644 --- a/gamesrv/caishen/scenedata_caishen.go +++ b/gamesrv/caishen/scenedata_caishen.go @@ -59,14 +59,14 @@ func (this *CaiShenSceneData) SceneDestroy(force bool) { } func (this *CaiShenSceneData) init() bool { - if this.DbGameFree == nil { + if this.GetDBGameFree() == nil { return false } - params := this.DbGameFree.GetJackpot() + params := this.GetDBGameFree().GetJackpot() this.jackpot = &base.SlotJackpotPool{} if this.jackpot.Small <= 0 { this.jackpot.Small = 0 - this.jackpot.VirtualJK = int64(params[rule.CAISHEN_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) + this.jackpot.VirtualJK = int64(params[rule.CAISHEN_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) } str := base.XSlotsPoolMgr.GetPool(this.GetGameFreeId(), this.Platform) if str != "" { @@ -102,7 +102,7 @@ type CaiShenSpinResult struct { } func (this *CaiShenSceneData) CalcLinePrize(cards []int, betLines []int64, betValue int64) (spinRes CaiShenSpinResult) { - taxRate := this.DbGameFree.GetTaxRate() + taxRate := this.GetDBGameFree().GetTaxRate() calcTaxScore := func(score int64, taxScore *int64) int64 { newScore := int64(float64(score) * float64(10000-taxRate) / 10000.0) if taxScore != nil { @@ -188,7 +188,7 @@ func (this *CaiShenSceneData) BroadcastJackpot(sync bool) { this.lastJackpotValue = this.jackpot.VirtualJK pack := &gamehall.SCHundredSceneGetGameJackpot{} jpfi := &gamehall.GameJackpotFundInfo{ - GameFreeId: proto.Int32(this.DbGameFree.Id), + GameFreeId: proto.Int32(this.GetDBGameFree().Id), JackPotFund: proto.Int64(this.jackpot.VirtualJK), } pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) @@ -215,7 +215,7 @@ func (this *CaiShenSceneData) PopCoinPool(winCoin int64, IsNovice bool) { } } func (this *CaiShenSceneData) RecordBurstLog(name string, wincoin, totalbet int64) { - log := model.NewBurstJackpotLog(this.Platform, this.DbGameFree.GameId, this.GetGameFreeId(), name, wincoin, totalbet) + log := model.NewBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId, this.GetGameFreeId(), name, wincoin, totalbet) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.InsertBurstJackpotLogs(log) }), nil, "InsertBurstJackpotLogs").Start() @@ -223,7 +223,7 @@ func (this *CaiShenSceneData) RecordBurstLog(name string, wincoin, totalbet int6 func (this *CaiShenSceneData) BurstHistory(player *CaiShenPlayerData) { task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.GetBurstJackpotLog(this.Platform, this.DbGameFree.GameId) + return model.GetBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId) }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { var logsp []*caishen.CaiShenBurstHistoryInfo if data != nil { @@ -251,7 +251,7 @@ func (this *CaiShenSceneData) GetLastBurstJackPot() time.Time { } func (this *CaiShenSceneData) SetLastBurstJackPot() { var randT = rand.Intn(25200-7200+1) + 7200 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(25200-7200+1) + 7200 case 2: @@ -267,7 +267,7 @@ func (this *CaiShenSceneData) SetLastBurstJackPot() { func (this *CaiShenSceneData) AIAddJackPot() { if time.Now().Sub(this.lastJackPot) > 0 { var randT = rand.Intn(3) + 1 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(3) + 1 case 2: @@ -280,20 +280,20 @@ func (this *CaiShenSceneData) AIAddJackPot() { randT = rand.Intn(3) + 1 } this.lastJackPot = time.Now().Add(time.Second * time.Duration(randT)) - val := int64(math.Floor(float64(this.DbGameFree.GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) + val := int64(math.Floor(float64(this.GetDBGameFree().GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) this.jackpot.VirtualJK += val } } func (this *CaiShenSceneData) AIBurstJackPot() { if time.Now().Sub(this.GetLastBurstJackPot()) > 0 { this.SetLastBurstJackPot() - jackpotParams := this.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParams[rule.CAISHEN_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) //奖池初始值 + jackpotParams := this.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParams[rule.CAISHEN_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) //奖池初始值 //AI机器人爆奖 val := this.jackpot.VirtualJK this.jackpot.VirtualJK = jackpotInit - bet := int64(this.DbGameFree.GetBaseScore()) * int64(rule.LINENUM) + bet := int64(this.GetDBGameFree().GetBaseScore()) * int64(rule.LINENUM) this.RecordBurstLog(this.RandNickName(), val, int64(bet)) } } @@ -314,11 +314,11 @@ func (this *CaiShenSceneData) KickPlayerByTime() { } //for _, p := range this.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // this.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(this.DbGameFree.GetPlayNumLimit()) { + // this.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(this.GetDBGameFree().GetPlayNumLimit()) { // this.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} diff --git a/gamesrv/caishen/scenepolicy_caishen.go b/gamesrv/caishen/scenepolicy_caishen.go index 0f9b0f0..5c7a8c3 100644 --- a/gamesrv/caishen/scenepolicy_caishen.go +++ b/gamesrv/caishen/scenepolicy_caishen.go @@ -94,8 +94,8 @@ func (this *ScenePolicyCaiShen) OnPlayerEnter(s *base.Scene, p *base.Player) { logger.Logger.Trace("(this *ScenePolicyCaiShen) OnPlayerEnter, SceneId=", s.SceneId, " player=", p.SnId) if sceneEx, ok := s.ExtraData.(*CaiShenSceneData); ok { playerEx := &CaiShenPlayerData{Player: p} - playerEx.init(s) // 玩家当前信息初始化 - playerEx.score = sceneEx.DbGameFree.GetBaseScore() // 底注 + playerEx.init(s) // 玩家当前信息初始化 + playerEx.score = sceneEx.GetDBGameFree().GetBaseScore() // 底注 sceneEx.players[p.SnId] = playerEx p.ExtraData = playerEx CaiShenSendRoomInfo(s, p, sceneEx, playerEx, nil) @@ -230,14 +230,14 @@ func (this *ScenePolicyCaiShen) GetJackPotVal(s *base.Scene) int64 { func CaiShenSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *CaiShenSceneData, playerEx *CaiShenPlayerData, data *caishen.GameBilledData) { logger.Logger.Trace("-------------------发送房间消息 ", s.RoomId, p.SnId) pack := &caishen.SCCaiShenRoomInfo{ - RoomId: proto.Int(s.SceneId), + RoomId: s.SceneId, Creator: proto.Int32(s.Creator), - GameId: proto.Int(s.GameId), - RoomMode: proto.Int(s.GameMode), + GameId: s.GameId, + RoomMode: s.GameMode, Params: common.CopySliceInt64ToInt32(s.Params), State: proto.Int(s.SceneState.GetState()), Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK), - GameFreeId: proto.Int32(s.DbGameFree.Id), + GameFreeId: proto.Int32(s.GetDBGameFree().Id), BilledData: data, } @@ -257,7 +257,7 @@ func CaiShenSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *CaiShenSceneDat //} pack.BetLines = playerEx.betLines pack.FreeTimes = proto.Int32(playerEx.freeTimes) - pack.Chip = proto.Int32(s.DbGameFree.BaseScore) + pack.Chip = proto.Int32(s.GetDBGameFree().BaseScore) pack.SpinID = proto.Int64(playerEx.spinID) if playerEx.totalPriceBonus > 0 { switch playerEx.bonusStage { @@ -373,7 +373,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op return false } //先做底注校验 - if sceneEx.DbGameFree.GetBaseScore() != int32(params[0]) { + if sceneEx.GetDBGameFree().GetBaseScore() != int32(params[0]) { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, caishen.OpResultCode_OPRC_Error, params) return false } @@ -407,7 +407,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op if playerEx.freeTimes <= 0 && totalBetValue > playerEx.Coin { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, caishen.OpResultCode_OPRC_CoinNotEnough, params) return false - } else if playerEx.freeTimes <= 0 && int64(sceneEx.DbGameFree.GetBetLimit()) > playerEx.Coin { //押注限制 + } else if playerEx.freeTimes <= 0 && int64(sceneEx.GetDBGameFree().GetBetLimit()) > playerEx.Coin { //押注限制 this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, caishen.OpResultCode_OPRC_CoinNotEnough, params) return false } @@ -422,7 +422,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op sceneEx.CpCtx = base.CoinPoolMgr.GetCoinPoolCtx(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) //税收比例 - taxRate := sceneEx.DbGameFree.GetTaxRate() + taxRate := sceneEx.GetDBGameFree().GetTaxRate() if taxRate < 0 || taxRate > 10000 { logger.Logger.Tracef("CaiShenErrorTaxRate [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate) taxRate = 500 @@ -445,8 +445,8 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 // 奖池参数 - var jackpotParam = sceneEx.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParam[rule.CAISHEN_JACKPOT_InitJackpot]) * int64(sceneEx.DbGameFree.GetBaseScore()) //奖池初始值 + var jackpotParam = sceneEx.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParam[rule.CAISHEN_JACKPOT_InitJackpot]) * int64(sceneEx.GetDBGameFree().GetBaseScore()) //奖池初始值 var jackpotFundAdd, prizeFundAdd int64 if playerEx.freeTimes <= 0 { //正常模式才能记录用户的押注变化,免费模式不能改变押注 @@ -466,7 +466,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op ////统计参与游戏次数 //if !sceneEx.Testing && !playerEx.IsRob { // pack := &server.GWSceneEnd{ - // GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + // GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), // Players: []*server.PlayerCtx{&server.PlayerCtx{SnId: proto.Int32(playerEx.SnId), Coin: proto.Int64(playerEx.Coin)}}, // } // proto.SetDefaults(pack) @@ -656,7 +656,7 @@ func (this *SceneStateCaiShenStart) OnPlayerOp(s *base.Scene, p *base.Player, op case CaiShenPlayerHistory: task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { spinid := strconv.FormatInt(int64(playerEx.SnId), 10) - gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.DbGameFree.GetGameClass(), s.GameId) + gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.GetDBGameFree().GetGameClass(), int(s.GameId)) pack := &caishen.SCCaiShenPlayerHistory{} for _, v := range gpl.Data { //if v.GameDetailedLogId == "" { @@ -847,7 +847,7 @@ func (this *SceneStateCaiShenStart) WinTargetBenchTest(s *base.Scene, p *base.Pl } file.WriteString("玩家id,当前水位,之前余额,之后余额,投入,产出,税收,小游戏,中线倍数,中线数,剩余免费次数\r\n") oldCoin := p.Coin - switch s.DbGameFree.GetSceneType() { + switch s.GetDBGameFree().GetSceneType() { case 1: p.Coin = 100000 case 2: @@ -905,7 +905,7 @@ func (this *SceneStateCaiShenStart) MultiplayerBenchTest(s *base.Scene) { }) caiShenBenchTestTimes++ - fileName := fmt.Sprintf("caishen-total-%v-%d.csv", s.DbGameFree.GetSceneType(), caiShenBenchTestTimes) + fileName := fmt.Sprintf("caishen-total-%v-%d.csv", s.GetDBGameFree().GetSceneType(), caiShenBenchTestTimes) file, err := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm) defer file.Close() if err != nil { @@ -918,7 +918,7 @@ func (this *SceneStateCaiShenStart) MultiplayerBenchTest(s *base.Scene) { playersFile := make(map[int32]*os.File) oldCoins := make(map[int32]int64) - hasCoin := 1000 * int64(s.DbGameFree.GetBaseScore()) + hasCoin := 1000 * int64(s.GetDBGameFree().GetBaseScore()) robots := make(map[int32]bool) testPlayers := make(map[int32]*base.Player) for _, p := range s.Players { @@ -926,7 +926,7 @@ func (this *SceneStateCaiShenStart) MultiplayerBenchTest(s *base.Scene) { p.IsRob = false robots[p.SnId] = true } - fileName := fmt.Sprintf("caishen-player%v-%v-%d.csv", p.SnId, s.DbGameFree.GetSceneType(), caiShenBenchTestTimes) + fileName := fmt.Sprintf("caishen-player%v-%v-%d.csv", p.SnId, s.GetDBGameFree().GetSceneType(), caiShenBenchTestTimes) file, err := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, os.ModePerm) if err != nil { file, err = os.Create(fileName) @@ -955,7 +955,7 @@ func (this *SceneStateCaiShenStart) MultiplayerBenchTest(s *base.Scene) { } }() - totalBet := int64(s.DbGameFree.GetBaseScore()) * int64(len(rule.AllBetLines)) + totalBet := int64(s.GetDBGameFree().GetBaseScore()) * int64(len(rule.AllBetLines)) for i := 0; i < BENCH_CNT; i++ { for snid, p := range testPlayers { if playerEx, ok := p.ExtraData.(*CaiShenPlayerData); ok { @@ -970,7 +970,7 @@ func (this *SceneStateCaiShenStart) MultiplayerBenchTest(s *base.Scene) { inCoin := int64(playerEx.RollGameType.BaseResult.TotalBet) outCoin := playerEx.RollGameType.BaseResult.ChangeCoin + inCoin taxCoin := playerEx.RollGameType.BaseResult.Tax - lineScore := float64(playerEx.RollGameType.BaseResult.WinRate*s.DbGameFree.GetBaseScore()) * float64(10000.0-s.DbGameFree.GetTaxRate()) / 10000.0 + lineScore := float64(playerEx.RollGameType.BaseResult.WinRate*s.GetDBGameFree().GetBaseScore()) * float64(10000.0-s.GetDBGameFree().GetTaxRate()) / 10000.0 jackpotScore := outCoin - playerEx.RollGameType.BaseResult.WinSmallGame - int64(lineScore+0.00001) str := fmt.Sprintf("%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,%v\r\n", p.SnId, poolCoin, StartCoin, p.Coin, inCoin, outCoin, taxCoin, @@ -1004,7 +1004,7 @@ func CaiShenCheckAndSaveLog(sceneEx *CaiShenSceneData, playerEx *CaiShenPlayerDa //log2 playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin - playerEx.RollGameType.BaseResult.BasicBet = sceneEx.DbGameFree.GetBaseScore() + playerEx.RollGameType.BaseResult.BasicBet = sceneEx.GetDBGameFree().GetBaseScore() playerEx.RollGameType.BaseResult.RoomId = int32(sceneEx.SceneId) playerEx.RollGameType.BaseResult.AfterCoin = playerEx.Coin playerEx.RollGameType.BaseResult.BeforeCoin = startCoin @@ -1063,8 +1063,8 @@ func CaiShenCheckAndSaveLog(sceneEx *CaiShenSceneData, playerEx *CaiShenPlayerDa GameCoinTs: proto.Int64(playerEx.GameCoinTs), } gwPlayerBet := &server.GWPlayerData{ - SceneId: proto.Int(sceneEx.SceneId), - GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + SceneId: sceneEx.SceneId, + GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) sceneEx.SyncPlayerDatas(&base.PlayerDataParam{ diff --git a/gamesrv/chess/scene.go b/gamesrv/chess/scene.go index f65d018..ad40fdf 100644 --- a/gamesrv/chess/scene.go +++ b/gamesrv/chess/scene.go @@ -53,7 +53,7 @@ func getChessVariant(gameId int) int { } func NewSceneEx(s *base.Scene) *SceneEx { - variant := getChessVariant(s.GameId) + variant := getChessVariant(int(s.GameId)) chess := rule.NewChess(variant) chess.Init() sceneEx := &SceneEx{ diff --git a/gamesrv/chess/scenepolicy.go b/gamesrv/chess/scenepolicy.go index a4fbb4f..b5fe410 100644 --- a/gamesrv/chess/scenepolicy.go +++ b/gamesrv/chess/scenepolicy.go @@ -485,7 +485,7 @@ func CreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *SceneEx, playe State: proto.Int32(int32(s.GetSceneState().GetState())), TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)), NumOfGames: proto.Int(sceneEx.NumOfGames), - TotalOfGames: proto.Int(sceneEx.TotalOfGames), + TotalOfGames: sceneEx.TotalOfGames, CurOpIdx: proto.Int(-1), MasterSnid: proto.Int32(sceneEx.masterSnId), AudienceNum: proto.Int(s.GetAudiencesNum()), @@ -528,7 +528,7 @@ func CreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *SceneEx, playe } pack.MatchFinals = 0 - if s.MatchFinals { + if s.GetMatch().GetIsFinals() { pack.MatchFinals = 1 if s.NumOfGames >= 2 { pack.MatchFinals = 2 @@ -852,7 +852,7 @@ func (this *SceneStateWaitStart) OnTick(s *base.Scene) { if sceneEx, ok := s.GetExtraData().(*SceneEx); ok { if sceneEx.IsMatchScene() { delayT := time.Second * 2 - if sceneEx.MatchRound != 1 { //第一轮延迟2s,其他延迟3s 配合客户端播放动画 + if sceneEx.GetMatch().GetCurrRound() != 1 { //第一轮延迟2s,其他延迟3s 配合客户端播放动画 delayT = time.Second * 4 } if time.Now().Sub(sceneEx.StateStartTime) > delayT { @@ -1215,14 +1215,14 @@ func (this *SceneStateBilled) OnEnter(s *base.Scene) { pack := &chesstitians.SCChesstitiansGameBilled{} chessType := model.ChesstitiansType{ - GameId: sceneEx.GameId, + GameId: int(sceneEx.GameId), RoomId: int32(sceneEx.GetSceneId()), - RoomType: int32(sceneEx.Scene.SceneType), + RoomType: sceneEx.Scene.GetDBGameFree().GetSceneType(), NumOfGames: int32(sceneEx.Scene.NumOfGames), BankId: sceneEx.masterSnId, PlayerCount: rule.MaxNumOfPlayer, BaseScore: s.BaseScore, - TaxRate: s.DbGameFree.GetTaxRate(), + TaxRate: s.GetDBGameFree().GetTaxRate(), RoomMode: s.GetSceneMode(), } @@ -1462,7 +1462,7 @@ func (this *SceneStateBilled) OnLeave(s *base.Scene) { return } - if s.CheckNeedDestroy() || (s.IsMatchScene() && (!s.MatchFinals || (s.MatchFinals && s.NumOfGames >= 2))) { // 非决赛打一场 决赛打两场 + if s.CheckNeedDestroy() || (s.IsMatchScene() && (!s.GetMatch().GetIsFinals() || (s.GetMatch().GetIsFinals() && s.NumOfGames >= 2))) { // 非决赛打一场 决赛打两场 sceneEx.SceneDestroy(true) } s.TryRelease() diff --git a/gamesrv/easterisland/scenedata_easterisland.go b/gamesrv/easterisland/scenedata_easterisland.go index 654f5ed..25bfb39 100644 --- a/gamesrv/easterisland/scenedata_easterisland.go +++ b/gamesrv/easterisland/scenedata_easterisland.go @@ -53,14 +53,14 @@ func (this *EasterIslandSceneData) OnPlayerLeave(p *base.Player, reason int) { } func (this *EasterIslandSceneData) init() bool { - if this.DbGameFree == nil { + if this.GetDBGameFree() == nil { return false } - params := this.DbGameFree.GetJackpot() + params := this.GetDBGameFree().GetJackpot() this.jackpot = &base.SlotJackpotPool{} if this.jackpot.Small <= 0 { this.jackpot.Small = 0 - this.jackpot.VirtualJK = int64(params[rule.EL_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) + this.jackpot.VirtualJK = int64(params[rule.EL_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) } str := base.SlotsPoolMgr.GetPool(this.GetGameFreeId(), this.Platform) if str != "" { @@ -101,7 +101,7 @@ type EasterIslandSpinResult struct { } func (this *EasterIslandSceneData) CalcLinePrize(cards []int, betLines []int64, betValue int64) (spinRes EasterIslandSpinResult) { - taxRate := this.DbGameFree.GetTaxRate() + taxRate := this.GetDBGameFree().GetTaxRate() calcTaxScore := func(score int64, taxScore *int64) int64 { newScore := int64(float64(score) * float64(10000-taxRate) / 10000.0) if taxScore != nil { @@ -192,7 +192,7 @@ func (this *EasterIslandSceneData) BroadcastJackpot(sync bool) { this.lastJackpotValue = this.jackpot.VirtualJK pack := &gamehall.SCHundredSceneGetGameJackpot{} jpfi := &gamehall.GameJackpotFundInfo{ - GameFreeId: proto.Int32(this.DbGameFree.Id), + GameFreeId: proto.Int32(this.GetDBGameFree().Id), JackPotFund: proto.Int64(this.jackpot.VirtualJK), } pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) @@ -218,7 +218,7 @@ func (this *EasterIslandSceneData) PopCoinPool(winCoin int64, IsNovice bool) { } } func (this *EasterIslandSceneData) RecordBurstLog(name string, wincoin, totalbet int64) { - log := model.NewBurstJackpotLog(this.Platform, this.DbGameFree.GameId, this.GetGameFreeId(), name, wincoin, totalbet) + log := model.NewBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId, this.GetGameFreeId(), name, wincoin, totalbet) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.InsertBurstJackpotLogs(log) }), nil, "InsertBurstJackpotLogs").Start() @@ -226,7 +226,7 @@ func (this *EasterIslandSceneData) RecordBurstLog(name string, wincoin, totalbet func (this *EasterIslandSceneData) BurstHistory(player *EasterIslandPlayerData) { task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.GetBurstJackpotLog(this.Platform, this.DbGameFree.GameId) + return model.GetBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId) }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { var logsp []*easterisland.EasterIslandBurstHistoryInfo if data != nil { @@ -254,7 +254,7 @@ func (this *EasterIslandSceneData) GetLastBurstJackPot() time.Time { } func (this *EasterIslandSceneData) SetLastBurstJackPot() { var randT = rand.Intn(25200-7200+1) + 7200 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(25200-7200+1) + 7200 case 2: @@ -269,7 +269,7 @@ func (this *EasterIslandSceneData) SetLastBurstJackPot() { func (this *EasterIslandSceneData) AIAddJackPot() { if time.Now().Sub(this.lastJackPot) > 0 { var randT = rand.Intn(3) + 1 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(3) + 1 case 2: @@ -282,20 +282,20 @@ func (this *EasterIslandSceneData) AIAddJackPot() { randT = rand.Intn(3) + 1 } this.lastJackPot = time.Now().Add(time.Second * time.Duration(randT)) - val := int64(math.Floor(float64(this.DbGameFree.GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) + val := int64(math.Floor(float64(this.GetDBGameFree().GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) this.jackpot.VirtualJK += val } } func (this *EasterIslandSceneData) AIBurstJackPot() { if time.Now().Sub(this.GetLastBurstJackPot()) > 0 { this.SetLastBurstJackPot() - jackpotParams := this.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParams[rule.EL_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) //奖池初始值 + jackpotParams := this.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParams[rule.EL_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) //奖池初始值 //AI机器人爆奖 val := this.jackpot.VirtualJK this.jackpot.VirtualJK = jackpotInit - bet := int64(this.DbGameFree.GetBaseScore()) * int64(rule.LINENUM) + bet := int64(this.GetDBGameFree().GetBaseScore()) * int64(rule.LINENUM) this.RecordBurstLog(this.RandNickName(), val, bet) } } @@ -316,11 +316,11 @@ func (this *EasterIslandSceneData) KickPlayerByTime() { } //for _, p := range this.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // this.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(this.DbGameFree.GetPlayNumLimit()) { + // this.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(this.GetDBGameFree().GetPlayNumLimit()) { // this.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} diff --git a/gamesrv/easterisland/scenepolicy_easterisland.go b/gamesrv/easterisland/scenepolicy_easterisland.go index 67f98f8..5c211b7 100644 --- a/gamesrv/easterisland/scenepolicy_easterisland.go +++ b/gamesrv/easterisland/scenepolicy_easterisland.go @@ -94,8 +94,8 @@ func (this *ScenePolicyEasterIsland) OnPlayerEnter(s *base.Scene, p *base.Player logger.Logger.Trace("(this *ScenePolicyEasterIsland) OnPlayerEnter, sceneId=", s.SceneId, " player=", p.SnId) if sceneEx, ok := s.ExtraData.(*EasterIslandSceneData); ok { playerEx := &EasterIslandPlayerData{Player: p} - playerEx.init(s) // 玩家当前信息初始化 - playerEx.score = sceneEx.DbGameFree.GetBaseScore() // 底注 + playerEx.init(s) // 玩家当前信息初始化 + playerEx.score = sceneEx.GetDBGameFree().GetBaseScore() // 底注 sceneEx.players[p.SnId] = playerEx p.ExtraData = playerEx EasterIslandSendRoomInfo(s, p, sceneEx, playerEx, nil) @@ -230,14 +230,14 @@ func (this *ScenePolicyEasterIsland) GetJackPotVal(s *base.Scene) int64 { func EasterIslandSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *EasterIslandSceneData, playerEx *EasterIslandPlayerData, data *easterisland.GameBilledData) { logger.Logger.Trace("-------------------发送房间消息 ", s.RoomId, p.SnId) pack := &easterisland.SCEasterIslandRoomInfo{ - RoomId: proto.Int(s.SceneId), + RoomId: s.SceneId, Creator: proto.Int32(s.Creator), - GameId: proto.Int(s.GameId), - RoomMode: proto.Int(s.GameMode), + GameId: s.GameId, + RoomMode: s.GameMode, Params: common.CopySliceInt64ToInt32(s.Params), State: proto.Int(s.SceneState.GetState()), Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK), - GameFreeId: proto.Int32(s.DbGameFree.Id), + GameFreeId: proto.Int32(s.GetDBGameFree().Id), BilledData: data, } if playerEx != nil { @@ -256,7 +256,7 @@ func EasterIslandSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *EasterIsla //} pack.BetLines = playerEx.betLines pack.FreeTimes = proto.Int32(playerEx.freeTimes) - pack.Chip = proto.Int32(s.DbGameFree.BaseScore) + pack.Chip = proto.Int32(s.GetDBGameFree().BaseScore) pack.SpinID = proto.Int64(playerEx.spinID) if playerEx.totalPriceBonus > 0 { switch playerEx.bonusStage { @@ -367,7 +367,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe return false } //先做底注校验 - if sceneEx.DbGameFree.GetBaseScore() != int32(params[0]) { + if sceneEx.GetDBGameFree().GetBaseScore() != int32(params[0]) { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, easterisland.OpResultCode_OPRC_Error, params) return false } @@ -401,7 +401,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe if playerEx.freeTimes <= 0 && totalBetValue > playerEx.Coin { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, easterisland.OpResultCode_OPRC_CoinNotEnough, params) return false - } else if playerEx.freeTimes <= 0 && int64(sceneEx.DbGameFree.GetBetLimit()) > playerEx.Coin { //押注限制 + } else if playerEx.freeTimes <= 0 && int64(sceneEx.GetDBGameFree().GetBetLimit()) > playerEx.Coin { //押注限制 this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, easterisland.OpResultCode_OPRC_CoinNotEnough, params) return false } @@ -413,7 +413,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe //获取当前水池的上下文环境 sceneEx.CpCtx = base.CoinPoolMgr.GetCoinPoolCtx(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) - taxRate := sceneEx.DbGameFree.GetTaxRate() + taxRate := sceneEx.GetDBGameFree().GetTaxRate() if taxRate < 0 || taxRate > 10000 { logger.Logger.Warnf("EasterIslandErrorTaxRate [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate) taxRate = 500 @@ -430,9 +430,9 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe } else { gamePoolCoin = base.CoinPoolMgr.GetCoin(sceneEx.GetGameFreeId(), sceneEx.Platform, sceneEx.GroupId) // 当前水池金额 } - prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 - jackpotParams := sceneEx.DbGameFree.GetJackpot() // 奖池参数 - var jackpotInit = int64(jackpotParams[rule.EL_JACKPOT_InitJackpot]) * int64(sceneEx.DbGameFree.GetBaseScore()) //奖池初始值 + prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 + jackpotParams := sceneEx.GetDBGameFree().GetJackpot() // 奖池参数 + var jackpotInit = int64(jackpotParams[rule.EL_JACKPOT_InitJackpot]) * int64(sceneEx.GetDBGameFree().GetBaseScore()) //奖池初始值 var jackpotFundAdd, prizeFundAdd int64 if playerEx.freeTimes <= 0 { //正常模式才能记录用户的押注变化,免费模式不能改变押注 @@ -449,7 +449,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe ////统计参与游戏次数 //if !sceneEx.Testing && !playerEx.IsRob { // pack := &server.GWSceneEnd{ - // GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + // GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), // Players: []*server.PlayerCtx{&server.PlayerCtx{SnId: proto.Int32(playerEx.SnId), Coin: proto.Int64(playerEx.Coin)}}, // } // proto.SetDefaults(pack) @@ -629,7 +629,7 @@ func (this *SceneStateEasterIslandStart) OnPlayerOp(s *base.Scene, p *base.Playe case EasterIslandPlayerHistory: task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { spinid := strconv.FormatInt(int64(playerEx.SnId), 10) - gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.DbGameFree.GetGameClass(), s.GameId) + gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.GetDBGameFree().GetGameClass(), int(s.GameId)) pack := &easterisland.SCEasterIslandPlayerHistory{} for _, v := range gpl.Data { //if v.GameDetailedLogId == "" { @@ -819,7 +819,7 @@ func (this *SceneStateEasterIslandStart) WinTargetBenchTest(s *base.Scene, p *ba } file.WriteString("玩家id,当前水位,之前余额,之后余额,投入,产出,税收,小游戏,中线倍数,中线数,剩余免费次数\r\n") oldCoin := p.Coin - switch s.DbGameFree.GetSceneType() { + switch s.GetDBGameFree().GetSceneType() { case 1: p.Coin = 100000 case 2: @@ -873,7 +873,7 @@ func EasterIslandCheckAndSaveLog(sceneEx *EasterIslandSceneData, playerEx *Easte //log2 playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin - playerEx.RollGameType.BaseResult.BasicBet = sceneEx.DbGameFree.GetBaseScore() + playerEx.RollGameType.BaseResult.BasicBet = sceneEx.GetDBGameFree().GetBaseScore() playerEx.RollGameType.BaseResult.RoomId = int32(sceneEx.SceneId) playerEx.RollGameType.BaseResult.AfterCoin = playerEx.Coin playerEx.RollGameType.BaseResult.BeforeCoin = startCoin @@ -932,8 +932,8 @@ func EasterIslandCheckAndSaveLog(sceneEx *EasterIslandSceneData, playerEx *Easte GameCoinTs: proto.Int64(playerEx.GameCoinTs), } gwPlayerBet := &server.GWPlayerData{ - SceneId: proto.Int(sceneEx.SceneId), - GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + SceneId: sceneEx.SceneId, + GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) sceneEx.SyncPlayerDatas(&base.PlayerDataParam{ diff --git a/gamesrv/fishing/action_fish.go b/gamesrv/fishing/action_fish.go index 051c7c8..c59f6b1 100644 --- a/gamesrv/fishing/action_fish.go +++ b/gamesrv/fishing/action_fish.go @@ -406,7 +406,7 @@ func (this *CSFishSkillUseReqHandler) Process(s *netlib.Session, packetid int, d status := false for _, s := range strSlice { num, _ := strconv.Atoi(s) - if num == player.GetScene().SceneType { + if int32(num) == player.GetScene().GetSceneType() { status = true } } @@ -414,7 +414,7 @@ func (this *CSFishSkillUseReqHandler) Process(s *netlib.Session, packetid int, d pack.Result = 1 pack.Status = fishing_proto.SCFishSkillUseResp_ROOM_DISALLOW player.SendToClient(int(fishing_proto.FIPacketID_FISHING_SC_SKILLUSERESP), pack) - fishlogger.Trace("当前房间不允许使用此技能 skillId = %v,sceneType = %v", skillId, player.GetScene().SceneType) + fishlogger.Trace("当前房间不允许使用此技能 skillId = %v,sceneType = %v", skillId, player.GetScene().GetSceneType()) return nil } //判断当前技能在不在CD中 @@ -516,7 +516,7 @@ func (this *CSSkillListReqHandler) Process(s *netlib.Session, packetid int, data pack := &fishing_proto.SCSkillListResp{} for _, skill := range srvdata.PBDB_FishSkillMgr.Datas.Arr { //获取房间类型 - sceneType := player.GetScene().SceneType + sceneType := player.GetScene().GetSceneType() str := skill.Hidden num, err := strconv.Atoi(str) status := true diff --git a/gamesrv/fishing/playerdata_fishing.go b/gamesrv/fishing/playerdata_fishing.go index 66d9e9b..cad0291 100644 --- a/gamesrv/fishing/playerdata_fishing.go +++ b/gamesrv/fishing/playerdata_fishing.go @@ -300,7 +300,7 @@ func (this *FishingPlayerData) SaveDetailedLog(s *base.Scene) { GameCoinTs: proto.Int64(this.GameCoinTs), } gwPlayerData := &server_proto.GWPlayerData{ - SceneId: proto.Int(sceneEx.SceneId), + SceneId: sceneEx.SceneId, GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), } gwPlayerData.Datas = append(gwPlayerData.Datas, playerBet) diff --git a/gamesrv/fishing/scenedata_fishing.go b/gamesrv/fishing/scenedata_fishing.go index d3a6914..a0afbab 100644 --- a/gamesrv/fishing/scenedata_fishing.go +++ b/gamesrv/fishing/scenedata_fishing.go @@ -108,12 +108,11 @@ func (this *FishingSceneData) init() bool { this.SetPlayerNum(4) this.gameId = this.GetGameId() this.platform = this.GetPlatform() - this.sceneType = int(this.DbGameFree.GetSceneType()) + this.sceneType = int(this.GetDBGameFree().GetSceneType()) this.keyGameId = this.GetKeyGameId() this.testing = this.GetTesting() this.gamefreeId = this.GetGameFreeId() this.groupId = this.GetGroupId() - this.agentor = this.GetAgentor() this.sceneMode = this.GetSceneMode() this.TimePoint = 0 this.lastLittleBossTime = time.Now().Unix() @@ -905,7 +904,7 @@ func (this *FishingSceneData) fishSettlements(fishs []*Fish, player *FishingPlay } //BOSS鱼死亡 更新BOSS池和个人池 if value.IsBoss == fishing.Boss { - bossPond := base.GetCoinPoolMgr().GetBossPond(this.DbGameFree.SceneType) + bossPond := base.GetCoinPoolMgr().GetBossPond(this.GetDBGameFree().SceneType) this.isBossDie(player, int64(dropCoin), bossPond) } @@ -1458,7 +1457,7 @@ func (this *FishingSceneData) BroadCastMessage(packetid int, msg proto.Message, if gateSess == nil || len(v) == 0 { continue } - pack, err := base.MulticastMaker.CreateMulticastPacket(packetid, msg, v...) + pack, err := common.CreateMulticastPacket(packetid, msg, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -1508,7 +1507,7 @@ func (this *FishingSceneData) AddBossPond(player *FishingPlayerData, fishtype in // 减掉个人池数值 if score > 0 { player.MoneyPond -= score - base.GetCoinPoolMgr().AddBossPond(this.DbGameFree.SceneType, score) + base.GetCoinPoolMgr().AddBossPond(this.GetDBGameFree().SceneType, score) } } @@ -1522,7 +1521,7 @@ func (this *FishingSceneData) isBossDie(player *FishingPlayerData, score int64, minNum = bossPond } player.MoneyPond += minNum - base.GetCoinPoolMgr().AddBossPond(this.DbGameFree.SceneType, -minNum) + base.GetCoinPoolMgr().AddBossPond(this.GetDBGameFree().SceneType, -minNum) fishlogger.Infof("玩家:%v,Boss奖池剩余金币数量:%v\n", player.SnId, bossPond) } diff --git a/gamesrv/fruits/playerdata_fruits.go b/gamesrv/fruits/playerdata_fruits.go index 0a1d098..6601c36 100644 --- a/gamesrv/fruits/playerdata_fruits.go +++ b/gamesrv/fruits/playerdata_fruits.go @@ -101,7 +101,7 @@ func (p *FruitsPlayerData) Clear() { p.weightPos = 0 } func (p *FruitsPlayerData) TestCode(eleLineAppearRate [][]int32, sceneEx *FruitsSceneData) bool { - //if sceneEx.DbGameFree.GetId() == 3060004 { + //if sceneEx.GetDBGameFree().GetId() == 3060004 { // p.result.CreateLine(eleLineAppearRate, p.gameState == fruits.FreeGame) // if p.testIdx == 1 { // //test mary @@ -186,7 +186,7 @@ func (p *FruitsPlayerData) CreateResult(eleLineAppearRate [][]int32, sceneEx *Fr case 5: winjackpot = int64(math.Ceil(float64(JackPotVal) * 0.4 / float64(fruits.NowByte))) } - if winjackpot < int64(sceneEx.DbGameFree.GetJackpotMin())*fruits.NowByte { + if winjackpot < int64(sceneEx.GetDBGameFree().GetJackpotMin())*fruits.NowByte { isNeed = false break } diff --git a/gamesrv/fruits/scenedata_fruits.go b/gamesrv/fruits/scenedata_fruits.go index d21bf4e..94f20de 100644 --- a/gamesrv/fruits/scenedata_fruits.go +++ b/gamesrv/fruits/scenedata_fruits.go @@ -40,7 +40,7 @@ func NewFruitsSceneData(s *base.Scene) *FruitsSceneData { func (s *FruitsSceneData) Init() { s.LoadJackPotData() //for _, data := range srvdata.PBDB_SlotRateWeightMgr.Datas.Arr { - // if data.Id == s.DbGameFree.Id { + // if data.Id == s.GetDBGameFree().Id { // //s.levelRate = append(s.levelRate, data.EleWeight1) // //s.slotRateWeightTotal = append(s.slotRateWeightTotal, data.EleWeight1, data.EleWeight2, data.EleWeight3, data.EleWeight4, data.EleWeight5) // } @@ -59,12 +59,12 @@ func (s *FruitsSceneData) SceneDestroy(force bool) { } func (s *FruitsSceneData) AddPrizeCoin(playerEx *FruitsPlayerData) { val := playerEx.betCoin - tax := int64(math.Ceil(float64(val) * float64(s.DbGameFree.GetTaxRate()) / 10000)) + tax := int64(math.Ceil(float64(val) * float64(s.GetDBGameFree().GetTaxRate()) / 10000)) //playerEx.taxCoin = tax //playerEx.AddServiceFee(tax) val -= tax - addPrizeCoin := int64(math.Floor(float64(val*fruits.NowByte*int64(s.DbGameFree.GetJackpotRatio())) / 1000)) //扩大10000倍 + addPrizeCoin := int64(math.Floor(float64(val*fruits.NowByte*int64(s.GetDBGameFree().GetJackpotRatio())) / 1000)) //扩大10000倍 s.jackpot.AddToSmall(playerEx.IsRob, addPrizeCoin) logger.Logger.Tracef("奖池增加...AddPrizeCoin... %f", float64(addPrizeCoin)/float64(fruits.NowByte)) base.SlotsPoolMgr.SetPool(s.GetGameFreeId(), s.Platform, s.jackpot) @@ -95,7 +95,7 @@ func (s *FruitsSceneData) OnPlayerLeave(p *base.Player, reason int) { if playerEx.winCoin != 0 { //SysProfitCoinMgr.Add(s.sysProfitCoinKey, 0, playerEx.winCoin) p.Statics(s.KeyGameId, s.KeyGamefreeId, playerEx.winCoin, false) - //tax := int64(math.Ceil(float64(playerEx.winCoin) * float64(s.DbGameFree.GetTaxRate()) / 10000)) + //tax := int64(math.Ceil(float64(playerEx.winCoin) * float64(s.GetDBGameFree().GetTaxRate()) / 10000)) //playerEx.taxCoin = tax //playerEx.winCoin -= tax //p.AddServiceFee(tax) @@ -140,7 +140,7 @@ func (s *FruitsSceneData) Win(p *FruitsPlayerData) { p.noWinTimes = 0 //SysProfitCoinMgr.Add(s.sysProfitCoinKey, 0, p.winCoin) p.Statics(s.KeyGameId, s.KeyGamefreeId, p.winCoin, false) - //tax := int64(math.Ceil(float64(p.winCoin) * float64(s.DbGameFree.GetTaxRate()) / 10000)) + //tax := int64(math.Ceil(float64(p.winCoin) * float64(s.GetDBGameFree().GetTaxRate()) / 10000)) //p.taxCoin = tax //p.winCoin -= tax //p.AddServiceFee(tax) @@ -210,7 +210,7 @@ func (s *FruitsSceneData) LoadJackPotData() { base.SlotsPoolMgr.SetPool(s.GetGameFreeId(), s.Platform, s.jackpot) } else { s.jackpot = &base.SlotJackpotPool{} - jp := s.DbGameFree.GetJackpot() + jp := s.GetDBGameFree().GetJackpot() if len(jp) > 0 { s.jackpot.Small += int64(jp[0] * 10000) } @@ -244,7 +244,7 @@ func (s *FruitsSceneData) SaveLog(p *FruitsPlayerData, isOffline int) { } } FruitsType := model.FruitsType{ - RoomId: s.SceneId, + RoomId: int(s.SceneId), BasicScore: int32(p.oneBetCoin), PlayerSnId: p.SnId, BeforeCoin: p.startCoin, @@ -372,7 +372,7 @@ func (s *FruitsSceneData) SendPlayerBet(p *FruitsPlayerData) { Tax: proto.Int64(p.taxCoin), } gwPlayerBet := &server.GWPlayerData{ - GameFreeId: proto.Int32(s.DbGameFree.GetId()), + GameFreeId: proto.Int32(s.GetDBGameFree().GetId()), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) s.SyncPlayerDatas(&base.PlayerDataParam{ @@ -604,8 +604,8 @@ func (s *FruitsSceneData) GetEleWeight(needpos int32) (norms, frees, marys [][]i curCoin := base.CoinPoolMgr.GetCoin(s.GetGameFreeId(), s.Platform, s.GroupId) curCoin = int64(math.Floor(float64(curCoin) / float64(fruits.NowByte))) - for i := len(s.DbGameFree.BalanceLine) - 1; i >= 0; i-- { - balance := s.DbGameFree.BalanceLine[i] + for i := len(s.GetDBGameFree().BalanceLine) - 1; i >= 0; i-- { + balance := s.GetDBGameFree().BalanceLine[i] if curCoin >= int64(balance) { key = int32(i) break diff --git a/gamesrv/fruits/scenepolicy_fruits.go b/gamesrv/fruits/scenepolicy_fruits.go index 292247b..f728625 100644 --- a/gamesrv/fruits/scenepolicy_fruits.go +++ b/gamesrv/fruits/scenepolicy_fruits.go @@ -148,16 +148,16 @@ func FruitsSendRoomInfo(s *base.Scene, sceneEx *FruitsSceneData, playerEx *Fruit func FruitsCreateRoomInfoPacket(s *base.Scene, sceneEx *FruitsSceneData, playerEx *FruitsPlayerData) interface{} { //房间信息 pack := &protocol.SCFruitsRoomInfo{ - RoomId: proto.Int(s.SceneId), - GameId: proto.Int(s.GameId), - RoomMode: proto.Int(s.SceneMode), - SceneType: proto.Int(s.SceneType), + RoomId: s.SceneId, + GameId: s.GameId, + RoomMode: s.SceneMode, + SceneType: s.GetSceneType(), Params: common.CopySliceInt64ToInt32(s.Params), NumOfGames: proto.Int(sceneEx.NumOfGames), State: proto.Int(s.SceneState.GetState()), - ParamsEx: s.DbGameFree.OtherIntParams, - GameFreeId: proto.Int32(s.DbGameFree.Id), - //BetLimit: s.DbGameFree.BetLimit, + ParamsEx: s.GetDBGameFree().OtherIntParams, + GameFreeId: proto.Int32(s.GetDBGameFree().Id), + //BetLimit: s.GetDBGameFree().BetLimit, } //自己的信息 @@ -299,11 +299,11 @@ func (this *SceneBaseStateFruits) OnTick(s *base.Scene) { if sceneEx, ok := s.ExtraData.(*FruitsSceneData); ok { //for _, p := range sceneEx.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(sceneEx.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(sceneEx.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // sceneEx.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(sceneEx.DbGameFree.GetPlayNumLimit()) { + // sceneEx.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(sceneEx.GetDBGameFree().GetPlayNumLimit()) { // s.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} @@ -397,7 +397,7 @@ func (this *SceneStateStartFruits) OnPlayerOp(s *base.Scene, p *base.Player, opc //只有开始算操作 p.LastOPTimer = time.Now() idx := int(params[0]) - if len(sceneEx.DbGameFree.GetOtherIntParams()) <= idx { + if len(sceneEx.GetDBGameFree().GetOtherIntParams()) <= idx { pack := &protocol.SCFruitsOp{ OpCode: proto.Int(opcode), OpRetCode: proto.Int(3), @@ -419,12 +419,12 @@ func (this *SceneStateStartFruits) OnPlayerOp(s *base.Scene, p *base.Player, opc if playerEx.gameState == fruits.Normal { playerEx.freeTotal = 0 playerEx.betIdx = idx - playerEx.betCoin = int64(sceneEx.DbGameFree.GetOtherIntParams()[idx]) + playerEx.betCoin = int64(sceneEx.GetDBGameFree().GetOtherIntParams()[idx]) playerEx.oneBetCoin = playerEx.betCoin / 9 //playerEx.isReportGameEvent = true playerEx.noWinTimes++ - if playerEx.Coin < int64(s.DbGameFree.GetBetLimit()) { + if playerEx.Coin < int64(s.GetDBGameFree().GetBetLimit()) { //押注限制(低于该值不能押注) pack := &protocol.SCFruitsOp{ OpCode: proto.Int(opcode), @@ -486,9 +486,9 @@ func (this *SceneStateStartFruits) OnPlayerOp(s *base.Scene, p *base.Player, opc case fruits.FruitsPlayerOpSwitch: if len(params) > 0 && playerEx.freeTimes == 0 && playerEx.maryFreeTimes == 0 { idx := int(params[0]) - if len(sceneEx.DbGameFree.GetOtherIntParams()) > idx { + if len(sceneEx.GetDBGameFree().GetOtherIntParams()) > idx { playerEx.betIdx = idx - playerEx.betCoin = int64(sceneEx.DbGameFree.GetOtherIntParams()[idx]) + playerEx.betCoin = int64(sceneEx.GetDBGameFree().GetOtherIntParams()[idx]) playerEx.oneBetCoin = playerEx.betCoin / 9 } } diff --git a/gamesrv/iceage/scenedata_iceage.go b/gamesrv/iceage/scenedata_iceage.go index afdd05b..2ff4e9e 100644 --- a/gamesrv/iceage/scenedata_iceage.go +++ b/gamesrv/iceage/scenedata_iceage.go @@ -67,7 +67,7 @@ func (this *IceAgeSceneData) init() bool { this.jackpot = &base.SlotJackpotPool{} if this.jackpot.Small <= 0 { this.jackpot.Small = 0 - this.jackpot.VirtualJK = int64(params[rule.ICEAGE_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) + this.jackpot.VirtualJK = int64(params[rule.ICEAGE_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) } str := base.SlotsPoolMgr.GetPool(this.GetGameFreeId(), this.GetPlatform()) @@ -238,7 +238,7 @@ func (this *IceAgeSceneData) BroadcastJackpot(sync bool) { this.lastJackpotValue = this.jackpot.VirtualJK pack := &gamehall.SCHundredSceneGetGameJackpot{} jpfi := &gamehall.GameJackpotFundInfo{ - GameFreeId: proto.Int32(this.DbGameFree.Id), + GameFreeId: proto.Int32(this.GetDBGameFree().Id), JackPotFund: proto.Int64(this.jackpot.VirtualJK), } pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) @@ -264,7 +264,7 @@ func (this *IceAgeSceneData) PopCoinPool(winCoin int64, IsNovice bool) { } } func (this *IceAgeSceneData) RecordBurstLog(name string, wincoin, totalbet int64) { - log := model.NewBurstJackpotLog(this.Platform, this.DbGameFree.GameId, this.GetGameFreeId(), name, wincoin, totalbet) + log := model.NewBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId, this.GetGameFreeId(), name, wincoin, totalbet) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.InsertBurstJackpotLogs(log) }), nil, "InsertBurstJackpotLogs").Start() @@ -272,7 +272,7 @@ func (this *IceAgeSceneData) RecordBurstLog(name string, wincoin, totalbet int64 func (this *IceAgeSceneData) BurstHistory(player *IceAgePlayerData) { task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.GetBurstJackpotLog(this.Platform, this.DbGameFree.GameId) + return model.GetBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId) }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { var logsp []*iceage.IceAgeBurstHistoryInfo if data != nil { @@ -300,7 +300,7 @@ func (this *IceAgeSceneData) GetLastBurstJackPot() time.Time { } func (this *IceAgeSceneData) SetLastBurstJackPot() { var randT = rand.Intn(25200-7200+1) + 7200 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(25200-7200+1) + 7200 case 2: @@ -313,7 +313,7 @@ func (this *IceAgeSceneData) SetLastBurstJackPot() { func (this *IceAgeSceneData) AIAddJackPot() { if time.Now().Sub(this.lastJackPot) > 0 { var randT = rand.Intn(3) + 1 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(3) + 1 case 2: @@ -324,20 +324,20 @@ func (this *IceAgeSceneData) AIAddJackPot() { randT = rand.Intn(3) + 1 } this.lastJackPot = time.Now().Add(time.Second * time.Duration(randT)) - val := int64(math.Floor(float64(this.DbGameFree.GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) + val := int64(math.Floor(float64(this.GetDBGameFree().GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) this.jackpot.VirtualJK += val } } func (this *IceAgeSceneData) AIBurstJackPot() { if time.Now().Sub(this.GetLastBurstJackPot()) > 0 { this.SetLastBurstJackPot() - jackpotParams := this.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParams[rule.ICEAGE_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) //奖池初始值 + jackpotParams := this.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParams[rule.ICEAGE_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) //奖池初始值 //AI机器人爆奖 val := this.jackpot.VirtualJK this.jackpot.VirtualJK = jackpotInit - bet := int64(this.DbGameFree.GetBaseScore()) * int64(rule.LINENUM) + bet := int64(this.GetDBGameFree().GetBaseScore()) * int64(rule.LINENUM) this.RecordBurstLog(this.RandNickName(), val, bet) } } @@ -358,11 +358,11 @@ func (this *IceAgeSceneData) KickPlayerByTime() { } //for _, p := range this.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // this.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(this.DbGameFree.GetPlayNumLimit()) { + // this.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(this.GetDBGameFree().GetPlayNumLimit()) { // this.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} diff --git a/gamesrv/iceage/scenepolicy_iceage.go b/gamesrv/iceage/scenepolicy_iceage.go index 0ff231d..5313337 100644 --- a/gamesrv/iceage/scenepolicy_iceage.go +++ b/gamesrv/iceage/scenepolicy_iceage.go @@ -253,7 +253,7 @@ func IceAgeSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *IceAgeSceneData, pack.Players = append(pack.Players, pd) pack.BetLines = playerEx.betLines pack.FreeTimes = proto.Int32(playerEx.freeTimes) - pack.Chip = proto.Int32(s.DbGameFree.BaseScore) + pack.Chip = proto.Int32(s.GetDBGameFree().BaseScore) pack.TotalPriceBonus = proto.Int64(playerEx.totalPriceBonus) pack.SpinID = proto.Int64(playerEx.spinID) } @@ -681,7 +681,7 @@ func (this *SceneStateIceAgeStart) OnPlayerOp(s *base.Scene, p *base.Player, opc case IceAgePlayerHistory: task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { spinid := strconv.FormatInt(int64(playerEx.SnId), 10) - gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.DbGameFree.GetGameClass(), s.GetGameId()) + gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.GetDBGameFree().GetGameClass(), s.GetGameId()) pack := &iceage.SCIceAgePlayerHistory{} for _, v := range gpl.Data { //if v.GameDetailedLogId == "" { @@ -982,7 +982,7 @@ func IceAgeCheckAndSaveLog(sceneEx *IceAgeSceneData, playerEx *IceAgePlayerData) GameCoinTs: proto.Int64(playerEx.GameCoinTs), } gwPlayerBet := &server.GWPlayerData{ - SceneId: proto.Int(sceneEx.SceneId), + SceneId: sceneEx.SceneId, GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) diff --git a/gamesrv/richblessed/scenedata_richblessed.go b/gamesrv/richblessed/scenedata_richblessed.go index fa4110f..9d31d45 100644 --- a/gamesrv/richblessed/scenedata_richblessed.go +++ b/gamesrv/richblessed/scenedata_richblessed.go @@ -58,13 +58,13 @@ func (s *RichBlessedSceneData) SceneDestroy(force bool) { } func (s *RichBlessedSceneData) AddPrizeCoin(playerEx *RichBlessedPlayerData) { val := playerEx.betCoin - tax := int64(math.Ceil(float64(val) * float64(s.DbGameFree.GetTaxRate()) / 10000)) + tax := int64(math.Ceil(float64(val) * float64(s.GetDBGameFree().GetTaxRate()) / 10000)) //playerEx.taxCoin = tax //playerEx.AddServiceFee(tax) val -= tax - addPrizeCoin := val * richblessed.NowByte * int64(s.DbGameFree.GetJackpotRatio()) //扩大10000倍 - jk1 := int64(math.Floor(float64(addPrizeCoin) / 1000 / 4)) //千分之奖池比例 分四份 + addPrizeCoin := val * richblessed.NowByte * int64(s.GetDBGameFree().GetJackpotRatio()) //扩大10000倍 + jk1 := int64(math.Floor(float64(addPrizeCoin) / 1000 / 4)) //千分之奖池比例 分四份 s.jackpot.AddToGrand(playerEx.IsRob, jk1) s.jackpot.AddToBig(playerEx.IsRob, jk1) s.jackpot.AddToMiddle(playerEx.IsRob, jk1) @@ -177,7 +177,7 @@ func (s *RichBlessedSceneData) Win(p *RichBlessedPlayerData) { p.noWinTimes = 0 //SysProfitCoinMgr.Add(s.sysProfitCoinKey, 0, p.winCoin) p.Statics(s.KeyGameId, s.KeyGamefreeId, p.winCoin, false) - //tax := int64(math.Ceil(float64(p.winCoin) * float64(s.DbGameFree.GetTaxRate()) / 10000)) + //tax := int64(math.Ceil(float64(p.winCoin) * float64(s.GetDBGameFree().GetTaxRate()) / 10000)) //p.taxCoin = tax //p.winCoin -= tax //p.AddServiceFee(tax) @@ -198,7 +198,7 @@ func (s *RichBlessedSceneData) JACKPOTWin(p *RichBlessedPlayerData) { p.noWinTimes = 0 //SysProfitCoinMgr.Add(s.sysProfitCoinKey, 0, p.JackwinCoin) p.Statics(s.KeyGameId, s.KeyGamefreeId, p.JackwinCoin, false) - //tax := int64(math.Ceil(float64(p.JackwinCoin) * float64(s.DbGameFree.GetTaxRate()) / 10000)) + //tax := int64(math.Ceil(float64(p.JackwinCoin) * float64(s.GetDBGameFree().GetTaxRate()) / 10000)) //p.taxCoin = tax //p.JackwinCoin -= tax //p.AddServiceFee(tax) @@ -271,7 +271,7 @@ func (s *RichBlessedSceneData) LoadJackPotData() { base.SlotsPoolMgr.SetPool(s.GetGameFreeId(), s.Platform, s.jackpot) } else { s.jackpot = &base.SlotJackpotPool{} - jp := s.DbGameFree.GetJackpot() + jp := s.GetDBGameFree().GetJackpot() if len(jp) > 0 { s.jackpot.Small += int64(jp[0] * 10000) } @@ -300,7 +300,7 @@ func (s *RichBlessedSceneData) SaveLog(p *RichBlessedPlayerData, isOffline int) } RichBlessed := model.RichBlessedType{ - RoomId: s.SceneId, + RoomId: int(s.SceneId), BasicScore: int32(p.oneBetCoin), PlayerSnId: p.SnId, BeforeCoin: p.startCoin, @@ -388,8 +388,8 @@ func (s *RichBlessedSceneData) GetEleWeight(needpos int32) (norms, frees [][]int curCoin := base.CoinPoolMgr.GetCoin(s.GetGameFreeId(), s.Platform, s.GroupId) curCoin = int64(math.Floor(float64(curCoin) / float64(richblessed.NowByte))) - for i := len(s.DbGameFree.BalanceLine) - 1; i >= 0; i-- { - balance := s.DbGameFree.BalanceLine[i] + for i := len(s.GetDBGameFree().BalanceLine) - 1; i >= 0; i-- { + balance := s.GetDBGameFree().BalanceLine[i] if curCoin >= int64(balance) { key = int32(i) break @@ -426,7 +426,7 @@ func (s *RichBlessedSceneData) GetEleWeight(needpos int32) (norms, frees [][]int } func (s *RichBlessedSceneData) CreateResult(eleLineAppearRate [][]int32, playerEx *RichBlessedPlayerData) { - //if s.DbGameFree.GetId() == 3070004 { + //if s.GetDBGameFree().GetId() == 3070004 { // playerEx.TestCode(eleLineAppearRate) //} else { playerEx.result.CreateLine(eleLineAppearRate) @@ -448,7 +448,7 @@ func (s *RichBlessedSceneData) SendPlayerBet(p *RichBlessedPlayerData) { GameCoinTs: p.GameCoinTs, } gwPlayerBet := &server.GWPlayerData{ - GameFreeId: proto.Int32(s.DbGameFree.GetId()), + GameFreeId: proto.Int32(s.GetDBGameFree().GetId()), SceneId: int32(s.SceneId), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) diff --git a/gamesrv/richblessed/scenepolicy_richblessed.go b/gamesrv/richblessed/scenepolicy_richblessed.go index 73ff76a..c914417 100644 --- a/gamesrv/richblessed/scenepolicy_richblessed.go +++ b/gamesrv/richblessed/scenepolicy_richblessed.go @@ -71,7 +71,7 @@ func (this *ScenePolicyRichBlessed) OnPlayerEnter(s *base.Scene, p *base.Player) if s == nil || p == nil { return } - logger.Logger.Trace("(this *ScenePolicyRichBlessed) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.Name, "bet:", s.DbGameFree.GetOtherIntParams()) + logger.Logger.Trace("(this *ScenePolicyRichBlessed) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.Name, "bet:", s.GetDBGameFree().GetOtherIntParams()) if sceneEx, ok := s.GetExtraData().(*RichBlessedSceneData); ok { playerEx := &RichBlessedPlayerData{Player: p} playerEx.init() @@ -148,15 +148,15 @@ func RichBlessedSendRoomInfo(s *base.Scene, sceneEx *RichBlessedSceneData, playe func RichBlessedCreateRoomInfoPacket(s *base.Scene, sceneEx *RichBlessedSceneData, playerEx *RichBlessedPlayerData) interface{} { //房间信息 pack := &protocol.SCRBRoomInfo{ - RoomId: proto.Int(s.SceneId), - GameId: proto.Int(s.GameId), - RoomMode: proto.Int(s.SceneMode), - SceneType: proto.Int(s.SceneType), + RoomId: s.SceneId, + GameId: s.GameId, + RoomMode: s.SceneMode, + SceneType: s.GetSceneType(), Params: common.CopySliceInt64ToInt32(s.Params), NumOfGames: proto.Int(sceneEx.NumOfGames), State: proto.Int(s.SceneState.GetState()), - ParamsEx: common.Int64ToInt32(s.DbGameFree.OtherIntParams), //s.GetParamsEx(), - //BetLimit: s.DbGameFree.BetLimit, + ParamsEx: common.Int64ToInt32(s.GetDBGameFree().OtherIntParams), //s.GetParamsEx(), + //BetLimit: s.GetDBGameFree().BetLimit, NowGameState: proto.Int(playerEx.gameState), BetIdx: proto.Int(playerEx.betIdx), @@ -172,11 +172,11 @@ func RichBlessedCreateRoomInfoPacket(s *base.Scene, sceneEx *RichBlessedSceneDat WinFreeTimes: proto.Int32(int32(playerEx.nowFreeTimes)), JackpotEle: proto.Int32(playerEx.result.JackpotEle), WinJackpot: proto.Int64(playerEx.JackwinCoin), - GameFreeId: proto.Int32(s.DbGameFree.Id), + GameFreeId: proto.Int32(s.GetDBGameFree().Id), } - if playerEx.oneBetCoin == 0 && len(s.DbGameFree.GetOtherIntParams()) != 0 { // 初始化客户端jack显示 - oneBetCoin := int64(s.DbGameFree.GetOtherIntParams()[0] / richblessed.LineNum) + if playerEx.oneBetCoin == 0 && len(s.GetDBGameFree().GetOtherIntParams()) != 0 { // 初始化客户端jack显示 + oneBetCoin := int64(s.GetDBGameFree().GetOtherIntParams()[0] / richblessed.LineNum) pack.SmallJackpot = oneBetCoin * richblessed.JkEleNumRate[richblessed.BlueGirl] pack.MiddleJackpot = oneBetCoin * richblessed.JkEleNumRate[richblessed.BlueBoy] pack.BigJackpot = oneBetCoin * richblessed.JkEleNumRate[richblessed.GoldGirl] @@ -302,11 +302,11 @@ func (this *SceneBaseStateRichBlessed) OnTick(s *base.Scene) { if sceneEx, ok := s.ExtraData.(*RichBlessedSceneData); ok { //for _, p := range sceneEx.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(sceneEx.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(sceneEx.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // sceneEx.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(sceneEx.DbGameFree.GetPlayNumLimit()) { + // sceneEx.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(sceneEx.GetDBGameFree().GetPlayNumLimit()) { // s.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} @@ -401,7 +401,7 @@ func (this *SceneStateStartRichBlessed) OnPlayerOp(s *base.Scene, p *base.Player //只有开始算操作 p.LastOPTimer = time.Now() idx := int(params[0]) - if len(sceneEx.DbGameFree.GetOtherIntParams()) <= idx { + if len(sceneEx.GetDBGameFree().GetOtherIntParams()) <= idx { pack := &protocol.SCRichBlessedOp{ OpCode: proto.Int(opcode), OpRetCode: proto.Int(3), @@ -423,13 +423,13 @@ func (this *SceneStateStartRichBlessed) OnPlayerOp(s *base.Scene, p *base.Player if playerEx.gameState == richblessed.Normal { logger.Logger.Tracef("(this *SceneStateStartRichBlessed) OnPlayerOp, 下注 %v %v %v", playerEx.betCoin, playerEx.maxbetCoin, playerEx.oneBetCoin) playerEx.betIdx = idx - playerEx.betCoin = int64(sceneEx.DbGameFree.GetOtherIntParams()[idx]) - maxidx := len(sceneEx.DbGameFree.GetOtherIntParams()) - 1 - playerEx.maxbetCoin = int64(sceneEx.DbGameFree.GetOtherIntParams()[maxidx]) + playerEx.betCoin = int64(sceneEx.GetDBGameFree().GetOtherIntParams()[idx]) + maxidx := len(sceneEx.GetDBGameFree().GetOtherIntParams()) - 1 + playerEx.maxbetCoin = int64(sceneEx.GetDBGameFree().GetOtherIntParams()[maxidx]) playerEx.oneBetCoin = playerEx.betCoin / richblessed.LineNum // 单注 playerEx.noWinTimes++ - if playerEx.Coin < int64(s.DbGameFree.GetBetLimit()) { + if playerEx.Coin < int64(s.GetDBGameFree().GetBetLimit()) { //押注限制(低于该值不能押注) pack := &protocol.SCRichBlessedOp{ OpCode: proto.Int(opcode), @@ -495,9 +495,9 @@ func (this *SceneStateStartRichBlessed) OnPlayerOp(s *base.Scene, p *base.Player case richblessed.RichBlessedPlayerOpSwitch: if len(params) > 0 && playerEx.freeTimes == 0 { idx := int(params[0]) - if len(sceneEx.DbGameFree.GetOtherIntParams()) > idx { + if len(sceneEx.GetDBGameFree().GetOtherIntParams()) > idx { playerEx.betIdx = idx - playerEx.betCoin = int64(sceneEx.DbGameFree.GetOtherIntParams()[idx]) + playerEx.betCoin = int64(sceneEx.GetDBGameFree().GetOtherIntParams()[idx]) playerEx.oneBetCoin = playerEx.betCoin / richblessed.LineNum pack := &protocol.SCRichBlessedOp{ OpCode: proto.Int(opcode), diff --git a/gamesrv/smallrocket/scene.go b/gamesrv/smallrocket/scene.go index b95f183..d7fec18 100644 --- a/gamesrv/smallrocket/scene.go +++ b/gamesrv/smallrocket/scene.go @@ -271,15 +271,15 @@ func (this *SceneEx) init() bool { } func (this *SceneEx) GetBaseScore() int32 { //游戏底分 - if this.DbGameFree != nil { - return this.DbGameFree.GetBaseScore() + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetBaseScore() } return 1 } func (this *SceneEx) GetBetMaxCoin() int32 { //游戏底分 - if this.DbGameFree != nil { - return this.DbGameFree.GetBaseScore() * 10000 + if this.GetDBGameFree() != nil { + return this.GetDBGameFree().GetBaseScore() * 10000 } return 1 * 10000 } diff --git a/gamesrv/tamquoc/scenedata_tamquoc.go b/gamesrv/tamquoc/scenedata_tamquoc.go index bf35be4..69891c1 100644 --- a/gamesrv/tamquoc/scenedata_tamquoc.go +++ b/gamesrv/tamquoc/scenedata_tamquoc.go @@ -52,14 +52,14 @@ func (this *TamQuocSceneData) SceneDestroy(force bool) { } func (this *TamQuocSceneData) init() bool { - if this.DbGameFree == nil { + if this.GetDBGameFree() == nil { return false } - params := this.DbGameFree.GetJackpot() + params := this.GetDBGameFree().GetJackpot() this.jackpot = &base.SlotJackpotPool{} if this.jackpot.Small <= 0 { this.jackpot.Small = 0 - this.jackpot.VirtualJK = int64(params[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) + this.jackpot.VirtualJK = int64(params[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) } str := base.SlotsPoolMgr.GetPool(this.GetGameFreeId(), this.Platform) if str != "" { @@ -95,7 +95,7 @@ type TamQuocSpinResult struct { } func (this *TamQuocSceneData) CalcLinePrize(cards []int, betLines []int64, betValue int64) (spinRes TamQuocSpinResult) { - taxRate := this.DbGameFree.GetTaxRate() + taxRate := this.GetDBGameFree().GetTaxRate() calcTaxScore := func(score int64, taxScore *int64) int64 { newScore := int64(float64(score) * float64(10000-taxRate) / 10000.0) if taxScore != nil { @@ -114,7 +114,7 @@ func (this *TamQuocSceneData) CalcLinePrize(cards []int, betLines []int64, betVa if spinRes.TotalPrizeJackpot == 0 { // 第一个爆奖 获取当前奖池所有 prizeJackpot = this.jackpot.VirtualJK } else { // 之后的爆奖 奖励为奖池初值 - prizeJackpot = int64(this.DbGameFree.GetJackpot()[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) + prizeJackpot = int64(this.GetDBGameFree().GetJackpot()[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) } prizeJackpot = calcTaxScore(prizeJackpot, &spinRes.TotalTaxScore) spinRes.TotalPrizeJackpot += prizeJackpot @@ -177,7 +177,7 @@ func (this *TamQuocSceneData) BroadcastJackpot(sync bool) { this.lastJackpotValue = this.jackpot.VirtualJK pack := &gamehall.SCHundredSceneGetGameJackpot{} jpfi := &gamehall.GameJackpotFundInfo{ - GameFreeId: proto.Int32(this.DbGameFree.Id), + GameFreeId: proto.Int32(this.GetDBGameFree().Id), JackPotFund: proto.Int64(this.jackpot.VirtualJK), } pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) @@ -204,7 +204,7 @@ func (this *TamQuocSceneData) PopCoinPool(winCoin int64, IsNovice bool) { } } func (this *TamQuocSceneData) RecordBurstLog(name string, wincoin, totalbet int64) { - log := model.NewBurstJackpotLog(this.Platform, this.DbGameFree.GameId, this.GetGameFreeId(), name, wincoin, totalbet) + log := model.NewBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId, this.GetGameFreeId(), name, wincoin, totalbet) task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { return model.InsertBurstJackpotLogs(log) }), nil, "InsertBurstJackpotLogs").Start() @@ -212,7 +212,7 @@ func (this *TamQuocSceneData) RecordBurstLog(name string, wincoin, totalbet int6 func (this *TamQuocSceneData) BurstHistory(player *TamQuocPlayerData) { task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.GetBurstJackpotLog(this.Platform, this.DbGameFree.GameId) + return model.GetBurstJackpotLog(this.Platform, this.GetDBGameFree().GameId) }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { var logsp []*tamquoc.TamQuocBurstHistoryInfo if data != nil { @@ -240,7 +240,7 @@ func (this *TamQuocSceneData) GetLastBurstJackPot() time.Time { } func (this *TamQuocSceneData) SetLastBurstJackPot() { var randT = rand.Intn(25200-7200+1) + 7200 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(25200-7200+1) + 7200 case 2: @@ -254,7 +254,7 @@ func (this *TamQuocSceneData) SetLastBurstJackPot() { func (this *TamQuocSceneData) AIAddJackPot() { if time.Now().Sub(this.lastJackPot) > 0 { var randT = rand.Intn(3) + 1 - switch this.DbGameFree.SceneType { + switch this.GetDBGameFree().SceneType { case 1: randT = rand.Intn(3) + 1 case 2: @@ -265,20 +265,20 @@ func (this *TamQuocSceneData) AIAddJackPot() { randT = rand.Intn(3) + 1 } this.lastJackPot = time.Now().Add(time.Second * time.Duration(randT)) - val := int64(math.Floor(float64(this.DbGameFree.GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) + val := int64(math.Floor(float64(this.GetDBGameFree().GetBaseScore()) * float64(rule.LINENUM) * float64(500) / 10000)) this.jackpot.VirtualJK += val } } func (this *TamQuocSceneData) AIBurstJackPot() { if time.Now().Sub(this.GetLastBurstJackPot()) > 0 { this.SetLastBurstJackPot() - jackpotParams := this.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParams[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(this.DbGameFree.GetBaseScore()) //奖池初始值 + jackpotParams := this.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParams[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(this.GetDBGameFree().GetBaseScore()) //奖池初始值 //AI机器人爆奖 val := this.jackpot.VirtualJK this.jackpot.VirtualJK = jackpotInit - bet := int64(this.DbGameFree.GetBaseScore()) * int64(rule.LINENUM) + bet := int64(this.GetDBGameFree().GetBaseScore()) * int64(rule.LINENUM) this.RecordBurstLog(this.RandNickName(), val, int64(bet)) } } @@ -299,11 +299,11 @@ func (this *TamQuocSceneData) KickPlayerByTime() { } //for _, p := range this.players { // //游戏次数达到目标值 - // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.DbGameFree.GetId())) + // todayGamefreeIDSceneData, _ := p.GetDaliyGameData(int(this.GetDBGameFree().GetId())) // if !p.IsRob && // todayGamefreeIDSceneData != nil && - // this.DbGameFree.GetPlayNumLimit() != 0 && - // todayGamefreeIDSceneData.GameTimes >= int64(this.DbGameFree.GetPlayNumLimit()) { + // this.GetDBGameFree().GetPlayNumLimit() != 0 && + // todayGamefreeIDSceneData.GameTimes >= int64(this.GetDBGameFree().GetPlayNumLimit()) { // this.PlayerLeave(p.Player, common.PlayerLeaveReason_GameTimes, true) // } //} diff --git a/gamesrv/tamquoc/scenepolicy_tamquoc.go b/gamesrv/tamquoc/scenepolicy_tamquoc.go index f2cd36b..9d1aac5 100644 --- a/gamesrv/tamquoc/scenepolicy_tamquoc.go +++ b/gamesrv/tamquoc/scenepolicy_tamquoc.go @@ -90,8 +90,8 @@ func (this *ScenePolicyTamQuoc) OnPlayerEnter(s *base.Scene, p *base.Player) { logger.Logger.Trace("(this *ScenePolicyTamQuoc) OnPlayerEnter, sceneId=", s.SceneId, " player=", p.SnId) if sceneEx, ok := s.ExtraData.(*TamQuocSceneData); ok { playerEx := &TamQuocPlayerData{Player: p} - playerEx.init(s) // 玩家当前信息初始化 - playerEx.score = sceneEx.DbGameFree.GetBaseScore() // 底注 + playerEx.init(s) // 玩家当前信息初始化 + playerEx.score = sceneEx.GetDBGameFree().GetBaseScore() // 底注 sceneEx.players[p.SnId] = playerEx p.ExtraData = playerEx TamQuocSendRoomInfo(s, p, sceneEx, playerEx, nil) @@ -226,10 +226,10 @@ func (this *ScenePolicyTamQuoc) GetJackPotVal(s *base.Scene) int64 { func TamQuocSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *TamQuocSceneData, playerEx *TamQuocPlayerData, data *tamquoc.GameBilledData) { logger.Logger.Trace("-------------------发送房间消息 ", s.RoomId, p.SnId) pack := &tamquoc.SCTamQuocRoomInfo{ - RoomId: proto.Int(s.SceneId), + RoomId: s.SceneId, Creator: proto.Int32(s.Creator), - GameId: proto.Int(s.GameId), - RoomMode: proto.Int(s.GameMode), + GameId: s.GameId, + RoomMode: s.GameMode, Params: common.CopySliceInt64ToInt32(s.Params), State: proto.Int(s.SceneState.GetState()), Jackpot: proto.Int64(sceneEx.jackpot.VirtualJK), @@ -252,7 +252,7 @@ func TamQuocSendRoomInfo(s *base.Scene, p *base.Player, sceneEx *TamQuocSceneDat //} pack.BetLines = playerEx.betLines pack.FreeTimes = proto.Int32(playerEx.freeTimes) - pack.Chip = proto.Int32(s.DbGameFree.BaseScore) + pack.Chip = proto.Int32(s.GetDBGameFree().BaseScore) pack.SpinID = proto.Int64(playerEx.spinID) if playerEx.totalPriceBonus > 0 && playerEx.bonusGameStartTime.Add(TamQuocBonusGamePickTime).Before(time.Now()) { playerEx.totalPriceBonus = 0 @@ -339,7 +339,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op return false } //先做底注校验 - if sceneEx.DbGameFree.GetBaseScore() != int32(params[0]) { + if sceneEx.GetDBGameFree().GetBaseScore() != int32(params[0]) { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, tamquoc.OpResultCode_OPRC_Error, params) return false } @@ -373,7 +373,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op if playerEx.freeTimes <= 0 && totalBetValue > playerEx.Coin { this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, tamquoc.OpResultCode_OPRC_CoinNotEnough, params) return false - } else if playerEx.freeTimes <= 0 && int64(sceneEx.DbGameFree.GetBetLimit()) > playerEx.Coin { //押注限制 + } else if playerEx.freeTimes <= 0 && int64(sceneEx.GetDBGameFree().GetBetLimit()) > playerEx.Coin { //押注限制 this.OnPlayerSToCOp(s, p, playerEx.Pos, opcode, tamquoc.OpResultCode_OPRC_CoinNotEnough, params) return false } @@ -388,7 +388,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op sceneEx.CpCtx = base.CoinPoolMgr.GetCoinPoolCtx(sceneEx.Platform, sceneEx.GetGameFreeId(), sceneEx.GroupId) //税收比例 - taxRate := sceneEx.DbGameFree.GetTaxRate() + taxRate := sceneEx.GetDBGameFree().GetTaxRate() if taxRate < 0 || taxRate > 10000 { logger.Logger.Tracef("TamQuocErrorTaxRate [%v][%v][%v][%v]", sceneEx.GetGameFreeId(), playerEx.SnId, playerEx.spinID, taxRate) taxRate = 500 @@ -410,8 +410,8 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op prizeFund := gamePoolCoin - sceneEx.jackpot.VirtualJK // 除去奖池的水池剩余金额 // 奖池参数 - var jackpotParam = sceneEx.DbGameFree.GetJackpot() - var jackpotInit = int64(jackpotParam[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(sceneEx.DbGameFree.GetBaseScore()) //奖池初始值 + var jackpotParam = sceneEx.GetDBGameFree().GetJackpot() + var jackpotInit = int64(jackpotParam[rule.TAMQUOC_JACKPOT_InitJackpot]) * int64(sceneEx.GetDBGameFree().GetBaseScore()) //奖池初始值 var jackpotFundAdd, prizeFundAdd int64 if playerEx.freeTimes <= 0 { //正常模式才能记录用户的押注变化,免费模式不能改变押注 @@ -431,7 +431,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op //统计参与游戏次数 //if !sceneEx.Testing && !playerEx.IsRob { // pack := &server.GWSceneEnd{ - // GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + // GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), // Players: []*server.PlayerCtx{&server.PlayerCtx{SnId: proto.Int32(playerEx.SnId), Coin: proto.Int64(playerEx.Coin)}}, // } // proto.SetDefaults(pack) @@ -454,11 +454,11 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op var slotDataIsOk bool for i := 0; i < 3; i++ { slotData = rule.GenerateSlotsData_v2(symbolType) - //if sceneEx.DbGameFree.GetSceneType() == 1 { + //if sceneEx.GetDBGameFree().GetSceneType() == 1 { // slotData = []int{1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7} //} spinRes = sceneEx.CalcLinePrize(slotData, playerEx.betLines, params[0]) - //if sceneEx.DbGameFree.GetSceneType() == 1 { + //if sceneEx.GetDBGameFree().GetSceneType() == 1 { // slotDataIsOk = true // break //} @@ -641,7 +641,7 @@ func (this *SceneStateTamQuocStart) OnPlayerOp(s *base.Scene, p *base.Player, op case TamQuocPlayerHistory: task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { spinid := strconv.FormatInt(int64(playerEx.SnId), 10) - gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.DbGameFree.GetGameClass(), s.GameId) + gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 80, 0, 0, 0, s.GetDBGameFree().GetGameClass(), int(s.GameId)) pack := &tamquoc.SCTamQuocPlayerHistory{} for _, v := range gpl.Data { //if v.GameDetailedLogId == "" { @@ -759,7 +759,7 @@ func TamQuocCheckAndSaveLog(sceneEx *TamQuocSceneData, playerEx *TamQuocPlayerDa //log2 playerEx.RollGameType.BaseResult.ChangeCoin = changeCoin - playerEx.RollGameType.BaseResult.BasicBet = sceneEx.DbGameFree.GetBaseScore() + playerEx.RollGameType.BaseResult.BasicBet = sceneEx.GetDBGameFree().GetBaseScore() playerEx.RollGameType.BaseResult.RoomId = int32(sceneEx.SceneId) playerEx.RollGameType.BaseResult.AfterCoin = playerEx.Coin playerEx.RollGameType.BaseResult.BeforeCoin = startCoin @@ -818,8 +818,8 @@ func TamQuocCheckAndSaveLog(sceneEx *TamQuocSceneData, playerEx *TamQuocPlayerDa GameCoinTs: proto.Int64(playerEx.GameCoinTs), } gwPlayerBet := &server.GWPlayerData{ - SceneId: proto.Int(sceneEx.SceneId), - GameFreeId: proto.Int32(sceneEx.DbGameFree.GetId()), + SceneId: sceneEx.SceneId, + GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()), } gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet) sceneEx.SyncPlayerDatas(&base.PlayerDataParam{ diff --git a/gamesrv/thirteen/scene.go b/gamesrv/thirteen/scene.go index 2f5e805..af3c1b7 100644 --- a/gamesrv/thirteen/scene.go +++ b/gamesrv/thirteen/scene.go @@ -173,7 +173,6 @@ func (this *SceneEx) ThirteenWaterCreateRoomInfoPacket(s *base.Scene, p *base.Pl Creator: proto.Int32(s.GetCreator()), GameId: proto.Int(s.GetGameId()), RoomMode: proto.Int(s.GetSceneMode()), - AgentId: proto.Int32(s.GetAgentor()), SceneType: s.GetDBGameFree().SceneType, State: proto.Int(s.GetSceneState().GetState()), TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)), @@ -369,15 +368,15 @@ func (this *SceneEx) ThirteenWaterCreateRoomInfoPacket(s *base.Scene, p *base.Pl } func (this *SceneEx) GetBaseScore() int64 { //游戏底分 - if this.DbGameFree.FreeMode == 1 { + if this.GetDBGameFree().FreeMode == 1 { baseScore := this.GetParam(rule.ParamBaseScore) if baseScore > 0 { return baseScore } } - if this.DbGameFree != nil { - return int64(this.DbGameFree.GetBaseScore()) + if this.GetDBGameFree() != nil { + return int64(this.GetDBGameFree().GetBaseScore()) } return 1 } @@ -1269,7 +1268,7 @@ func (this *SceneEx) CountBilled() { } if playerEx.gainCoin > 0 { gainCoin := playerEx.gainCoin - playerEx.gainCoin = playerEx.gainCoin * int64(10000-this.DbGameFree.GetTaxRate()) / 10000 + playerEx.gainCoin = playerEx.gainCoin * int64(10000-this.GetDBGameFree().GetTaxRate()) / 10000 playerEx.taxCoin = gainCoin - playerEx.gainCoin } logger.Logger.Tracef("玩家分数 %v, coin:%v tax:%v win:%v", playerEx.SnId, playerEx.gainCoin, playerEx.taxCoin, playerEx.winAllPlayers) @@ -1335,7 +1334,7 @@ func (this *SceneEx) SendHandCardOdds() { if seat.IsRob { robotPlayers = append(robotPlayers, seat) } else { - seat.odds = this.GetPlayerOdds(seat.Player, this.GameId, this.robotNum > 0) + seat.odds = this.GetPlayerOdds(seat.Player, int(this.GameId), this.robotNum > 0) seat.playerPool = int(this.PlayerPoolOdds(seat.Player)) if seat.odds > 0 { realPlayersGood = append(realPlayersGood, seat) diff --git a/gamesrv/thirteen/scenepolicy.go b/gamesrv/thirteen/scenepolicy.go index e9ab157..a577c4f 100644 --- a/gamesrv/thirteen/scenepolicy.go +++ b/gamesrv/thirteen/scenepolicy.go @@ -1258,9 +1258,9 @@ func (this *StateBilled) OnEnter(s *base.Scene) { if sceneEx.gamePlayerNum-sceneEx.robotNum > 0 { /////////////////////////////////////统计牌局详细记录 thirteenWaterType := model.ThirteenWaterType{ - RoomId: int32(sceneEx.SceneId), + RoomId: sceneEx.SceneId, RoomRounds: int32(sceneEx.NumOfGames), - RoomType: int32(sceneEx.SceneType), + RoomType: sceneEx.GetSceneType(), BaseScore: int32(sceneEx.GetBaseScore()), NowRound: int32(sceneEx.NumOfGames), ClubRate: sceneEx.Scene.PumpCoin, @@ -1462,7 +1462,7 @@ func (this *StateBilled) OnLeave(s *base.Scene) { s.TryDismissRob() } - if s.CheckNeedDestroy() || (s.IsMatchScene() && (!s.MatchFinals || (s.MatchFinals && s.NumOfGames >= 2))) { // 非决赛打一场 决赛打两场 + if s.CheckNeedDestroy() || (s.IsMatchScene() && (!s.GetMatch().GetIsFinals() || (s.GetMatch().GetIsFinals() && s.NumOfGames >= 2))) { // 非决赛打一场 决赛打两场 sceneEx.SceneDestroy(true) } s.TryRelease() diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index 7bfc44e..e581d75 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -21,6 +21,17 @@ import ( "mongo.games.com/game/srvdata" ) +type BilledInfo struct { + Round int32 // 第几局 + ChangeScore int64 // 积分变化 + Score int64 // 结算后积分 +} + +type Item struct { + Id int32 + Num int64 +} + // 房间上的额外数据 type TienLenSceneData struct { *base.Scene //场景 @@ -56,13 +67,20 @@ type TienLenSceneData struct { isCardsKu bool //是否是牌库 cardsKuId int32 //牌库ID ctrlType int // 1控赢 2控输 0不控 + BilledList map[int32]*[]*BilledInfo // 多轮结算记录, 玩家id:每局结算记录 + RoundEndTime []int64 // 每局结束时间 + RoundLogId []string // 每局牌局记录id + CustomLogSave bool // 是否已经保存日志 + PlayerAward map[int32]*[]*model.Item // 房卡场最终奖励 } func NewTienLenSceneData(s *base.Scene) *TienLenSceneData { sceneEx := &TienLenSceneData{ - Scene: s, - poker: rule.NewPoker(), - players: make(map[int32]*TienLenPlayerData), + Scene: s, + poker: rule.NewPoker(), + players: make(map[int32]*TienLenPlayerData), + BilledList: map[int32]*[]*BilledInfo{}, + PlayerAward: make(map[int32]*[]*model.Item), } sceneEx.Clear() return sceneEx @@ -143,6 +161,11 @@ func (this *TienLenSceneData) CanStart() bool { return false } } + + if this.IsCustom() { + return this.IsAllReady() && this.GetPlayerCnt() >= this.GetPlayerNum() + } + // 房间人数>=2开始,并且有真人或者是预创建房间,并且有房主 if nPlayerCount >= 2 && (this.GetRealPlayerNum() > 0 || this.IsPreCreateScene()) { //人数>=2开始 return true @@ -267,6 +290,7 @@ func (this *TienLenSceneData) OnPlayerLeave(p *base.Player, reason int) { } func (this *TienLenSceneData) SceneDestroy(force bool) { + this.SaveCustomLog() //销毁房间 this.Scene.Destroy(force) } @@ -371,7 +395,7 @@ func (this *TienLenSceneData) BroadcastOpPos() { for _, seat := range this.seats { if seat != nil && seat.IsGameing() { if !seat.IsRob { - seat.odds = this.GetPlayerOdds(seat.Player, this.GameId, this.robotGamingNum > 0) + seat.odds = this.GetPlayerOdds(seat.Player, int(this.GameId), this.robotGamingNum > 0) if seat.odds < 0 { B -= seat.odds } @@ -523,7 +547,7 @@ func (this *TienLenSceneData) IsTienLenToEnd() bool { return common.IsTienLenToEnd(this.GetGameId()) } func (this *TienLenSceneData) GetFreeGameSceneType() int32 { - return int32(this.SceneType) + return this.GetSceneType() } // 比赛场发牌 @@ -619,6 +643,9 @@ func (this *TienLenSceneData) SendHandCard_Match() { proto.SetDefaults(pack) seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) + + pack.SnId = seat.SnId + this.BroadcastToAudience(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) } } @@ -652,6 +679,9 @@ func (this *TienLenSceneData) SendHandCard_Match() { proto.SetDefaults(pack) seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) + + pack.SnId = seat.SnId + this.BroadcastToAudience(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) } } } @@ -1055,7 +1085,7 @@ func (this *TienLenSceneData) SendHandCardOdds() { if seat.IsRob { robotPlayers = append(robotPlayers, seat) } else { - seat.odds = this.GetPlayerOdds(seat.Player, this.GameId, this.robotGamingNum > 0) + seat.odds = this.GetPlayerOdds(seat.Player, int(this.GameId), this.robotGamingNum > 0) seat.playerPool = int(this.PlayerPoolOdds(seat.Player)) if seat.odds > 0 { realPlayersGood = append(realPlayersGood, seat) @@ -1066,7 +1096,7 @@ func (this *TienLenSceneData) SendHandCardOdds() { } else { realPlayers = append(realPlayers, seat) } - _, isNovice := seat.NoviceOdds(this.GameId) + _, isNovice := seat.NoviceOdds(int(this.GameId)) if isNovice { novicePlayers = append(novicePlayers, seat) } else { @@ -1946,7 +1976,7 @@ func (this *TienLenSceneData) TrySmallGameBilled() { logger.Logger.Trace("宠物技能抵挡炸弹生效,发送消息 SCTienLenPetSkillRes: ", pack) } if score != 0 { - taxRate := this.DbGameFree.GetTaxRate() //万分比 + taxRate := this.GetDBGameFree().GetTaxRate() //万分比 gainScore := int64(float64(score) * float64(10000-taxRate) / 10000.0) //税后 bombTaxScore := score - gainScore // win @@ -2072,3 +2102,61 @@ func (this *TienLenSceneData) SendFirstGiveTimeItem(p *base.Player) { p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenFirstGiveItemItem), pack) } } + +// SaveCustomLog 保存竞技馆对局记录 +func (this *TienLenSceneData) SaveCustomLog() { + if this.CustomLogSave || !this.IsCustom() { + return + } + this.CustomLogSave = true + state := int32(0) + if len(this.RoundEndTime) < int(this.TotalOfGames) { + state = 1 + } + log := &model.CustomLog{ + Platform: this.Platform, + CycleId: this.CycleID, + RoomConfigId: this.GetCustom().GetRoomConfigId(), + RoomId: this.SceneId, + StartTs: this.GameStartTime.Unix(), + EndTs: time.Now().Unix(), + State: state, + GameFreeId: this.GetGameFreeId(), + TotalRound: this.TotalOfGames, + Password: this.GetCustom().GetPassword(), + CostType: this.GetCustom().GetCostType(), + Voice: this.GetCustom().GetVoice(), + } + for snid := range this.BilledList { + var items []*model.Item + if this.PlayerAward[snid] != nil { + items = *this.PlayerAward[snid] + } + log.SnId = append(log.SnId, model.PlayerInfo{ + SnId: snid, + Awards: items, + }) + } + + sort.Slice(log.SnId, func(i, j int) bool { + p1 := base.PlayerMgrSington.GetPlayerBySnId(log.SnId[i].SnId) + p2 := base.PlayerMgrSington.GetPlayerBySnId(log.SnId[j].SnId) + return p1.GetCoin() > p2.GetCoin() + }) + + for k, v := range this.RoundEndTime { + score := make([]int64, len(this.BilledList)) + for kk, vv := range log.SnId { + if k < len(*this.BilledList[vv.SnId]) { + score[kk] = (*this.BilledList[vv.SnId])[k].ChangeScore + } + } + log.List = append(log.List, model.RoundInfo{ + Round: int32(k + 1), + Ts: v, + Score: score, + LogId: this.RoundLogId[k], + }) + } + base.LogChannelSingleton.WriteLog(log) +} diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index aa163e9..a64bbd5 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -423,7 +423,7 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen State: proto.Int32(int32(s.GetSceneState().GetState())), TimeOut: proto.Int(s.GetSceneState().GetTimeout(s)), NumOfGames: proto.Int(sceneEx.NumOfGames), - TotalOfGames: proto.Int(sceneEx.TotalOfGames), + TotalOfGames: sceneEx.TotalOfGames, CurOpIdx: proto.Int(-1), MasterSnid: proto.Int32(sceneEx.masterSnid), AudienceNum: proto.Int(s.GetAudiencesNum()), @@ -432,18 +432,27 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen RankType: s.GetDBGameFree().GetRankType(), SceneAdd: s.GetDBGameFree().GetSceneAdd(), // 比赛场相关 - Round: int32(s.MatchRound), - CurPlayerNum: int32(s.MatchCurPlayerNum), - NextNeed: int32(s.MatchNextNeed), + Round: s.GetMatch().GetCurrRound(), + CurPlayerNum: s.GetMatch().GetCurrPlayerNum(), + NextNeed: s.GetMatch().GetNextPlayerNum(), RecordId: sceneEx.recordId, + TMInfoId: s.GetMatch().GetMatchId(), + RoomTypeId: s.GetCustom().GetRoomTypeId(), + RoomConfigId: s.GetCustom().GetRoomConfigId(), + CostType: s.GetCustom().GetCostType(), + Voice: s.GetCustom().GetVoice(), + Password: s.GetCustom().GetPassword(), + } + if s.GetCustom().GetPassword() != "" { + pack.NeedPassword = 1 } pack.IsMatch = int32(0) // 0.普通场 1.锦标赛 2.冠军赛 3.vip专属 if s.IsMatchScene() { - pack.IsMatch = int32(s.MatchType) + pack.IsMatch = s.GetMatch().GetMatchType() } pack.MatchFinals = 0 - if s.MatchFinals { + if s.GetMatch().GetIsFinals() { pack.MatchFinals = 1 if s.NumOfGames >= 2 { pack.MatchFinals = 2 @@ -517,7 +526,7 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen //手牌 for j := int32(0); j < rule.HandCardNum; j++ { if nowPlayer.cards[j] != rule.InvalideCard { - if s.GetSceneState().GetState() == rule.TienLenSceneStateBilled { //结算状态显示用 + if s.GetSceneState().GetState() == rule.TienLenSceneStateBilled || p.IsMarkFlag(base.PlayerState_Audience) { //结算状态显示用 pd1.Cards = append(pd1.Cards, nowPlayer.cards[j]) } else { pd1.Cards = append(pd1.Cards, rule.InvalideCard) @@ -594,6 +603,9 @@ func (this *SceneBaseStateTienLen) OnTick(s *base.Scene) { s.RandRobotCnt() s.SetTimerRandomRobot(s.GetRobotTime()) } + if s.IsCustom() && len(s.Players) == 0 { + s.Destroy(true) + } } // 发送玩家操作情况 @@ -813,7 +825,7 @@ func (this *SceneWaitStartStateTienLen) OnEnter(s *base.Scene) { if sceneEx, ok := s.GetExtraData().(*TienLenSceneData); ok { sceneEx.Clear() sceneEx.SetGaming(false) - this.BroadcastRoomState(s, this.GetState()) + this.BroadcastRoomState(s, this.GetState(), int64(sceneEx.NumOfGames)) logger.Logger.Trace("(this *SceneWaitStartStateTienLen) OnEnter", this.GetState()) } } @@ -879,7 +891,7 @@ func (this *SceneWaitStartStateTienLen) OnTick(s *base.Scene) { if sceneEx, ok := s.GetExtraData().(*TienLenSceneData); ok { if sceneEx.IsMatchScene() { delayT := time.Second * 2 - if sceneEx.MatchRound != 1 { //第一轮延迟2s,其他延迟3s 配合客户端播放动画 + if sceneEx.GetMatch().GetCurrRound() != 1 { //第一轮延迟2s,其他延迟3s 配合客户端播放动画 delayT = time.Second * 4 } if time.Now().Sub(sceneEx.StateStartTime) > delayT { @@ -894,7 +906,16 @@ func (this *SceneWaitStartStateTienLen) OnTick(s *base.Scene) { return } //开始前再次检查开始条件 - if sceneEx.CanStart() == true { + if sceneEx.CanStart() { + s.ChangeSceneState(rule.TienLenSceneStateHandCard) + } else { + s.ChangeSceneState(rule.TienLenSceneStateWaitPlayer) + } + } + } + if sceneEx.IsCustom() { + if time.Now().Sub(sceneEx.StateStartTime) > rule.TienLenCustomWaiteStatTimeout { + if sceneEx.CanStart() { s.ChangeSceneState(rule.TienLenSceneStateHandCard) } else { s.ChangeSceneState(rule.TienLenSceneStateWaitPlayer) @@ -953,13 +974,17 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { s.NotifySceneRoundStart(s.NumOfGames) this.BroadcastRoomState(s, this.GetState(), int64(s.NumOfGames)) + if s.IsCustom() && s.NumOfGames == 1 { + s.SyncSceneState(common.SceneStateStart) + } + //同步防伙牌数据 sceneEx.SyncScenePlayer() //发牌 if rule.TestOpen { sceneEx.SendHandCardTest() } else { - if sceneEx.IsMatchScene() { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { sceneEx.SendHandCard_Match() } else { sceneEx.SendHandCardOdds() @@ -981,7 +1006,7 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { seat.tianHu = rule.TianHu12Straight } if seat.tianHu > 0 { - keyNovice := common.GetKeyNoviceGameId(sceneEx.GameId) + keyNovice := common.GetKeyNoviceGameId(int(sceneEx.GameId)) data, ok := seat.GDatas[keyNovice] if !ok { data = &model.PlayerGameInfo{FirstTime: time.Now()} @@ -1636,14 +1661,14 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { winRankScore := int64(0) pack := &tienlen.SCTienLenGameBilled{} tienlenType := model.TienLenType{ - GameId: sceneEx.GameId, + GameId: int(sceneEx.GameId), RoomId: int32(sceneEx.GetSceneId()), RoomType: sceneEx.GetFreeGameSceneType(), NumOfGames: int32(sceneEx.Scene.NumOfGames), BankId: sceneEx.masterSnid, PlayerCount: sceneEx.curGamingPlayerNum, BaseScore: s.GetBaseScore(), - TaxRate: s.DbGameFree.GetTaxRate(), + TaxRate: s.GetDBGameFree().GetTaxRate(), RoomMode: s.GetSceneMode(), PlayerPool: make(map[int]int), } @@ -1772,7 +1797,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { gainScore = losePlayerCoin } losePlayerScore = gainScore - if sceneEx.IsMatchScene() { //比赛场是积分,不应该增加账变 + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { //比赛场是积分,不应该增加账变 losePlayer.AddCoinNoLog(int64(-gainScore), 0) } else { losePlayer.AddCoin(int64(-gainScore), common.GainWay_CoinSceneLost, 0, "system", s.GetSceneName()) @@ -1787,7 +1812,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { // vip加成分 vipScore = int64(math.Ceil(float64(rankScore) * float64(losePlayer.VipExtra) / 100.0)) // 角色加成分 - _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&losePlayer.PlayerData, common.RoleAddRankScore) + _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(losePlayer.PlayerData, common.RoleAddRankScore) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) //周卡加成 if losePlayer.GetWeekCardPrivilege(2) { @@ -1914,7 +1939,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { astWinGainScore = lastWinPlayerCoin } lastWinPlayerScore = astWinGainScore - if sceneEx.IsMatchScene() { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { lastWinPlayer.AddCoinNoLog(int64(-astWinGainScore), 0) } else { lastWinPlayer.AddCoin(int64(-astWinGainScore), common.GainWay_CoinSceneLost, 0, "system", s.GetSceneName()) @@ -1929,7 +1954,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { // vip加成分 vipScore = int64(math.Ceil(float64(rankScore) * float64(lastWinPlayer.VipExtra) / 100.0)) // 角色加成分 - _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&lastWinPlayer.PlayerData, common.RoleAddRankScore) + _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(lastWinPlayer.PlayerData, common.RoleAddRankScore) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) //周卡加成 if lastWinPlayer.GetWeekCardPrivilege(2) { @@ -2019,7 +2044,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { var otherScore int64 // 额外总加分 oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType()) rankScore = loseRankScore - taxRate := sceneEx.DbGameFree.GetTaxRate() //万分比 + taxRate := sceneEx.GetDBGameFree().GetTaxRate() //万分比 gainScore := int64(float64(losePlayerScore) * float64(10000-taxRate) / 10000.0) //税后 gainTaxScore := losePlayerScore - gainScore // 税收 if playerNum == 3 { @@ -2027,7 +2052,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { gainTaxScore = losePlayerScore + lastWinPlayerScore - gainScore rankScore = loseRankScore + lastWinPlayerRankScore } - if sceneEx.IsMatchScene() { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { playerEx.AddCoinNoLog(int64(gainScore), 0) } else { playerEx.AddCoin(gainScore, common.GainWay_CoinSceneWin, 0, "system", s.GetSceneName()) @@ -2040,7 +2065,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { // vip加成分 vipScore = int64(math.Ceil(float64(rankScore) * float64(playerEx.VipExtra) / 100.0)) // 角色加成分 - _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) + _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(playerEx.PlayerData, common.RoleAddRankScore) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) //周卡加成 if playerEx.GetWeekCardPrivilege(2) { @@ -2129,10 +2154,10 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { var otherScore int64 // 额外总加分 oldRankScore := playerEx.GetRankScore(sceneEx.GetDBGameFree().GetRankType()) rankScore = lastWinPlayerRankScore - taxRate := sceneEx.DbGameFree.GetTaxRate() //万分比 + taxRate := sceneEx.GetDBGameFree().GetTaxRate() //万分比 gainScore := int64(float64(lastWinPlayerScore) * float64(10000-taxRate) / 10000.0) //税后 gainTaxScore := lastWinPlayerScore - gainScore - if sceneEx.IsMatchScene() { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { playerEx.AddCoinNoLog(int64(gainScore), 0) } else { playerEx.AddCoin(gainScore, common.GainWay_CoinSceneWin, 0, "system", s.GetSceneName()) @@ -2145,7 +2170,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { // vip加成分 vipScore = int64(math.Ceil(float64(rankScore) * float64(playerEx.VipExtra) / 100.0)) // 角色加成分 - _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) + _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(playerEx.PlayerData, common.RoleAddRankScore) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) //周卡加成 if playerEx.GetWeekCardPrivilege(2) { @@ -2274,7 +2299,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { gainScore = losePlayerCoin } winScore += gainScore - if sceneEx.IsMatchScene() { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { playerEx.AddCoinNoLog(int64(-gainScore), 0) } else { playerEx.AddCoin(int64(-gainScore), common.GainWay_CoinSceneLost, 0, "system", s.GetSceneName()) @@ -2294,7 +2319,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { // vip加成分 vipScore = int64(math.Ceil(float64(rankScore) * float64(playerEx.VipExtra) / 100.0)) // 角色加成分 - _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) + _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(playerEx.PlayerData, common.RoleAddRankScore) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) //周卡加成 if playerEx.GetWeekCardPrivilege(2) { @@ -2410,10 +2435,10 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { var otherScore int64 // 额外总加分 playerEx := sceneEx.players[winSnid] if playerEx != nil { - taxRate := sceneEx.DbGameFree.GetTaxRate() //万分比 + taxRate := sceneEx.GetDBGameFree().GetTaxRate() //万分比 gainScore := int64(float64(winScore) * float64(10000-taxRate) / 10000.0) //税后 gainTaxScore := winScore - gainScore - if sceneEx.IsMatchScene() { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { playerEx.AddCoinNoLog(int64(gainScore), 0) } else { playerEx.AddCoin(gainScore, common.GainWay_CoinSceneWin, 0, "system", s.GetSceneName()) @@ -2426,7 +2451,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { // vip加成分 vipScore = int64(math.Ceil(float64(rankScore) * float64(playerEx.VipExtra) / 100.0)) // 角色加成分 - _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(&playerEx.PlayerData, common.RoleAddRankScore) + _, roleAdd = srvdata.RolePetMgrSington.GetRoleAdd(playerEx.PlayerData, common.RoleAddRankScore) roleScore = int64(math.Ceil(float64(rankScore) * float64(roleAdd) / 100.0)) //周卡加成 if playerEx.GetWeekCardPrivilege(2) { @@ -2530,6 +2555,92 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { s.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenGameBilled), pack, 0) logger.Logger.Trace("TienLenPacketID_PACKET_SCTienLenGameBilled gameFreeId:", sceneEx.GetGameFreeId(), ";pack:", pack) + if sceneEx.IsCustom() && sceneEx.TotalOfGames > 0 { + for _, v := range tienlenType.PlayerData { + d := sceneEx.BilledList[v.UserId] + if d == nil { + arr := make([]*BilledInfo, 0) + d = &arr + sceneEx.BilledList[v.UserId] = d + } + *d = append(*d, &BilledInfo{ + Round: int32(sceneEx.NumOfGames), + ChangeScore: v.BillCoin, + Score: base.PlayerMgrSington.GetPlayerBySnId(v.UserId).GetCoin(), + }) + } + sceneEx.RoundEndTime = append(sceneEx.RoundEndTime, time.Now().Unix()) + sceneEx.RoundLogId = append(sceneEx.RoundLogId, sceneEx.recordId) + if sceneEx.NumOfGames >= int(sceneEx.TotalOfGames) { + packBilled := &tienlen.SCTienLenCycleBilled{} + for snid, billedList := range sceneEx.BilledList { + info := &tienlen.TienLenCycleBilledInfo{ + SnId: snid, + TotalScore: 1000, + Score: 1000, + } + for _, bill := range *billedList { + info.RoundScore = append(info.RoundScore, bill.ChangeScore) + info.TotalScore += bill.ChangeScore + } + packBilled.List = append(packBilled.List, info) + } + sort.Slice(packBilled.List, func(i, j int) bool { + var a, b int64 + for _, v := range packBilled.List[i].RoundScore { + a += v + } + a += packBilled.List[i].Score + for _, v := range packBilled.List[j].RoundScore { + b += v + } + b += packBilled.List[j].Score + return a > b + }) + if len(packBilled.List) > 0 { + for _, v := range sceneEx.Items { + packBilled.List[0].Award = append(packBilled.List[0].Award, &tienlen.ItemInfo{ + Id: v.Id, + Num: v.Num, + }) + } + // 发奖品 + if len(sceneEx.Items) > 0 { + p := base.PlayerMgrSington.GetPlayerBySnId(packBilled.List[0].SnId) + if p != nil { + var items []*model.Item + for _, v := range packBilled.List[0].Award { + itemData := srvdata.GameItemMgr.Get(p.Platform, v.GetId()) + if itemData != nil { + items = append(items, &model.Item{ + ItemId: v.GetId(), + ItemNum: v.GetNum(), + }) + } + } + p.AddItems(&model.AddItemParam{ + P: p.PlayerData, + Change: items, + GainWay: common.GainWayRoomGain, + Operator: "system", + Remark: "房卡场奖励", + GameId: int64(sceneEx.GameId), + GameFreeId: int64(sceneEx.GetGameFreeId()), + }) + sceneEx.PlayerAward[p.SnId] = &items + } + } + } + s.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenCycleBilled), packBilled, 0) + logger.Logger.Tracef("SCTienLenCycleBilled: %v", packBilled) + s.SyncSceneState(common.SceneStateEnd) + sceneEx.SaveCustomLog() + sceneEx.BilledList = make(map[int32]*[]*BilledInfo) + sceneEx.RoundEndTime = sceneEx.RoundEndTime[:0] + sceneEx.RoundLogId = sceneEx.RoundLogId[:0] + } + } + // 牌局记录 info, err := model.MarshalGameNoteByFIGHT(&tienlenType) if err == nil { @@ -2578,10 +2689,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { }) // 保存玩家游戏记录 - sceneEx.SaveGamePlayerListLog(o_player.UserId, - base.GetSaveGamePlayerListLogParam(o_player.Platform, o_player.Channel, o_player.Promoter, - o_player.PackageTag, sceneEx.recordId, o_player.InviterId, totalin, totalout, o_player.BillTaxCoin, - 0, 0, o_player.GainCoin+o_player.BombCoin, validBet, validFlow, o_player.IsFirst, o_player.IsLeave)) + param := base.GetSaveGamePlayerListLogParam(o_player.Platform, o_player.Channel, o_player.Promoter, + o_player.PackageTag, sceneEx.recordId, o_player.InviterId, totalin, totalout, o_player.BillTaxCoin, + 0, 0, o_player.GainCoin+o_player.BombCoin, validBet, validFlow, o_player.IsFirst, o_player.IsLeave) + param.CycleId = sceneEx.CycleID + sceneEx.SaveGamePlayerListLog(o_player.UserId, param) } } if isSave { @@ -2590,6 +2702,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { Trend20Lately: "", CtrlType: sceneEx.ctrlType, PlayerPool: tienlenType.PlayerPool, + CycleId: sceneEx.CycleID, }) } } @@ -2693,7 +2806,10 @@ func (this *SceneBilledStateTienLen) OnLeave(s *base.Scene) { s.TryDismissRob() } - if s.CheckNeedDestroy() || (s.IsMatchScene() && (!s.MatchFinals || (s.MatchFinals && s.NumOfGames >= 2))) { // 非决赛打一场 决赛打两场 + if s.CheckNeedDestroy() || (s.IsMatchScene() && (!s.GetMatch().GetIsFinals() || (s.GetMatch().GetIsFinals() && s.NumOfGames >= 2))) { // 非决赛打一场 决赛打两场 + sceneEx.SceneDestroy(true) + } + if s.TotalOfGames > 0 && s.NumOfGames >= int(s.TotalOfGames) { sceneEx.SceneDestroy(true) } s.RankMatchDestroy() @@ -2780,6 +2896,11 @@ func init() { base.RegisteScenePolicy(common.GameId_TienLenRank_toend, 0, ScenePolicyTienLenSingleton) base.RegisteScenePolicy(common.GameId_TienLenRank_yl, 0, ScenePolicyTienLenSingleton) base.RegisteScenePolicy(common.GameId_TienLenRank_yl_toend, 0, ScenePolicyTienLenSingleton) + // 房卡场 + base.RegisteScenePolicy(common.GameId_TienLenCustom, 0, ScenePolicyTienLenSingleton) + base.RegisteScenePolicy(common.GameId_TienLenCustom_toend, 0, ScenePolicyTienLenSingleton) + base.RegisteScenePolicy(common.GameId_TienLenCustom_yl, 0, ScenePolicyTienLenSingleton) + base.RegisteScenePolicy(common.GameId_TienLenCustom_yl_toend, 0, ScenePolicyTienLenSingleton) return nil }) } diff --git a/gamesrv/transact/trascate_gamesrv.go b/gamesrv/transact/trascate_gamesrv.go index 6aa90b8..1149976 100644 --- a/gamesrv/transact/trascate_gamesrv.go +++ b/gamesrv/transact/trascate_gamesrv.go @@ -1,153 +1,150 @@ package transact -// -//import ( -// "errors" -// "fmt" -// "mongo.games.com/game/common" -// "mongo.games.com/game/gamesrv/base" -// "mongo.games.com/game/model" -// "mongo.games.com/game/proto" -// webapi_proto "mongo.games.com/game/protocol/webapi" -// "mongo.games.com/goserver/core/basic" -// "mongo.games.com/goserver/core/logger" -// "mongo.games.com/goserver/core/netlib" -// "mongo.games.com/goserver/core/task" -// "mongo.games.com/goserver/core/transact" -// "sync" -//) -// -//const __REQIP__ = "__REQIP__" -// -//var ( -// WebAPIErrParam = errors.New("param err") -// WebAPIErrNoPlayer = errors.New("player no find") -//) -// -//func init() { -// transact.RegisteHandler(common.TransType_GameSrvWebApi, &WebAPITranscateHandler{}) -//} -// -//var WebAPIHandlerMgrSingleton = &WebAPIHandlerMgr{wshMap: make(map[string]WebAPIHandler)} -// -//type WebAPITranscateHandler struct { -//} -// -//func (this *WebAPITranscateHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { -// logger.Logger.Trace("WebAPITranscateHandler.OnExcute ") -// req := &common.M2GWebApiRequest{} -// err := netlib.UnmarshalPacketNoPackId(ud.([]byte), req) -// if err == nil { -// wsh := WebAPIHandlerMgrSingleton.GetWebAPIHandler(req.Path) -// if wsh == nil { -// logger.Logger.Error("WebAPITranscateHandler no registe WebAPIHandler ", req.Path) -// return transact.TransExeResult_Failed -// } -// tag, msg := wsh.Handler(tNode, req.Body) -// tNode.TransRep.RetFiels = msg -// switch tag { -// case common.ResponseTag_Ok: -// return transact.TransExeResult_Success -// case common.ResponseTag_TransactYield: -// return transact.TransExeResult_Yield -// } -// } -// logger.Logger.Error("WebAPITranscateHandler.OnExcute err:", err.Error()) -// return transact.TransExeResult_Failed -//} -// -//func (this *WebAPITranscateHandler) OnCommit(tNode *transact.TransNode) transact.TransExeResult { -// logger.Logger.Trace("WebAPITranscateHandler.OnCommit ") -// return transact.TransExeResult_Success -//} -// -//func (this *WebAPITranscateHandler) OnRollBack(tNode *transact.TransNode) transact.TransExeResult { -// logger.Logger.Trace("WebAPITranscateHandler.OnRollBack ") -// return transact.TransExeResult_Success -//} -// -//func (this *WebAPITranscateHandler) OnChildTransRep(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, -// ud interface{}) transact.TransExeResult { -// logger.Logger.Trace("WebAPITranscateHandler.OnChildTransRep ") -// return transact.TransExeResult_Success -//} -// -//type WebAPIHandler interface { -// Handler(*transact.TransNode, []byte) (int, proto.Message) -//} -// -//type WebAPIHandlerWrapper func(*transact.TransNode, []byte) (int, proto.Message) -// -//func (wshw WebAPIHandlerWrapper) Handler(tNode *transact.TransNode, params []byte) (int, proto.Message) { -// return wshw(tNode, params) -//} -// -//type WebAPIHandlerMgr struct { -// wshMap map[string]WebAPIHandler -// DataWaitList sync.Map -//} -// -//func (this *WebAPIHandlerMgr) RegisteWebAPIHandler(name string, wsh WebAPIHandler) { -// this.wshMap[name] = wsh -//} -// -//func (this *WebAPIHandlerMgr) GetWebAPIHandler(name string) WebAPIHandler { -// if wsh, exist := this.wshMap[name]; exist { -// return wsh -// } -// return nil -//} -// -//func init() { -// //单控 -// WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/game/SinglePlayerAdjust", WebAPIHandlerWrapper( -// func(tNode *transact.TransNode, params []byte) (int, proto.Message) { -// pack := &webapi_proto.SASinglePlayerAdjust{} -// msg := &webapi_proto.ASSinglePlayerAdjust{} -// err := proto.Unmarshal(params, msg) -// if err != nil { -// fmt.Printf("err:%v", err) -// pack.Tag = webapi_proto.TagCode_FAILED -// pack.Msg = "数据序列化失败" -// return common.ResponseTag_ParamError, pack -// } -// pack.Tag = webapi_proto.TagCode_SUCCESS -// switch msg.GetOpration() { -// case 1: -// psa := base.PlayerSingleAdjustMgr.AddNewSingleAdjust(msg.GetPlayerSingleAdjust()) -// if psa != nil { -// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// return model.AddNewSingleAdjust(psa) -// }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { -// if data != nil { -// pack.Tag = webapi_proto.TagCode_FAILED -// pack.Msg = "insert err" + data.(error).Error() -// } -// tNode.TransRep.RetFiels = pack -// tNode.Resume() -// }), "AddNewSingleAdjust").Start() -// return common.ResponseTag_TransactYield, pack -// } -// case 2: -// base.PlayerSingleAdjustMgr.EditSingleAdjust(msg.GetPlayerSingleAdjust()) -// case 3: -// psa := msg.PlayerSingleAdjust -// if psa != nil { -// base.PlayerSingleAdjustMgr.DeleteSingleAdjust(psa.Platform, psa.SnId, psa.GameFreeId) -// } -// case 4: -// ps := msg.PlayerSingleAdjust -// webp := base.PlayerSingleAdjustMgr.GetSingleAdjust(ps.Platform, ps.SnId, ps.GameFreeId) -// if webp == nil { -// pack.Tag = webapi_proto.TagCode_FAILED -// pack.Msg = fmt.Sprintf("webp == nil %v %v %v", ps.Platform, ps.SnId, ps.GameFreeId) -// } -// pack.PlayerSingleAdjust = webp -// default: -// pack.Tag = webapi_proto.TagCode_FAILED -// pack.Msg = "Opration param is error!" -// return common.ResponseTag_ParamError, pack -// } -// return common.ResponseTag_Ok, pack -// })) -//} +import ( + "errors" + "sync" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/transact" + + "mongo.games.com/game/common" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/gamesrv/tienlen" + "mongo.games.com/game/proto" + webapiproto "mongo.games.com/game/protocol/webapi" +) + +const __REQIP__ = "__REQIP__" + +var ( + WebAPIErrParam = errors.New("param err") + WebAPIErrNoPlayer = errors.New("player no find") +) + +func init() { + transact.RegisteHandler(common.TransType_GameSrvWebApi, &WebAPITranscateHandler{}) +} + +var WebAPIHandlerMgrSingleton = &WebAPIHandlerMgr{wshMap: make(map[string]WebAPIHandler)} + +type WebAPITranscateHandler struct { +} + +func (this *WebAPITranscateHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { + logger.Logger.Trace("WebAPITranscateHandler.OnExcute ") + req := &common.M2GWebApiRequest{} + err := netlib.UnmarshalPacketNoPackId(ud.([]byte), req) + if err == nil { + wsh := WebAPIHandlerMgrSingleton.GetWebAPIHandler(req.Path) + if wsh == nil { + logger.Logger.Error("WebAPITranscateHandler no registe WebAPIHandler ", req.Path) + return transact.TransExeResult_Failed + } + tag, msg := wsh.Handler(tNode, req.Body) + tNode.TransRep.RetFiels = msg + switch tag { + case common.ResponseTag_Ok: + return transact.TransExeResult_Success + case common.ResponseTag_TransactYield: + return transact.TransExeResult_Yield + } + } + logger.Logger.Error("WebAPITranscateHandler.OnExcute err:", err.Error()) + return transact.TransExeResult_Failed +} + +func (this *WebAPITranscateHandler) OnCommit(tNode *transact.TransNode) transact.TransExeResult { + logger.Logger.Trace("WebAPITranscateHandler.OnCommit ") + return transact.TransExeResult_Success +} + +func (this *WebAPITranscateHandler) OnRollBack(tNode *transact.TransNode) transact.TransExeResult { + logger.Logger.Trace("WebAPITranscateHandler.OnRollBack ") + return transact.TransExeResult_Success +} + +func (this *WebAPITranscateHandler) OnChildTransRep(tNode *transact.TransNode, hChild transact.TransNodeID, retCode int, + ud interface{}) transact.TransExeResult { + logger.Logger.Trace("WebAPITranscateHandler.OnChildTransRep ") + return transact.TransExeResult_Success +} + +type WebAPIHandler interface { + Handler(*transact.TransNode, []byte) (int, proto.Message) +} + +type WebAPIHandlerWrapper func(*transact.TransNode, []byte) (int, proto.Message) + +func (wshw WebAPIHandlerWrapper) Handler(tNode *transact.TransNode, params []byte) (int, proto.Message) { + return wshw(tNode, params) +} + +type WebAPIHandlerMgr struct { + wshMap map[string]WebAPIHandler + DataWaitList sync.Map +} + +func (this *WebAPIHandlerMgr) RegisteWebAPIHandler(name string, wsh WebAPIHandler) { + this.wshMap[name] = wsh +} + +func (this *WebAPIHandlerMgr) GetWebAPIHandler(name string) WebAPIHandler { + if wsh, exist := this.wshMap[name]; exist { + return wsh + } + return nil +} + +func init() { + // 对局详情 + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/game/room_info", WebAPIHandlerWrapper( + func(tNode *transact.TransNode, params []byte) (int, proto.Message) { + pack := &webapiproto.SARoomInfo{} + msg := &webapiproto.ASRoomInfo{} + err := proto.Unmarshal(params, msg) + if err != nil { + pack.Tag = webapiproto.TagCode_FAILED + pack.Msg = "数据序列化失败" + return common.ResponseTag_ParamError, pack + } + pack.Tag = webapiproto.TagCode_SUCCESS + + scene := base.SceneMgrSington.GetScene(int(msg.GetRoomId())) + if scene == nil || scene.ExtraData == nil { + pack.Tag = webapiproto.TagCode_NotFound + pack.Msg = "房间没找到" + return common.ResponseTag_NoFindRoom, pack + } + + switch d := scene.ExtraData.(type) { + case tienlen.TienLenSceneData: + for k := range d.BilledList { + pack.SnId = append(pack.SnId, k) + } + for k, v := range d.RoundLogId { + var score []int64 + for _, vv := range pack.SnId { + list := d.BilledList[vv] + if list == nil || len(*list) <= k { + score = append(score, 0) + continue + } + score = append(score, (*list)[k].ChangeScore) + } + item := &webapiproto.RoundInfo{ + Round: int32(k + 1), + Ts: d.RoundEndTime[k], + Score: score, + LogId: v, + } + pack.List = append(pack.List, item) + } + + default: + pack.Tag = webapiproto.TagCode_FAILED + pack.Msg = "未实现" + } + return common.ResponseTag_Ok, pack + })) +} diff --git a/gatesrv/broadcasthandler.go b/gatesrv/broadcasthandler.go index 1fb80a0..319bfec 100644 --- a/gatesrv/broadcasthandler.go +++ b/gatesrv/broadcasthandler.go @@ -1,56 +1,16 @@ package main import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/srvlib" "mongo.games.com/goserver/srvlib/protocol" ) -var ( - BroadcastMaker = &BroadcastPacketFactory{} -) - -type BroadcastPacketFactory struct { -} - -type BroadcastHandler struct { -} - func init() { - // 给所有玩家或某个类型的所有服务发消息 - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &BroadcastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), BroadcastMaker) + netlib.Register(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &protocol.SSPacketBroadcast{}, BroadcastHandler) } -func (this *BroadcastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketBroadcast{} - return pack -} - -func (this *BroadcastPacketFactory) CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetid int, data interface{}) (rawproto.Message, error) { - pack := &protocol.SSPacketBroadcast{ - SessParam: sp, - PacketId: proto.Int(packetid), - } - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Warn("BroadcastPacketFactory.CreateBroadcastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *BroadcastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { +func BroadcastHandler(s *netlib.Session, packetid int, data interface{}) error { if bp, ok := data.(*protocol.SSPacketBroadcast); ok { pd := bp.GetData() sp := bp.GetSessParam() diff --git a/gatesrv/multicasthandler.go b/gatesrv/multicasthandler.go index ce0f29e..cfcde44 100644 --- a/gatesrv/multicasthandler.go +++ b/gatesrv/multicasthandler.go @@ -1,61 +1,21 @@ package main import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/srvlib" "mongo.games.com/goserver/srvlib/protocol" ) -var ( - MulticastMaker = &MulticastPacketFactory{} -) - -type MulticastPacketFactory struct { -} - -type MulticastHandler struct { -} - func init() { - // 给某些玩家和某些服务发消息 - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), &MulticastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), MulticastMaker) + netlib.Register(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), &protocol.SSPacketMulticast{}, MulticastHandler) } -func (this *MulticastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketMulticast{} - return pack -} - -func (this *MulticastPacketFactory) CreateMulticastPacket(packetid int, data interface{}, sis ...*protocol.MCSessionUnion) (rawproto.Message, error) { - pack := &protocol.SSPacketMulticast{ - Sessions: sis, - PacketId: proto.Int(packetid), - } - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Info("MulticastPacketFactory.CreateMulticastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *MulticastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { +func MulticastHandler(s *netlib.Session, packetid int, data interface{}) error { if mp, ok := data.(*protocol.SSPacketMulticast); ok { pd := mp.GetData() sis := mp.GetSessions() for _, si := range sis { - ns := this.getSession(si) + ns := getSession(si) if ns != nil { ns.Send(int(mp.GetPacketId()), pd /*, s.GetSessionConfig().IsInnerLink*/) } @@ -64,7 +24,7 @@ func (this *MulticastHandler) Process(s *netlib.Session, packetid int, data inte return nil } -func (this *MulticastHandler) getSession(su *protocol.MCSessionUnion) *netlib.Session { +func getSession(su *protocol.MCSessionUnion) *netlib.Session { cs := su.GetMccs() if cs != nil { return srvlib.ClientSessionMgrSington.GetSession(cs.GetSId()) diff --git a/mgrsrv/api/broadcasthandler.go b/mgrsrv/api/broadcasthandler.go index a42c07c..803adee 100644 --- a/mgrsrv/api/broadcasthandler.go +++ b/mgrsrv/api/broadcasthandler.go @@ -1,61 +1,9 @@ package api import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/srvlib" - "mongo.games.com/goserver/srvlib/protocol" + "mongo.games.com/game/common" ) -var ( - BroadcastMaker = &BroadcastPacketFactory{} -) - -type BroadcastPacketFactory struct { -} - -type BroadcastHandler struct { -} - func init() { - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &BroadcastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), BroadcastMaker) -} - -func (this *BroadcastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketBroadcast{} - return pack -} - -func (this *BroadcastPacketFactory) CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetid int, data interface{}) (rawproto.Message, error) { - pack := &protocol.SSPacketBroadcast{ - SessParam: sp, - PacketId: proto.Int(packetid), - } - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Warn("BroadcastPacketFactory.CreateBroadcastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *BroadcastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { - if bp, ok := data.(*protocol.SSPacketBroadcast); ok { - pd := bp.GetData() - sp := bp.GetSessParam() - if bcss := sp.GetBcss(); bcss != nil { - srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(bcss.GetSArea()), int(bcss.GetSType())) - } - } - return nil + common.RegisterBoardCastHandler() } diff --git a/mgrsrv/api/webapi_gamesrv.go b/mgrsrv/api/webapi_gamesrv.go index 7bc77f0..e7eea62 100644 --- a/mgrsrv/api/webapi_gamesrv.go +++ b/mgrsrv/api/webapi_gamesrv.go @@ -9,6 +9,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/admin" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/core/transact" @@ -176,14 +177,6 @@ func init() { return transact.TransExeResult(retCode) }), }) - // //参数设置 - // admin.MyAdminApp.Route("/api/Param/CommonTax", GameSrvWebAPI) - // //捕鱼金币池查询 - // admin.MyAdminApp.Route("/api/CoinPool/FishingPool", GameSrvWebAPI) - // //通用金币池查询 - // admin.MyAdminApp.Route("/api/CoinPool/GamePool", GameSrvWebAPI) - // //捕鱼渔场保留金币 - // admin.MyAdminApp.Route("/api/CoinPool/GameFishsAllCoin", GameSrvWebAPI) - // //单控数据 - //admin.MyAdminApp.Route("/api/game/SinglePlayerAdjust", GameSrvWebAPI) + // 对局详情 + admin.MyAdminApp.Route("/api/game/room_info", GameSrvWebAPI) } diff --git a/mgrsrv/api/webapi_srctrl.go b/mgrsrv/api/webapi_srctrl.go index e2b06a6..9d9b932 100644 --- a/mgrsrv/api/webapi_srctrl.go +++ b/mgrsrv/api/webapi_srctrl.go @@ -229,7 +229,7 @@ func SrvCtrlNotice(rw http.ResponseWriter, data []byte) { sc := &protocol.BCSessionUnion{ Bccs: &protocol.BCClientSession{}, } - broadcast, err := BroadcastMaker.CreateBroadcastPacket(sc, int(msg_proto.MSGPacketID_PACKET_SC_NOTICE), noticePacket) + broadcast, err := common.CreateBroadcastPacket(sc, int(msg_proto.MSGPacketID_PACKET_SC_NOTICE), noticePacket) if err != nil || broadcast == nil { pack.Tag = webapi.TagCode_FAILED pack.Msg = "send notice failed(inner error)" diff --git a/mgrsrv/api/webapi_worldsrv.go b/mgrsrv/api/webapi_worldsrv.go index 121270b..1745f1e 100644 --- a/mgrsrv/api/webapi_worldsrv.go +++ b/mgrsrv/api/webapi_worldsrv.go @@ -243,7 +243,7 @@ func init() { admin.MyAdminApp.Route("/api/player/update_tel", WorldSrvApi) // 删除账号 admin.MyAdminApp.Route("/api/player/delete", WorldSrvApi) - //添加道具 + // 添加道具 admin.MyAdminApp.Route("/api/player/AddItem", WorldSrvApi) } diff --git a/model/baginfo.go b/model/baginfo.go index fc2e14e..86a325c 100644 --- a/model/baginfo.go +++ b/model/baginfo.go @@ -84,3 +84,16 @@ func SaveToDelBackupBagItem(args *BagInfo) error { } return nil } + +type AddItemParam struct { + P *PlayerData + Change []*Item // 道具变化数量 + Cost []*Item // 获得道具时消耗的道具数量 + Add int64 // 加成数量 + GainWay int32 // 记录类型 + Operator, Remark string // 操作人,备注 + GameId, GameFreeId int64 // 游戏id,场次id + NoLog bool // 是否不记录日志 + LogId string // 撤销的id,道具兑换失败 + RoomConfigId int32 // 房间配置id +} diff --git a/model/config.go b/model/config.go index 661d4f6..e569e0c 100644 --- a/model/config.go +++ b/model/config.go @@ -1,10 +1,14 @@ package model import ( + "mongo.games.com/game/protocol/gamehall" + "strconv" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/common" "mongo.games.com/game/protocol/shop" "mongo.games.com/game/protocol/webapi" - "strconv" ) /* @@ -30,7 +34,7 @@ const ( type ShopInfo struct { Id int32 // 商品ID - Page int32 // 页面 1,金币页面 2,钻石页面 3,道具页面 + Page int32 // 页面 1,金币页面 2,钻石页面 3,道具页面 4,房卡 Order int32 // 排序 页面内商品的位置排序 Location []int32 // 显示位置 第1位,竖版大厅 第2位,Tienlen1级选场 第3位,捕鱼1级选场 Picture string // 图片id @@ -40,7 +44,7 @@ type ShopInfo struct { AdTime int32 // 观看几次广告 RepeatTimes int32 // 领取次数 CoolingTime []int32 // 观看冷却时间 - Type int32 // 获得类型 1,金币 2,钻石 3,道具类型 + Type int32 // 获得类型 1,金币 2,钻石 3,道具类型 4,房卡 Amount int64 // 获得数量 AddArea []int32 // 加送百分比(比如加送10%,就配置110) ItemId int32 // 获得道具ID @@ -137,6 +141,14 @@ type AllConfig struct { *webapi.GuideConfig //娃娃机配置 *webapi.MachineConfig + MatchAudience map[int32]*webapi.MatchAudience // 比赛观众列表 key: 玩家id + // 小精灵配置 + *webapi.SpiritConfig + // 房卡场房间类型 + RoomType map[int32]*webapi.RoomType // key: 房间类型id + // 房卡场房间配置 + RoomConfig map[int32]*webapi.RoomConfig // key: 房间配置id + RoomTypeMap map[int32][]*webapi.RoomConfig // key: 房间类型id:房间配置 } type GlobalConfig struct { @@ -165,6 +177,10 @@ func (cm *ConfigMgr) GetConfig(platform string) *AllConfig { EntrySwitch: make(map[int32]*webapi.EntrySwitch), ShopInfos: make(map[int32]*ShopInfo), ChannelSwitch: make(map[int32]*webapi.ChannelSwitchConfig), + MatchAudience: make(map[int32]*webapi.MatchAudience), + RoomType: make(map[int32]*webapi.RoomType), + RoomConfig: make(map[int32]*webapi.RoomConfig), + RoomTypeMap: make(map[int32][]*webapi.RoomConfig), } cm.platform[platform] = c } @@ -358,3 +374,106 @@ func (cm *ConfigMgr) GetSkinSkillMaxLevel(plt string, skinId int32) int32 { } return level } + +func (cm *ConfigMgr) AddMatchAudience(d *webapi.MatchAudience) { + cfg := cm.GetConfig(d.Platform) + cfg.MatchAudience[d.GetSnId()] = d +} + +func (cm *ConfigMgr) DelMatchAudience(plt string, snid int32) { + logger.Logger.Tracef("del match audience plt:%s, snid:%d", plt, snid) + delete(cm.GetConfig(plt).MatchAudience, snid) +} + +// IsMatchAudience 是不是比赛场观众 +func (cm *ConfigMgr) IsMatchAudience(plt string, snId int32) bool { + _, ok := cm.GetConfig(plt).MatchAudience[snId] + return ok +} + +func (cm *ConfigMgr) UpdateRoomType(data *webapi.RoomType) { + cm.GetConfig(data.GetPlatform()).RoomType[data.GetId()] = data +} + +func (cm *ConfigMgr) DelRoomType(plt string, id int32) { + delete(cm.GetConfig(plt).RoomType, id) +} + +func (cm *ConfigMgr) UpdateRoomConfig(data *webapi.RoomConfig) { + cm.GetConfig(data.GetPlatform()).RoomConfig[data.GetId()] = data + d := cm.GetConfig(data.GetPlatform()).RoomTypeMap[data.GetRoomType()] + if d == nil { + d = make([]*webapi.RoomConfig, 0) + } + d = append(d, data) + cm.GetConfig(data.GetPlatform()).RoomTypeMap[data.GetRoomType()] = d +} + +func (cm *ConfigMgr) DelRoomConfig(plt string, id int32) { + d := cm.GetConfig(plt).RoomConfig[id] + if d != nil { + b := cm.GetConfig(plt).RoomTypeMap[d.GetRoomType()] + if b != nil { + for i, v := range b { + if v.GetId() == id { + b = append(b[:i], b[i+1:]...) + cm.GetConfig(plt).RoomTypeMap[d.GetRoomType()] = b + } + } + } + } + delete(cm.GetConfig(plt).RoomConfig, id) +} + +func (cm *ConfigMgr) GetRoomConfig(plt string) *gamehall.SCRoomConfig { + pack := &gamehall.SCRoomConfig{} + for _, v := range cm.GetConfig(plt).RoomType { + if v.GetOn() != common.On { + continue + } + var list []*gamehall.RoomConfigInfo + for _, vv := range cm.GetConfig(plt).RoomTypeMap[v.GetId()] { + if vv.GetOn() != common.On { + continue + } + var cost, reward []*gamehall.ItemInfo + for _, item := range vv.GetCost() { + cost = append(cost, &gamehall.ItemInfo{ + Id: item.GetItemId(), + Num: int32(item.GetItemNum()), + }) + } + for _, item := range vv.GetReward() { + reward = append(reward, &gamehall.ItemInfo{ + Id: item.GetItemId(), + Num: int32(item.GetItemNum()), + }) + } + list = append(list, &gamehall.RoomConfigInfo{ + Id: vv.GetId(), + Name: vv.GetName(), + RoomType: vv.GetRoomType(), + On: vv.GetOn(), + SortId: vv.GetSortId(), + Cost: cost, + Reward: reward, + OnChannelName: vv.GetOnChannelName(), + GameFreeId: vv.GetGameFreeId(), + Round: vv.GetRound(), + PlayerNum: vv.GetPlayerNum(), + NeedPassword: vv.GetNeedPassword(), + CostType: vv.GetCostType(), + Voice: vv.GetVoice(), + ImageURI: vv.GetImageURI(), + }) + } + pack.List = append(pack.List, &gamehall.RoomTypeInfo{ + Id: v.GetId(), + Name: v.GetName(), + On: v.GetOn(), + SortId: v.GetSortId(), + List: list, + }) + } + return pack +} diff --git a/model/customlog.go b/model/customlog.go new file mode 100644 index 0000000..67b82ec --- /dev/null +++ b/model/customlog.go @@ -0,0 +1,35 @@ +package model + +var ( + DbCustomLogDBName = "log" + DbCustomLogCollName = "log_custom" +) + +type PlayerInfo struct { + SnId int32 // 玩家id + Awards []*Item // 奖品 +} + +type RoundInfo struct { + Round int32 // 第几局 + Ts int64 // 结算时间 + Score []int64 // 分数 + LogId string // 牌局记录id +} + +type CustomLog struct { + Platform string `bson:"-"` + CycleId string // 本轮id,多局游戏属于同一轮 + RoomConfigId int32 // 房间配置id + GameFreeId int32 // 场次id + TotalRound int32 // 总局数 + PlayerNum int32 // 最大人数 + Password string // 密码 + CostType int32 // 付费方式 1房主 2AA + Voice int32 // 是否开启语音 1开启 + RoomId int32 // 房间id + SnId []PlayerInfo // 所有玩家 + List []RoundInfo // 对局记录 + StartTs, EndTs int64 // 开始,结束时间 + State int32 // 0正常结束 1后台中途解散 +} diff --git a/model/gamedetailedlog.go b/model/gamedetailedlog.go index 2796720..d822146 100644 --- a/model/gamedetailedlog.go +++ b/model/gamedetailedlog.go @@ -35,15 +35,15 @@ type GameDetailedLogType struct { type GameDetailedLog struct { Id bson.ObjectId `bson:"_id"` //记录ID - LogId string //记录ID + LogId string //记录ID,每局游戏唯一 GameId int32 //游戏id ClubId int32 //俱乐部Id ClubRoom string //俱乐部包间 Platform string //平台id Channel string //渠道 Promoter string //推广员 - MatchId int64 //比赛ID - SceneId int32 //场景ID + MatchId int64 //比赛ID,应该用字符串的 + SceneId int32 //房间id,会重复 GameMode int32 //游戏类型 GameFreeid int32 //游戏类型房间号 PlayerCount int32 //玩家数量 @@ -57,6 +57,7 @@ type GameDetailedLog struct { Ts int64 //时间戳 CtrlType int // 1控赢 2控输 0不控 PlayerPool map[int]int // 个人水池分 + CycleId string // 本轮id,打一轮有多局 } func NewGameDetailedLog() *GameDetailedLog { @@ -65,7 +66,8 @@ func NewGameDetailedLog() *GameDetailedLog { } func NewGameDetailedLogEx(logid string, gameid, sceneid, gamemode, gamefreeid, playercount, gametiming, gamebasebet int32, - gamedetailednote string, platform string, clubId int32, clubRoom string, cpCtx CoinPoolCtx, ver int32, trend20Lately string, ctrlType int, playerPool map[int]int) *GameDetailedLog { + gamedetailednote string, platform string, clubId int32, clubRoom string, cpCtx CoinPoolCtx, ver int32, + trend20Lately string, ctrlType int, playerPool map[int]int, cycleId string) *GameDetailedLog { cl := NewGameDetailedLog() cl.LogId = logid cl.GameId = gameid @@ -87,6 +89,7 @@ func NewGameDetailedLogEx(logid string, gameid, sceneid, gamemode, gamefreeid, p cl.Ts = time.Now().Unix() cl.CtrlType = ctrlType cl.PlayerPool = playerPool + cl.CycleId = cycleId return cl } diff --git a/model/gameplayerlistlog.go b/model/gameplayerlistlog.go index baa5201..4441b2d 100644 --- a/model/gameplayerlistlog.go +++ b/model/gameplayerlistlog.go @@ -52,9 +52,10 @@ type GamePlayerListLog struct { MatchId int64 MatchType int64 //0.普通场 1.锦标赛 2.冠军赛 3.vip专属 Ts int32 - IsFree bool //拉霸专用 是否免费 - WinSmallGame int64 //拉霸专用 小游戏奖励 - WinTotal int64 //拉霸专用 输赢 + IsFree bool //拉霸专用 是否免费 + WinSmallGame int64 //拉霸专用 小游戏奖励 + WinTotal int64 //拉霸专用 输赢 + CycleId string // 本轮id,打一轮有多局 } func NewGamePlayerListLog() *GamePlayerListLog { @@ -64,7 +65,7 @@ func NewGamePlayerListLog() *GamePlayerListLog { func NewGamePlayerListLogEx(snid int32, gamedetailedlogid string, platform, channel, promoter, packageTag string, gameid, baseScore, sceneid, gamemode, gamefreeid int32, totalin, totalout int64, clubId int32, clubRoom string, taxCoin, pumpCoin int64, roomType int32, betAmount, winAmountNoAnyTax int64, key, name string, gameClass int32, isFirst bool, matchid, matchType int64, - isFree bool, winSmallGame, winTotal int64) *GamePlayerListLog { + isFree bool, winSmallGame, winTotal int64, cycleId string) *GamePlayerListLog { cl := NewGamePlayerListLog() cl.SnId = snid cl.GameDetailedLogId = gamedetailedlogid @@ -98,6 +99,7 @@ func NewGamePlayerListLogEx(snid int32, gamedetailedlogid string, platform, chan cl.Time = tNow cl.MatchId = matchid cl.MatchType = matchType + cl.CycleId = cycleId return cl } diff --git a/model/itemdatalog.go b/model/itemdatalog.go index 62d58b6..b4a96b4 100644 --- a/model/itemdatalog.go +++ b/model/itemdatalog.go @@ -14,20 +14,21 @@ var ( ) type ItemLog struct { - LogId bson.ObjectId `bson:"_id"` - Platform string //平台 - SnId int32 //玩家id - LogType int32 //记录类型 0.获取 1.消耗 - ItemId int32 //道具id - ItemName string //道具名称 - Count int64 //个数 - CreateTs int64 //记录时间 - Remark string //备注 - TypeId int32 // 变化类型 - GameId int32 // 游戏id,游戏中获得时有值 - GameFreeId int32 // 场次id,游戏中获得时有值 - Cost []*ItemInfo // 消耗的道具 - Id string // 撤销的id,兑换失败 + LogId bson.ObjectId `bson:"_id"` + Platform string //平台 + SnId int32 //玩家id + LogType int32 //记录类型 0.获取 1.消耗 + ItemId int32 //道具id + ItemName string //道具名称 + Count int64 //个数 + CreateTs int64 //记录时间 + Remark string //备注 + TypeId int32 // 变化类型 + GameId int32 // 游戏id,游戏中获得时有值 + GameFreeId int32 // 场次id,游戏中获得时有值 + Cost []*Item // 消耗的道具 + Id string // 撤销的id,兑换失败 + RoomConfigId int32 // 房间配置id } func NewItemLog() *ItemLog { @@ -36,18 +37,19 @@ func NewItemLog() *ItemLog { } type ItemParam struct { - Platform string // 平台 - SnId int32 // 玩家id - LogType int32 // 记录类型 0.获取 1.消耗 - ItemId int32 // 道具id - ItemName string // 道具名称 - Count int64 // 个数 - Remark string // 备注 - TypeId int32 // 变化类型 - GameId int64 // 游戏id,游戏中获得时有值 - GameFreeId int64 // 场次id,游戏中获得时有值 - Cost []*ItemInfo // 消耗的道具 - LogId string // 撤销的id,兑换失败 + Platform string // 平台 + SnId int32 // 玩家id + LogType int32 // 记录类型 0.获取 1.消耗 + ItemId int32 // 道具id + ItemName string // 道具名称 + Count int64 // 个数 + Remark string // 备注 + TypeId int32 // 变化类型 + GameId int64 // 游戏id,游戏中获得时有值 + GameFreeId int64 // 场次id,游戏中获得时有值 + Cost []*Item // 消耗的道具 + LogId string // 撤销的id,兑换失败 + RoomConfigId int32 // 房间配置id } func NewItemLogEx(param ItemParam) *ItemLog { @@ -65,6 +67,7 @@ func NewItemLogEx(param ItemParam) *ItemLog { itemLog.GameFreeId = int32(param.GameFreeId) itemLog.Cost = param.Cost itemLog.Id = param.LogId + itemLog.RoomConfigId = param.RoomConfigId return itemLog } diff --git a/model/jyb.go b/model/jyb.go index c365ef4..78b60f0 100644 --- a/model/jyb.go +++ b/model/jyb.go @@ -53,7 +53,7 @@ type JybInfo struct { JybId bson.ObjectId `bson:"_id"` // 礼包ID Platform string //平台 Name string // 礼包名称 - CodeType int32 // 礼包类型 1 通用 2 特殊 + CodeType int32 // 礼包类型 1 通用 2专属(自动生成兑换码,每个玩家领一个) 3活动(自动生产兑换码,每个兑换码领一个) StartTime int64 // 开始时间 Unix EndTime int64 // 结束时间 Content string // 礼包内容 diff --git a/model/matchawardlog.go b/model/matchawardlog.go index 07dcb94..448e106 100644 --- a/model/matchawardlog.go +++ b/model/matchawardlog.go @@ -4,30 +4,29 @@ import ( "time" ) -// 比赛详情 -type MatchAwardLog struct { - AwardNum map[string]map[int32]int32 // 奖励数量 - Platform string -} - var ( MatchAwardLogDBName = "log" MatchAwardLogCollName = "log_matchawardlog" ) -func NewMatchAwardLog() *MatchAwardLog { - return &MatchAwardLog{} +type MatchAward struct { + Platform string `bson:"-"` + Award map[int32]int32 } -func InsertOrUpdateMatchAwardLog(logs ...*MatchAwardLog) (err error) { +func UpsertMatchAward(data *MatchAward) error { if rpcCli == nil { return ErrRPClientNoConn } var ret bool - return rpcCli.CallWithTimeout("MatchAwardLogSvc.InsertOrUpdateMatchAwardLog", logs, &ret, time.Second*30) + return rpcCli.CallWithTimeout("MatchAwardSvc.UpsertMatchAward", data, &ret, time.Second*30) } -func GetMatchAwardLog(platform string) (ret MatchAwardLog, err error) { - err = rpcCli.CallWithTimeout("MatchAwardLogSvc.GetMatchAward", platform, &ret, time.Second*30) - return ret, err +func GetMatchAward(platform string) (ret *MatchAward, err error) { + if rpcCli == nil { + return nil, ErrRPClientNoConn + } + ret = new(MatchAward) + err = rpcCli.CallWithTimeout("MatchAwardSvc.GetMatchAward", platform, ret, time.Second*30) + return } diff --git a/model/player.go b/model/player.go index 6f867ea..ca719c8 100644 --- a/model/player.go +++ b/model/player.go @@ -344,6 +344,13 @@ type MatchFreeSignupRec struct { UseTimes int32 //累计使用免费次数 } +// WGPlayerInfo 游戏服玩家信息 +// 大厅玩家信息发送给游戏服 +type WGPlayerInfo struct { + *PlayerData + GameData map[int32]*PlayerGameData // 游戏数据,只允许存储玩家对应某个游戏需要持久化的数据 +} + type PlayerData struct { Id bson.ObjectId `bson:"_id"` AccountId string //账号id diff --git a/model/playergamedata.go b/model/playergamedata.go new file mode 100644 index 0000000..0fd4a07 --- /dev/null +++ b/model/playergamedata.go @@ -0,0 +1,56 @@ +package model + +import ( + "time" + + "mongo.games.com/goserver/core/logger" +) + +type PlayerGameData struct { + Platform string `bson:"-"` + SnId int32 + Id int32 // 游戏id或场次id + Data interface{} // 数据 +} + +type PlayerGameSaveReq struct { + Platform string + Data []*PlayerGameData +} + +func SavePlayerGameData(platform string, data []*PlayerGameData) error { + if rpcCli == nil { + logger.Logger.Error("model.SavePlayerGameData rpcCli == nil") + return nil + } + b := false + err := rpcCli.CallWithTimeout("PlayerGameDataSvc.Save", &PlayerGameSaveReq{Platform: platform, Data: data}, &b, time.Second*30) + if err != nil { + logger.Logger.Error("model.SavePlayerGameData err:%v", err) + return err + } + return nil +} + +type PlayerGameDataFindReq struct { + Platform string + SnId int32 +} + +type PlayerGameDataFindRes struct { + Data []*PlayerGameData +} + +func GetPlayerGameData(platform string, snid int32) ([]*PlayerGameData, error) { + if rpcCli == nil { + logger.Logger.Error("model.GetPlayerGameData rpcCli == nil") + return nil, nil + } + res := &PlayerGameDataFindRes{} + err := rpcCli.CallWithTimeout("PlayerGameDataSvc.Find", &PlayerGameDataFindReq{Platform: platform, SnId: snid}, res, time.Second*30) + if err != nil { + logger.Logger.Error("model.GetPlayerGameData err:%v", err) + return nil, err + } + return res.Data, nil +} diff --git a/mq/keyconf.go b/mq/keyconf.go index 833871a..87943a5 100644 --- a/mq/keyconf.go +++ b/mq/keyconf.go @@ -23,4 +23,5 @@ const ( const ( DBVipGiftLog = "db_vipgift" + DBCustomLog = "db_customlog" // 房卡场对局记录 ) diff --git a/protocol/doc.md b/protocol/doc.md index 2f86c0b..6d8f4f4 100644 --- a/protocol/doc.md +++ b/protocol/doc.md @@ -66,7 +66,7 @@ - 2720~2739 #### tournament(锦标赛) -- 2740~2759 +- 2740~2779 #### RankMatch 排位赛 - 2780~2800 diff --git a/protocol/gamehall/coinscene.proto b/protocol/gamehall/coinscene.proto index 338a425..c0e01b5 100644 --- a/protocol/gamehall/coinscene.proto +++ b/protocol/gamehall/coinscene.proto @@ -30,14 +30,14 @@ enum OpResultCode { } //自由场协议编号 2320-2339 enum CoinSceneGamePacketID { - PACKET_CoinSceneGame_ZERO = 0; // 弃用消息号 + PACKET_CoinSceneGame_ZERO = 0; // 弃用消息号 PACKET_CS_COINSCENE_GETPLAYERNUM = 2320; PACKET_SC_COINSCENE_GETPLAYERNUM = 2321; PACKET_CS_COINSCENE_OP = 2322; PACKET_SC_COINSCENE_OP = 2323; PACKET_CS_COINSCENE_LISTROOM = 2324; PACKET_SC_COINSCENE_LISTROOM = 2325; - PACKET_SC_COINSCENE_QUEUESTATE = 2326; + PACKET_SC_COINSCENE_QUEUESTATE = 2326; } //PACKET_CS_COINSCENE_GETPLAYERNUM diff --git a/protocol/gamehall/convert.sh b/protocol/gamehall/convert.sh deleted file mode 100644 index d4b0b8b..0000000 --- a/protocol/gamehall/convert.sh +++ /dev/null @@ -1,5 +0,0 @@ -cd $CCC_CLIENT_DIR/protocol/gamehall -npx pbjs --dependency protobufjs/minimal.js --target static-module --wrap commonjs --out gamehall.js ./*.proto -npx pbts --main --out ./gamehall.d.ts ./gamehall.js - -cp ./gamehall.d.ts ./gamehall.js $CCC_CLIENT_DIR/vietnam/assets/ScriptCore/protocol \ No newline at end of file diff --git a/protocol/gamehall/copytoccc.sh b/protocol/gamehall/copytoccc.sh deleted file mode 100644 index 45b87fe..0000000 --- a/protocol/gamehall/copytoccc.sh +++ /dev/null @@ -1,4 +0,0 @@ -# 将chesstitians目录拷贝到client工程目录下的protocol文件夹 -echo WIN88_DIR=$WIN88_DIR -echo CCC_CLIENT_DIR=$CCC_CLIENT_DIR -cp -R $WIN88_DIR/protocol/gamehall $CCC_CLIENT_DIR/protocol \ No newline at end of file diff --git a/protocol/gamehall/copytowin88.sh b/protocol/gamehall/copytowin88.sh deleted file mode 100644 index 353fb1f..0000000 --- a/protocol/gamehall/copytowin88.sh +++ /dev/null @@ -1,4 +0,0 @@ -# 将chesstitians目录拷贝到client工程目录下的protocol文件夹 -echo WIN88_DIR=$WIN88_DIR -echo CCC_CLIENT_DIR=$CCC_CLIENT_DIR -cp -R $CCC_CLIENT_DIR/protocol/gamehall $WIN88_DIR/protocol \ No newline at end of file diff --git a/protocol/gamehall/game.pb.go b/protocol/gamehall/game.pb.go index fb0a199..2bfe73e 100644 --- a/protocol/gamehall/game.pb.go +++ b/protocol/gamehall/game.pb.go @@ -50,6 +50,9 @@ const ( OpResultCode_Game_OPRC_AllocRoomIdFailed_Game OpResultCode_Game = 1097 //房间id获取失败 OpResultCode_Game_OPRC_PrivateRoomCountLimit_Game OpResultCode_Game = 1098 //私人房间上限 OpResultCode_Game_OPRC_RoomNotExit OpResultCode_Game = 1099 // 已经不在房间了 + OpResultCode_Game_OPRC_MatchAudience OpResultCode_Game = 1100 // 不在比赛观战白名单 + OpResultCode_Game_OPRC_PasswordError OpResultCode_Game = 1101 //密码错误 + OpResultCode_Game_OPRC_CostNotEnough OpResultCode_Game = 1102 //房卡不足 OpResultCode_Game_OPRC_LowerRice_ScenceMax_Game OpResultCode_Game = 1075 //超过最大下米数量 OpResultCode_Game_OPRC_LowerRice_PlayerMax_Game OpResultCode_Game = 1076 //超过单个用户最大下米数 OpResultCode_Game_OPRC_LowerRice_PlayerDownMax_Game OpResultCode_Game = 1077 @@ -95,6 +98,9 @@ var ( 1097: "OPRC_AllocRoomIdFailed_Game", 1098: "OPRC_PrivateRoomCountLimit_Game", 1099: "OPRC_RoomNotExit", + 1100: "OPRC_MatchAudience", + 1101: "OPRC_PasswordError", + 1102: "OPRC_CostNotEnough", 1075: "OPRC_LowerRice_ScenceMax_Game", 1076: "OPRC_LowerRice_PlayerMax_Game", 1077: "OPRC_LowerRice_PlayerDownMax_Game", @@ -136,6 +142,9 @@ var ( "OPRC_AllocRoomIdFailed_Game": 1097, "OPRC_PrivateRoomCountLimit_Game": 1098, "OPRC_RoomNotExit": 1099, + "OPRC_MatchAudience": 1100, + "OPRC_PasswordError": 1101, + "OPRC_CostNotEnough": 1102, "OPRC_LowerRice_ScenceMax_Game": 1075, "OPRC_LowerRice_PlayerMax_Game": 1076, "OPRC_LowerRice_PlayerDownMax_Game": 1077, @@ -179,207 +188,118 @@ func (OpResultCode_Game) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{0} } -//消息id 2200-2319 type GameHallPacketID int32 const ( - GameHallPacketID_PACKET_GameHall_ZERO GameHallPacketID = 0 // 弃用消息号 - GameHallPacketID_PACKET_CS_JOINGAME GameHallPacketID = 2200 - GameHallPacketID_PACKET_SC_JOINGAME GameHallPacketID = 2201 - GameHallPacketID_PACKET_CS_CREATEROOM GameHallPacketID = 2202 - GameHallPacketID_PACKET_SC_CREATEROOM GameHallPacketID = 2203 - GameHallPacketID_PACKET_CS_ENTERROOM GameHallPacketID = 2204 - GameHallPacketID_PACKET_SC_ENTERROOM GameHallPacketID = 2205 - GameHallPacketID_PACKET_CS_RETURNROOM GameHallPacketID = 2206 - GameHallPacketID_PACKET_SC_RETURNROOM GameHallPacketID = 2207 - GameHallPacketID_PACKET_CS_AUDIENCE_ENTERROOM GameHallPacketID = 2208 - GameHallPacketID_PACKET_CS_ENTERGAME GameHallPacketID = 2209 - GameHallPacketID_PACKET_SC_ENTERGAME GameHallPacketID = 2210 - GameHallPacketID_PACKET_CS_QUITGAME GameHallPacketID = 2211 - GameHallPacketID_PACKET_SC_QUITGAME GameHallPacketID = 2212 - GameHallPacketID_PACKET_SC_CARDGAINWAY GameHallPacketID = 2213 - GameHallPacketID_PACKET_CS_TASKLIST GameHallPacketID = 2214 - GameHallPacketID_PACKET_SC_TASKLIST GameHallPacketID = 2215 - GameHallPacketID_PACKET_SC_TASKCHG GameHallPacketID = 2216 - GameHallPacketID_PACKET_SC_TACKCOMPLETE GameHallPacketID = 2217 - GameHallPacketID_PACKET_SC_TASKDEL GameHallPacketID = 2218 - GameHallPacketID_PACKET_CS_TACKDRAWPRIZE GameHallPacketID = 2219 - GameHallPacketID_PACKET_SC_TACKDRAWPRIZE GameHallPacketID = 2220 - GameHallPacketID_PACKET_CS_GETAGENTGAMEREC GameHallPacketID = 2223 - GameHallPacketID_PACKET_SC_GETAGENTGAMEREC GameHallPacketID = 2224 - GameHallPacketID_PACKET_CS_DELAGENTGAMEREC GameHallPacketID = 2225 - GameHallPacketID_PACKET_CS_SHOPBUY GameHallPacketID = 2226 - GameHallPacketID_PACKET_SC_SHOPBUY GameHallPacketID = 2227 - GameHallPacketID_PACKET_SC_LIMITLIST GameHallPacketID = 2228 - GameHallPacketID_PACKET_CS_GETLATELYGAMEIDS GameHallPacketID = 2229 - GameHallPacketID_PACKET_SC_GETLATELYGAMEIDS GameHallPacketID = 2230 - GameHallPacketID_PACKET_CS_GETGAMECONFIG GameHallPacketID = 2231 - GameHallPacketID_PACKET_SC_GETGAMECONFIG GameHallPacketID = 2232 - GameHallPacketID_PACKET_SC_CHANGEGAMESTATUS GameHallPacketID = 2233 - GameHallPacketID_PACKET_CS_ENTERHALL GameHallPacketID = 2240 - GameHallPacketID_PACKET_SC_ENTERHALL GameHallPacketID = 2241 - GameHallPacketID_PACKET_CS_LEAVEHALL GameHallPacketID = 2242 - GameHallPacketID_PACKET_SC_LEAVEHALL GameHallPacketID = 2243 - GameHallPacketID_PACKET_CS_HALLROOMLIST GameHallPacketID = 2244 - GameHallPacketID_PACKET_SC_HALLROOMLIST GameHallPacketID = 2245 - GameHallPacketID_PACKET_SC_ROOMPLAYERENTER GameHallPacketID = 2246 - GameHallPacketID_PACKET_SC_ROOMPLAYERLEAVE GameHallPacketID = 2247 - GameHallPacketID_PACKET_SC_ROOMSTATECHANG GameHallPacketID = 2248 - GameHallPacketID_PACKET_SC_HALLPLAYERNUM GameHallPacketID = 2249 - GameHallPacketID_PACKET_SC_BULLETIONINFO GameHallPacketID = 2250 - GameHallPacketID_PACKET_CS_BULLETIONINFO GameHallPacketID = 2251 - GameHallPacketID_PACKET_CS_CUSTOMERINFOLIST GameHallPacketID = 2252 - GameHallPacketID_PACKET_SC_CUSTOMERINFOLIST GameHallPacketID = 2253 - GameHallPacketID_PACKET_CS_ENTERDGGAME GameHallPacketID = 2254 - GameHallPacketID_PACKET_SC_ENTERDGGAME GameHallPacketID = 2255 - GameHallPacketID_PACKET_CS_LEAVEDGGAME GameHallPacketID = 2256 - GameHallPacketID_PACKET_SC_LEAVEDGGAME GameHallPacketID = 2257 - GameHallPacketID_PACKET_SC_PLAYERRECHARGEANSWER GameHallPacketID = 2258 //充值弹框协议 - GameHallPacketID_PACKET_CS_THRIDACCOUNTSTATICSTIC GameHallPacketID = 2259 - GameHallPacketID_PACKET_SC_THRIDACCOUNTSTATICSTIC GameHallPacketID = 2260 - GameHallPacketID_PACKET_CS_THRIDACCOUNTTRANSFER GameHallPacketID = 2261 - GameHallPacketID_PACKET_SC_THRIDACCOUNTTRANSFER GameHallPacketID = 2262 - GameHallPacketID_PACKET_CS_ENTERTHRIDGAME GameHallPacketID = 2263 - GameHallPacketID_PACKET_SC_ENTERTHRIDGAME GameHallPacketID = 2264 - GameHallPacketID_PACKET_CS_LEAVETHRIDGAME GameHallPacketID = 2265 - GameHallPacketID_PACKET_SC_LEAVETHRIDGAME GameHallPacketID = 2266 - GameHallPacketID_PACKET_CS_THRIDGAMELIST GameHallPacketID = 2267 - GameHallPacketID_PACKET_SC_THRIDGAMELIST GameHallPacketID = 2268 - GameHallPacketID_PACKET_CS_THRIDGAMEBALANCEUPDATE GameHallPacketID = 2269 - GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE GameHallPacketID = 2270 - GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE GameHallPacketID = 2271 - GameHallPacketID_PACKET_CS_CREATEPRIVATEROOM GameHallPacketID = 2272 - GameHallPacketID_PACKET_SC_CREATEPRIVATEROOM GameHallPacketID = 2273 - GameHallPacketID_PACKET_CS_GETPRIVATEROOMLIST GameHallPacketID = 2274 - GameHallPacketID_PACKET_SC_GETPRIVATEROOMLIST GameHallPacketID = 2275 - GameHallPacketID_PACKET_CS_GETPRIVATEROOMHISTORY GameHallPacketID = 2276 - GameHallPacketID_PACKET_SC_GETPRIVATEROOMHISTORY GameHallPacketID = 2277 - GameHallPacketID_PACKET_CS_DESTROYPRIVATEROOM GameHallPacketID = 2278 - GameHallPacketID_PACKET_SC_DESTROYPRIVATEROOM GameHallPacketID = 2279 - GameHallPacketID_PACKET_CS_QUERYROOMINFO GameHallPacketID = 2280 - GameHallPacketID_PACKET_SC_QUERYROOMINFO GameHallPacketID = 2281 - GameHallPacketID_PACKET_SC_GAMESUBLIST GameHallPacketID = 2283 - GameHallPacketID_PACKET_CS_GAMEOBSERVE GameHallPacketID = 2284 - GameHallPacketID_PACKET_SC_GAMESTATE GameHallPacketID = 2285 - GameHallPacketID_PACKET_SC_SYNCGAMEFREE GameHallPacketID = 2286 - GameHallPacketID_PACKET_SC_LOTTERYSYNC GameHallPacketID = 2287 - GameHallPacketID_PACKET_CS_LOTTERYLOG GameHallPacketID = 2288 - GameHallPacketID_PACKET_SC_LOTTERYLOG GameHallPacketID = 2289 - GameHallPacketID_PACKET_SC_LOTTERYBILL GameHallPacketID = 2290 - GameHallPacketID_PACKET_CS_UPLOADLOC GameHallPacketID = 2291 - GameHallPacketID_PACKET_SC_UPLOADLOC GameHallPacketID = 2292 - GameHallPacketID_PACKET_CS_AUDIENCESIT GameHallPacketID = 2293 - GameHallPacketID_PACKET_SC_AUDIENCESIT GameHallPacketID = 2294 - GameHallPacketID_PACKET_CS_COMNOTICE GameHallPacketID = 2295 - GameHallPacketID_PACKET_SC_COMNOTICE GameHallPacketID = 2296 - GameHallPacketID_PACKET_SC_CHANGEENTRYSWITCH GameHallPacketID = 2297 //界面入口开关 - GameHallPacketID_PACKET_SC_NoticeChange GameHallPacketID = 2298 // 公告更新 - GameHallPacketID_PACKET_CS_LEAVEROOM GameHallPacketID = 8001 - GameHallPacketID_PACKET_SC_LEAVEROOM GameHallPacketID = 8002 - GameHallPacketID_PACKET_CS_DESTROYROOM GameHallPacketID = 8003 - GameHallPacketID_PACKET_SC_DESTROYROOM GameHallPacketID = 8004 - GameHallPacketID_PACKET_CS_FORCESTART GameHallPacketID = 8005 - GameHallPacketID_PACKET_SC_FORCESTART GameHallPacketID = 8006 - GameHallPacketID_PACKET_CS_AUDIENCE_LEAVEROOM GameHallPacketID = 8007 - GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG GameHallPacketID = 8008 - GameHallPacketID_PACKET_CSRoomEvent GameHallPacketID = 8009 // 房间事件 - GameHallPacketID_PACKET_SCRoomEvent GameHallPacketID = 8010 // 房间事件 + // client -> worldsrv 协议 + // 消息id 2200-2319 + // 弃用消息号 + GameHallPacketID_PACKET_GameHall_ZERO GameHallPacketID = 0 + // 创建房间 + GameHallPacketID_PACKET_CS_CREATEROOM GameHallPacketID = 2202 + GameHallPacketID_PACKET_SC_CREATEROOM GameHallPacketID = 2203 + // 进入房间 + GameHallPacketID_PACKET_CS_ENTERROOM GameHallPacketID = 2204 + GameHallPacketID_PACKET_SC_ENTERROOM GameHallPacketID = 2205 + // 返回房间 + GameHallPacketID_PACKET_CS_RETURNROOM GameHallPacketID = 2206 + GameHallPacketID_PACKET_SC_RETURNROOM GameHallPacketID = 2207 + // 进入游戏 + GameHallPacketID_PACKET_CS_ENTERGAME GameHallPacketID = 2209 + GameHallPacketID_PACKET_SC_ENTERGAME GameHallPacketID = 2210 + // 退出游戏 + GameHallPacketID_PACKET_CS_QUITGAME GameHallPacketID = 2211 + GameHallPacketID_PACKET_SC_QUITGAME GameHallPacketID = 2212 + // 获取游戏分场配置 + GameHallPacketID_PACKET_CS_GETGAMECONFIG GameHallPacketID = 2231 + GameHallPacketID_PACKET_SC_GETGAMECONFIG GameHallPacketID = 2232 + // 修改游戏开关 + GameHallPacketID_PACKET_SC_CHANGEGAMESTATUS GameHallPacketID = 2233 + // 充值弹框协议 + GameHallPacketID_PACKET_SC_PLAYERRECHARGEANSWER GameHallPacketID = 2258 + // 创建竞技馆私人房 + GameHallPacketID_PACKET_CS_CREATEPRIVATEROOM GameHallPacketID = 2272 + GameHallPacketID_PACKET_SC_CREATEPRIVATEROOM GameHallPacketID = 2273 + // 查询竞技馆私人房列表 + GameHallPacketID_PACKET_CS_GETPRIVATEROOMLIST GameHallPacketID = 2274 + GameHallPacketID_PACKET_SC_GETPRIVATEROOMLIST GameHallPacketID = 2275 + // 查询自由桌房间列表 + GameHallPacketID_PACKET_CS_QUERYROOMINFO GameHallPacketID = 2280 + GameHallPacketID_PACKET_SC_QUERYROOMINFO GameHallPacketID = 2281 + // 同步房间下注状态 + GameHallPacketID_PACKET_SC_GAMESTATE GameHallPacketID = 2285 + // 观众进入房间 + GameHallPacketID_PACKET_CS_AUDIENCE_ENTERROOM GameHallPacketID = 2208 + // 观众坐下 + GameHallPacketID_PACKET_CS_AUDIENCESIT GameHallPacketID = 2293 + GameHallPacketID_PACKET_SC_AUDIENCESIT GameHallPacketID = 2294 + // 公告 + GameHallPacketID_PACKET_CS_COMNOTICE GameHallPacketID = 2295 + GameHallPacketID_PACKET_SC_COMNOTICE GameHallPacketID = 2296 + // 界面入口开关 + GameHallPacketID_PACKET_SC_CHANGEENTRYSWITCH GameHallPacketID = 2297 + // 公告更新 + GameHallPacketID_PACKET_SC_NoticeChange GameHallPacketID = 2298 + // 保持更新 + GameHallPacketID_PACKET_CSTouchType GameHallPacketID = 2299 + // 竞技馆房间信息 + GameHallPacketID_PACKET_CSRoomConfig GameHallPacketID = 2300 + GameHallPacketID_PACKET_SCRoomConfig GameHallPacketID = 2301 + // client -> gamesrv 协议 + // 消息id 8000~8099 + // 离开房间 + GameHallPacketID_PACKET_CS_LEAVEROOM GameHallPacketID = 8001 + GameHallPacketID_PACKET_SC_LEAVEROOM GameHallPacketID = 8002 + // 解散房间 + GameHallPacketID_PACKET_CS_DESTROYROOM GameHallPacketID = 8003 + GameHallPacketID_PACKET_SC_DESTROYROOM GameHallPacketID = 8004 + // 强制开始 + GameHallPacketID_PACKET_CS_FORCESTART GameHallPacketID = 8005 + GameHallPacketID_PACKET_SC_FORCESTART GameHallPacketID = 8006 + // 观众离开房间 + GameHallPacketID_PACKET_CS_AUDIENCE_LEAVEROOM GameHallPacketID = 8007 + // 玩家切换标志,暂离状态 + GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG GameHallPacketID = 8008 + // 房间事件,互动表情 + GameHallPacketID_PACKET_CSRoomEvent GameHallPacketID = 8009 + GameHallPacketID_PACKET_SCRoomEvent GameHallPacketID = 8010 ) // Enum value maps for GameHallPacketID. var ( GameHallPacketID_name = map[int32]string{ 0: "PACKET_GameHall_ZERO", - 2200: "PACKET_CS_JOINGAME", - 2201: "PACKET_SC_JOINGAME", 2202: "PACKET_CS_CREATEROOM", 2203: "PACKET_SC_CREATEROOM", 2204: "PACKET_CS_ENTERROOM", 2205: "PACKET_SC_ENTERROOM", 2206: "PACKET_CS_RETURNROOM", 2207: "PACKET_SC_RETURNROOM", - 2208: "PACKET_CS_AUDIENCE_ENTERROOM", 2209: "PACKET_CS_ENTERGAME", 2210: "PACKET_SC_ENTERGAME", 2211: "PACKET_CS_QUITGAME", 2212: "PACKET_SC_QUITGAME", - 2213: "PACKET_SC_CARDGAINWAY", - 2214: "PACKET_CS_TASKLIST", - 2215: "PACKET_SC_TASKLIST", - 2216: "PACKET_SC_TASKCHG", - 2217: "PACKET_SC_TACKCOMPLETE", - 2218: "PACKET_SC_TASKDEL", - 2219: "PACKET_CS_TACKDRAWPRIZE", - 2220: "PACKET_SC_TACKDRAWPRIZE", - 2223: "PACKET_CS_GETAGENTGAMEREC", - 2224: "PACKET_SC_GETAGENTGAMEREC", - 2225: "PACKET_CS_DELAGENTGAMEREC", - 2226: "PACKET_CS_SHOPBUY", - 2227: "PACKET_SC_SHOPBUY", - 2228: "PACKET_SC_LIMITLIST", - 2229: "PACKET_CS_GETLATELYGAMEIDS", - 2230: "PACKET_SC_GETLATELYGAMEIDS", 2231: "PACKET_CS_GETGAMECONFIG", 2232: "PACKET_SC_GETGAMECONFIG", 2233: "PACKET_SC_CHANGEGAMESTATUS", - 2240: "PACKET_CS_ENTERHALL", - 2241: "PACKET_SC_ENTERHALL", - 2242: "PACKET_CS_LEAVEHALL", - 2243: "PACKET_SC_LEAVEHALL", - 2244: "PACKET_CS_HALLROOMLIST", - 2245: "PACKET_SC_HALLROOMLIST", - 2246: "PACKET_SC_ROOMPLAYERENTER", - 2247: "PACKET_SC_ROOMPLAYERLEAVE", - 2248: "PACKET_SC_ROOMSTATECHANG", - 2249: "PACKET_SC_HALLPLAYERNUM", - 2250: "PACKET_SC_BULLETIONINFO", - 2251: "PACKET_CS_BULLETIONINFO", - 2252: "PACKET_CS_CUSTOMERINFOLIST", - 2253: "PACKET_SC_CUSTOMERINFOLIST", - 2254: "PACKET_CS_ENTERDGGAME", - 2255: "PACKET_SC_ENTERDGGAME", - 2256: "PACKET_CS_LEAVEDGGAME", - 2257: "PACKET_SC_LEAVEDGGAME", 2258: "PACKET_SC_PLAYERRECHARGEANSWER", - 2259: "PACKET_CS_THRIDACCOUNTSTATICSTIC", - 2260: "PACKET_SC_THRIDACCOUNTSTATICSTIC", - 2261: "PACKET_CS_THRIDACCOUNTTRANSFER", - 2262: "PACKET_SC_THRIDACCOUNTTRANSFER", - 2263: "PACKET_CS_ENTERTHRIDGAME", - 2264: "PACKET_SC_ENTERTHRIDGAME", - 2265: "PACKET_CS_LEAVETHRIDGAME", - 2266: "PACKET_SC_LEAVETHRIDGAME", - 2267: "PACKET_CS_THRIDGAMELIST", - 2268: "PACKET_SC_THRIDGAMELIST", - 2269: "PACKET_CS_THRIDGAMEBALANCEUPDATE", - 2270: "PACKET_SC_THRIDGAMEBALANCEUPDATE", - 2271: "PACKET_SC_THRIDGAMEBALANCEUPDATESTATE", 2272: "PACKET_CS_CREATEPRIVATEROOM", 2273: "PACKET_SC_CREATEPRIVATEROOM", 2274: "PACKET_CS_GETPRIVATEROOMLIST", 2275: "PACKET_SC_GETPRIVATEROOMLIST", - 2276: "PACKET_CS_GETPRIVATEROOMHISTORY", - 2277: "PACKET_SC_GETPRIVATEROOMHISTORY", - 2278: "PACKET_CS_DESTROYPRIVATEROOM", - 2279: "PACKET_SC_DESTROYPRIVATEROOM", 2280: "PACKET_CS_QUERYROOMINFO", 2281: "PACKET_SC_QUERYROOMINFO", - 2283: "PACKET_SC_GAMESUBLIST", - 2284: "PACKET_CS_GAMEOBSERVE", 2285: "PACKET_SC_GAMESTATE", - 2286: "PACKET_SC_SYNCGAMEFREE", - 2287: "PACKET_SC_LOTTERYSYNC", - 2288: "PACKET_CS_LOTTERYLOG", - 2289: "PACKET_SC_LOTTERYLOG", - 2290: "PACKET_SC_LOTTERYBILL", - 2291: "PACKET_CS_UPLOADLOC", - 2292: "PACKET_SC_UPLOADLOC", + 2208: "PACKET_CS_AUDIENCE_ENTERROOM", 2293: "PACKET_CS_AUDIENCESIT", 2294: "PACKET_SC_AUDIENCESIT", 2295: "PACKET_CS_COMNOTICE", 2296: "PACKET_SC_COMNOTICE", 2297: "PACKET_SC_CHANGEENTRYSWITCH", 2298: "PACKET_SC_NoticeChange", + 2299: "PACKET_CSTouchType", + 2300: "PACKET_CSRoomConfig", + 2301: "PACKET_SCRoomConfig", 8001: "PACKET_CS_LEAVEROOM", 8002: "PACKET_SC_LEAVEROOM", 8003: "PACKET_CS_DESTROYROOM", @@ -392,107 +312,48 @@ var ( 8010: "PACKET_SCRoomEvent", } GameHallPacketID_value = map[string]int32{ - "PACKET_GameHall_ZERO": 0, - "PACKET_CS_JOINGAME": 2200, - "PACKET_SC_JOINGAME": 2201, - "PACKET_CS_CREATEROOM": 2202, - "PACKET_SC_CREATEROOM": 2203, - "PACKET_CS_ENTERROOM": 2204, - "PACKET_SC_ENTERROOM": 2205, - "PACKET_CS_RETURNROOM": 2206, - "PACKET_SC_RETURNROOM": 2207, - "PACKET_CS_AUDIENCE_ENTERROOM": 2208, - "PACKET_CS_ENTERGAME": 2209, - "PACKET_SC_ENTERGAME": 2210, - "PACKET_CS_QUITGAME": 2211, - "PACKET_SC_QUITGAME": 2212, - "PACKET_SC_CARDGAINWAY": 2213, - "PACKET_CS_TASKLIST": 2214, - "PACKET_SC_TASKLIST": 2215, - "PACKET_SC_TASKCHG": 2216, - "PACKET_SC_TACKCOMPLETE": 2217, - "PACKET_SC_TASKDEL": 2218, - "PACKET_CS_TACKDRAWPRIZE": 2219, - "PACKET_SC_TACKDRAWPRIZE": 2220, - "PACKET_CS_GETAGENTGAMEREC": 2223, - "PACKET_SC_GETAGENTGAMEREC": 2224, - "PACKET_CS_DELAGENTGAMEREC": 2225, - "PACKET_CS_SHOPBUY": 2226, - "PACKET_SC_SHOPBUY": 2227, - "PACKET_SC_LIMITLIST": 2228, - "PACKET_CS_GETLATELYGAMEIDS": 2229, - "PACKET_SC_GETLATELYGAMEIDS": 2230, - "PACKET_CS_GETGAMECONFIG": 2231, - "PACKET_SC_GETGAMECONFIG": 2232, - "PACKET_SC_CHANGEGAMESTATUS": 2233, - "PACKET_CS_ENTERHALL": 2240, - "PACKET_SC_ENTERHALL": 2241, - "PACKET_CS_LEAVEHALL": 2242, - "PACKET_SC_LEAVEHALL": 2243, - "PACKET_CS_HALLROOMLIST": 2244, - "PACKET_SC_HALLROOMLIST": 2245, - "PACKET_SC_ROOMPLAYERENTER": 2246, - "PACKET_SC_ROOMPLAYERLEAVE": 2247, - "PACKET_SC_ROOMSTATECHANG": 2248, - "PACKET_SC_HALLPLAYERNUM": 2249, - "PACKET_SC_BULLETIONINFO": 2250, - "PACKET_CS_BULLETIONINFO": 2251, - "PACKET_CS_CUSTOMERINFOLIST": 2252, - "PACKET_SC_CUSTOMERINFOLIST": 2253, - "PACKET_CS_ENTERDGGAME": 2254, - "PACKET_SC_ENTERDGGAME": 2255, - "PACKET_CS_LEAVEDGGAME": 2256, - "PACKET_SC_LEAVEDGGAME": 2257, - "PACKET_SC_PLAYERRECHARGEANSWER": 2258, - "PACKET_CS_THRIDACCOUNTSTATICSTIC": 2259, - "PACKET_SC_THRIDACCOUNTSTATICSTIC": 2260, - "PACKET_CS_THRIDACCOUNTTRANSFER": 2261, - "PACKET_SC_THRIDACCOUNTTRANSFER": 2262, - "PACKET_CS_ENTERTHRIDGAME": 2263, - "PACKET_SC_ENTERTHRIDGAME": 2264, - "PACKET_CS_LEAVETHRIDGAME": 2265, - "PACKET_SC_LEAVETHRIDGAME": 2266, - "PACKET_CS_THRIDGAMELIST": 2267, - "PACKET_SC_THRIDGAMELIST": 2268, - "PACKET_CS_THRIDGAMEBALANCEUPDATE": 2269, - "PACKET_SC_THRIDGAMEBALANCEUPDATE": 2270, - "PACKET_SC_THRIDGAMEBALANCEUPDATESTATE": 2271, - "PACKET_CS_CREATEPRIVATEROOM": 2272, - "PACKET_SC_CREATEPRIVATEROOM": 2273, - "PACKET_CS_GETPRIVATEROOMLIST": 2274, - "PACKET_SC_GETPRIVATEROOMLIST": 2275, - "PACKET_CS_GETPRIVATEROOMHISTORY": 2276, - "PACKET_SC_GETPRIVATEROOMHISTORY": 2277, - "PACKET_CS_DESTROYPRIVATEROOM": 2278, - "PACKET_SC_DESTROYPRIVATEROOM": 2279, - "PACKET_CS_QUERYROOMINFO": 2280, - "PACKET_SC_QUERYROOMINFO": 2281, - "PACKET_SC_GAMESUBLIST": 2283, - "PACKET_CS_GAMEOBSERVE": 2284, - "PACKET_SC_GAMESTATE": 2285, - "PACKET_SC_SYNCGAMEFREE": 2286, - "PACKET_SC_LOTTERYSYNC": 2287, - "PACKET_CS_LOTTERYLOG": 2288, - "PACKET_SC_LOTTERYLOG": 2289, - "PACKET_SC_LOTTERYBILL": 2290, - "PACKET_CS_UPLOADLOC": 2291, - "PACKET_SC_UPLOADLOC": 2292, - "PACKET_CS_AUDIENCESIT": 2293, - "PACKET_SC_AUDIENCESIT": 2294, - "PACKET_CS_COMNOTICE": 2295, - "PACKET_SC_COMNOTICE": 2296, - "PACKET_SC_CHANGEENTRYSWITCH": 2297, - "PACKET_SC_NoticeChange": 2298, - "PACKET_CS_LEAVEROOM": 8001, - "PACKET_SC_LEAVEROOM": 8002, - "PACKET_CS_DESTROYROOM": 8003, - "PACKET_SC_DESTROYROOM": 8004, - "PACKET_CS_FORCESTART": 8005, - "PACKET_SC_FORCESTART": 8006, - "PACKET_CS_AUDIENCE_LEAVEROOM": 8007, - "PACKET_CS_PLAYER_SWITCHFLAG": 8008, - "PACKET_CSRoomEvent": 8009, - "PACKET_SCRoomEvent": 8010, + "PACKET_GameHall_ZERO": 0, + "PACKET_CS_CREATEROOM": 2202, + "PACKET_SC_CREATEROOM": 2203, + "PACKET_CS_ENTERROOM": 2204, + "PACKET_SC_ENTERROOM": 2205, + "PACKET_CS_RETURNROOM": 2206, + "PACKET_SC_RETURNROOM": 2207, + "PACKET_CS_ENTERGAME": 2209, + "PACKET_SC_ENTERGAME": 2210, + "PACKET_CS_QUITGAME": 2211, + "PACKET_SC_QUITGAME": 2212, + "PACKET_CS_GETGAMECONFIG": 2231, + "PACKET_SC_GETGAMECONFIG": 2232, + "PACKET_SC_CHANGEGAMESTATUS": 2233, + "PACKET_SC_PLAYERRECHARGEANSWER": 2258, + "PACKET_CS_CREATEPRIVATEROOM": 2272, + "PACKET_SC_CREATEPRIVATEROOM": 2273, + "PACKET_CS_GETPRIVATEROOMLIST": 2274, + "PACKET_SC_GETPRIVATEROOMLIST": 2275, + "PACKET_CS_QUERYROOMINFO": 2280, + "PACKET_SC_QUERYROOMINFO": 2281, + "PACKET_SC_GAMESTATE": 2285, + "PACKET_CS_AUDIENCE_ENTERROOM": 2208, + "PACKET_CS_AUDIENCESIT": 2293, + "PACKET_SC_AUDIENCESIT": 2294, + "PACKET_CS_COMNOTICE": 2295, + "PACKET_SC_COMNOTICE": 2296, + "PACKET_SC_CHANGEENTRYSWITCH": 2297, + "PACKET_SC_NoticeChange": 2298, + "PACKET_CSTouchType": 2299, + "PACKET_CSRoomConfig": 2300, + "PACKET_SCRoomConfig": 2301, + "PACKET_CS_LEAVEROOM": 8001, + "PACKET_SC_LEAVEROOM": 8002, + "PACKET_CS_DESTROYROOM": 8003, + "PACKET_SC_DESTROYROOM": 8004, + "PACKET_CS_FORCESTART": 8005, + "PACKET_SC_FORCESTART": 8006, + "PACKET_CS_AUDIENCE_LEAVEROOM": 8007, + "PACKET_CS_PLAYER_SWITCHFLAG": 8008, + "PACKET_CSRoomEvent": 8009, + "PACKET_SCRoomEvent": 8010, } ) @@ -523,791 +384,52 @@ func (GameHallPacketID) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{1} } -//进入游戏大厅 -//PACKET_CS_ENTERHALL -type CSEnterHall struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +type DataType int32 - HallId int32 `protobuf:"varint,1,opt,name=HallId,proto3" json:"HallId,omitempty"` //厅id(详见:DB_GameFree.xlxs中的id) -} +const ( + DataType_Zero DataType = 0 + DataType_PrivateRoomList DataType = 1 // 竞技馆房间列表 返回消息 PACKET_SC_GETPRIVATEROOMLIST +) -func (x *CSEnterHall) Reset() { - *x = CSEnterHall{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +// Enum value maps for DataType. +var ( + DataType_name = map[int32]string{ + 0: "Zero", + 1: "PrivateRoomList", } -} - -func (x *CSEnterHall) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSEnterHall) ProtoMessage() {} - -func (x *CSEnterHall) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + DataType_value = map[string]int32{ + "Zero": 0, + "PrivateRoomList": 1, } - return mi.MessageOf(x) +) + +func (x DataType) Enum() *DataType { + p := new(DataType) + *p = x + return p } -// Deprecated: Use CSEnterHall.ProtoReflect.Descriptor instead. -func (*CSEnterHall) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{0} +func (x DataType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (x *CSEnterHall) GetHallId() int32 { - if x != nil { - return x.HallId - } - return 0 +func (DataType) Descriptor() protoreflect.EnumDescriptor { + return file_game_proto_enumTypes[2].Descriptor() } -//PACKET_SC_ENTERHALL -type SCEnterHall struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HallId int32 `protobuf:"varint,1,opt,name=HallId,proto3" json:"HallId,omitempty"` //厅id(详见:DB_GameFree.xlxs中的id) - OpRetCode OpResultCode_Game `protobuf:"varint,2,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 +func (DataType) Type() protoreflect.EnumType { + return &file_game_proto_enumTypes[2] } -func (x *SCEnterHall) Reset() { - *x = SCEnterHall{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } +func (x DataType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) } -func (x *SCEnterHall) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCEnterHall) ProtoMessage() {} - -func (x *SCEnterHall) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[1] - 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 SCEnterHall.ProtoReflect.Descriptor instead. -func (*SCEnterHall) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{1} -} - -func (x *SCEnterHall) GetHallId() int32 { - if x != nil { - return x.HallId - } - return 0 -} - -func (x *SCEnterHall) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//离开游戏大厅 -//PACKET_CS_LEAVEHALL -type CSLeaveHall struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSLeaveHall) Reset() { - *x = CSLeaveHall{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSLeaveHall) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSLeaveHall) ProtoMessage() {} - -func (x *CSLeaveHall) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[2] - 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 CSLeaveHall.ProtoReflect.Descriptor instead. -func (*CSLeaveHall) Descriptor() ([]byte, []int) { +// Deprecated: Use DataType.Descriptor instead. +func (DataType) EnumDescriptor() ([]byte, []int) { return file_game_proto_rawDescGZIP(), []int{2} } -//PACKET_SC_LEAVEHALL -type SCLeaveHall struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HallId int32 `protobuf:"varint,1,opt,name=HallId,proto3" json:"HallId,omitempty"` -} - -func (x *SCLeaveHall) Reset() { - *x = SCLeaveHall{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLeaveHall) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLeaveHall) ProtoMessage() {} - -func (x *SCLeaveHall) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[3] - 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 SCLeaveHall.ProtoReflect.Descriptor instead. -func (*SCLeaveHall) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{3} -} - -func (x *SCLeaveHall) GetHallId() int32 { - if x != nil { - return x.HallId - } - return 0 -} - -//房间内玩家信息 -type RoomPlayerInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` //数字账号 - Head int32 `protobuf:"varint,2,opt,name=Head,proto3" json:"Head,omitempty"` //头像 - Sex int32 `protobuf:"varint,3,opt,name=Sex,proto3" json:"Sex,omitempty"` //性别 - Name string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"` //名字 - Pos int32 `protobuf:"varint,5,opt,name=Pos,proto3" json:"Pos,omitempty"` //位置 - Flag int32 `protobuf:"varint,6,opt,name=Flag,proto3" json:"Flag,omitempty"` //状态 - HeadOutLine int32 `protobuf:"varint,7,opt,name=HeadOutLine,proto3" json:"HeadOutLine,omitempty"` //头像框 - VIP int32 `protobuf:"varint,8,opt,name=VIP,proto3" json:"VIP,omitempty"` -} - -func (x *RoomPlayerInfo) Reset() { - *x = RoomPlayerInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RoomPlayerInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RoomPlayerInfo) ProtoMessage() {} - -func (x *RoomPlayerInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[4] - 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 RoomPlayerInfo.ProtoReflect.Descriptor instead. -func (*RoomPlayerInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{4} -} - -func (x *RoomPlayerInfo) GetSnId() int32 { - if x != nil { - return x.SnId - } - return 0 -} - -func (x *RoomPlayerInfo) GetHead() int32 { - if x != nil { - return x.Head - } - return 0 -} - -func (x *RoomPlayerInfo) GetSex() int32 { - if x != nil { - return x.Sex - } - return 0 -} - -func (x *RoomPlayerInfo) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *RoomPlayerInfo) GetPos() int32 { - if x != nil { - return x.Pos - } - return 0 -} - -func (x *RoomPlayerInfo) GetFlag() int32 { - if x != nil { - return x.Flag - } - return 0 -} - -func (x *RoomPlayerInfo) GetHeadOutLine() int32 { - if x != nil { - return x.HeadOutLine - } - return 0 -} - -func (x *RoomPlayerInfo) GetVIP() int32 { - if x != nil { - return x.VIP - } - return 0 -} - -//房间信息 -type RoomInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房号 - Starting bool `protobuf:"varint,7,opt,name=Starting,proto3" json:"Starting,omitempty"` //牌局是否开始 - Players []*RoomPlayerInfo `protobuf:"bytes,5,rep,name=Players,proto3" json:"Players,omitempty"` -} - -func (x *RoomInfo) Reset() { - *x = RoomInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RoomInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RoomInfo) ProtoMessage() {} - -func (x *RoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[5] - 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 RoomInfo.ProtoReflect.Descriptor instead. -func (*RoomInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{5} -} - -func (x *RoomInfo) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *RoomInfo) GetStarting() bool { - if x != nil { - return x.Starting - } - return false -} - -func (x *RoomInfo) GetPlayers() []*RoomPlayerInfo { - if x != nil { - return x.Players - } - return nil -} - -//PACKET_CS_HALLROOMLIST -type CSHallRoomList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HallId int32 `protobuf:"varint,1,opt,name=HallId,proto3" json:"HallId,omitempty"` //厅id(详见:DB_GameFree.xlxs中的id) -} - -func (x *CSHallRoomList) Reset() { - *x = CSHallRoomList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSHallRoomList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSHallRoomList) ProtoMessage() {} - -func (x *CSHallRoomList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[6] - 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 CSHallRoomList.ProtoReflect.Descriptor instead. -func (*CSHallRoomList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{6} -} - -func (x *CSHallRoomList) GetHallId() int32 { - if x != nil { - return x.HallId - } - return 0 -} - -//大厅人数 -type HallInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SceneType int32 `protobuf:"varint,1,opt,name=SceneType,proto3" json:"SceneType,omitempty"` //场 - PlayerNum int32 `protobuf:"varint,2,opt,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` //人数 -} - -func (x *HallInfo) Reset() { - *x = HallInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HallInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HallInfo) ProtoMessage() {} - -func (x *HallInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[7] - 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 HallInfo.ProtoReflect.Descriptor instead. -func (*HallInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{7} -} - -func (x *HallInfo) GetSceneType() int32 { - if x != nil { - return x.SceneType - } - return 0 -} - -func (x *HallInfo) GetPlayerNum() int32 { - if x != nil { - return x.PlayerNum - } - return 0 -} - -//PACKET_SC_HALLPLAYERNUM -type HallPlayerNum struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HallData []*HallInfo `protobuf:"bytes,1,rep,name=HallData,proto3" json:"HallData,omitempty"` //大厅人数 -} - -func (x *HallPlayerNum) Reset() { - *x = HallPlayerNum{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HallPlayerNum) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HallPlayerNum) ProtoMessage() {} - -func (x *HallPlayerNum) ProtoReflect() protoreflect.Message { - mi := &file_game_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 HallPlayerNum.ProtoReflect.Descriptor instead. -func (*HallPlayerNum) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{8} -} - -func (x *HallPlayerNum) GetHallData() []*HallInfo { - if x != nil { - return x.HallData - } - return nil -} - -//PACKET_SC_HALLROOMLIST -type SCHallRoomList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HallId int32 `protobuf:"varint,1,opt,name=HallId,proto3" json:"HallId,omitempty"` //厅id - GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id - GameMode int32 `protobuf:"varint,3,opt,name=GameMode,proto3" json:"GameMode,omitempty"` //游戏模式 - IsAdd bool `protobuf:"varint,4,opt,name=IsAdd,proto3" json:"IsAdd,omitempty"` //是否新增 - Params []int32 `protobuf:"varint,5,rep,packed,name=Params,proto3" json:"Params,omitempty"` //游戏规则参数 - Rooms []*RoomInfo `protobuf:"bytes,6,rep,name=Rooms,proto3" json:"Rooms,omitempty"` //房间列表 - HallData []*HallInfo `protobuf:"bytes,7,rep,name=HallData,proto3" json:"HallData,omitempty"` //大厅人数 -} - -func (x *SCHallRoomList) Reset() { - *x = SCHallRoomList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCHallRoomList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCHallRoomList) ProtoMessage() {} - -func (x *SCHallRoomList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[9] - 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 SCHallRoomList.ProtoReflect.Descriptor instead. -func (*SCHallRoomList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{9} -} - -func (x *SCHallRoomList) GetHallId() int32 { - if x != nil { - return x.HallId - } - return 0 -} - -func (x *SCHallRoomList) GetGameId() int32 { - if x != nil { - return x.GameId - } - return 0 -} - -func (x *SCHallRoomList) GetGameMode() int32 { - if x != nil { - return x.GameMode - } - return 0 -} - -func (x *SCHallRoomList) GetIsAdd() bool { - if x != nil { - return x.IsAdd - } - return false -} - -func (x *SCHallRoomList) GetParams() []int32 { - if x != nil { - return x.Params - } - return nil -} - -func (x *SCHallRoomList) GetRooms() []*RoomInfo { - if x != nil { - return x.Rooms - } - return nil -} - -func (x *SCHallRoomList) GetHallData() []*HallInfo { - if x != nil { - return x.HallData - } - return nil -} - -//PACKET_SC_ROOMPLAYERENTER -type SCRoomPlayerEnter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` - Player *RoomPlayerInfo `protobuf:"bytes,2,opt,name=Player,proto3" json:"Player,omitempty"` -} - -func (x *SCRoomPlayerEnter) Reset() { - *x = SCRoomPlayerEnter{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCRoomPlayerEnter) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCRoomPlayerEnter) ProtoMessage() {} - -func (x *SCRoomPlayerEnter) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[10] - 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 SCRoomPlayerEnter.ProtoReflect.Descriptor instead. -func (*SCRoomPlayerEnter) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{10} -} - -func (x *SCRoomPlayerEnter) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCRoomPlayerEnter) GetPlayer() *RoomPlayerInfo { - if x != nil { - return x.Player - } - return nil -} - -//PACKET_SC_ROOMPLAYERLEAVE -type SCRoomPlayerLeave struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` - Pos int32 `protobuf:"varint,2,opt,name=Pos,proto3" json:"Pos,omitempty"` -} - -func (x *SCRoomPlayerLeave) Reset() { - *x = SCRoomPlayerLeave{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCRoomPlayerLeave) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCRoomPlayerLeave) ProtoMessage() {} - -func (x *SCRoomPlayerLeave) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[11] - 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 SCRoomPlayerLeave.ProtoReflect.Descriptor instead. -func (*SCRoomPlayerLeave) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{11} -} - -func (x *SCRoomPlayerLeave) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCRoomPlayerLeave) GetPos() int32 { - if x != nil { - return x.Pos - } - return 0 -} - -//PACKET_SC_ROOMSTATECHANG -type SCRoomStateChange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` - Starting bool `protobuf:"varint,2,opt,name=Starting,proto3" json:"Starting,omitempty"` - State int32 `protobuf:"varint,3,opt,name=State,proto3" json:"State,omitempty"` -} - -func (x *SCRoomStateChange) Reset() { - *x = SCRoomStateChange{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCRoomStateChange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCRoomStateChange) ProtoMessage() {} - -func (x *SCRoomStateChange) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[12] - 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 SCRoomStateChange.ProtoReflect.Descriptor instead. -func (*SCRoomStateChange) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{12} -} - -func (x *SCRoomStateChange) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCRoomStateChange) GetStarting() bool { - if x != nil { - return x.Starting - } - return false -} - -func (x *SCRoomStateChange) GetState() int32 { - if x != nil { - return x.State - } - return 0 -} - //PACKET_CS_CREATEROOM type CSCreateRoom struct { state protoimpl.MessageState @@ -1329,7 +451,7 @@ type CSCreateRoom struct { func (x *CSCreateRoom) Reset() { *x = CSCreateRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[13] + mi := &file_game_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1342,7 +464,7 @@ func (x *CSCreateRoom) String() string { func (*CSCreateRoom) ProtoMessage() {} func (x *CSCreateRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[13] + mi := &file_game_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1355,7 +477,7 @@ func (x *CSCreateRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use CSCreateRoom.ProtoReflect.Descriptor instead. func (*CSCreateRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{13} + return file_game_proto_rawDescGZIP(), []int{0} } func (x *CSCreateRoom) GetGameId() int32 { @@ -1417,7 +539,7 @@ type SCCreateRoom struct { func (x *SCCreateRoom) Reset() { *x = SCCreateRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[14] + mi := &file_game_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1430,7 +552,7 @@ func (x *SCCreateRoom) String() string { func (*SCCreateRoom) ProtoMessage() {} func (x *SCCreateRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[14] + mi := &file_game_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1443,7 +565,7 @@ func (x *SCCreateRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use SCCreateRoom.ProtoReflect.Descriptor instead. func (*SCCreateRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{14} + return file_game_proto_rawDescGZIP(), []int{1} } func (x *SCCreateRoom) GetGameId() int32 { @@ -1488,109 +610,6 @@ func (x *SCCreateRoom) GetOpRetCode() OpResultCode_Game { return OpResultCode_Game_OPRC_Sucess_Game } -//PACKET_CS_DESTROYROOM -type CSDestroyRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSDestroyRoom) Reset() { - *x = CSDestroyRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSDestroyRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSDestroyRoom) ProtoMessage() {} - -func (x *CSDestroyRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_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 CSDestroyRoom.ProtoReflect.Descriptor instead. -func (*CSDestroyRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{15} -} - -//PACKET_SC_DESTROYROOM -type SCDestroyRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - OpRetCode OpResultCode_Game `protobuf:"varint,2,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - IsForce int32 `protobuf:"varint,3,opt,name=IsForce,proto3" json:"IsForce,omitempty"` //是否强制销毁 -} - -func (x *SCDestroyRoom) Reset() { - *x = SCDestroyRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCDestroyRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCDestroyRoom) ProtoMessage() {} - -func (x *SCDestroyRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_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 SCDestroyRoom.ProtoReflect.Descriptor instead. -func (*SCDestroyRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{16} -} - -func (x *SCDestroyRoom) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCDestroyRoom) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCDestroyRoom) GetIsForce() int32 { - if x != nil { - return x.IsForce - } - return 0 -} - //PACKET_CS_ENTERROOM //PACKET_CS_AUDIENCE_ENTERROOM //玩家请求进入游戏 @@ -1599,14 +618,15 @@ type CSEnterRoom struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏编号 + RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 + GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏编号 + Password string `protobuf:"bytes,3,opt,name=Password,proto3" json:"Password,omitempty"` //房间密码 } func (x *CSEnterRoom) Reset() { *x = CSEnterRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[17] + mi := &file_game_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1619,7 +639,7 @@ func (x *CSEnterRoom) String() string { func (*CSEnterRoom) ProtoMessage() {} func (x *CSEnterRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[17] + mi := &file_game_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1632,7 +652,7 @@ func (x *CSEnterRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use CSEnterRoom.ProtoReflect.Descriptor instead. func (*CSEnterRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{17} + return file_game_proto_rawDescGZIP(), []int{2} } func (x *CSEnterRoom) GetRoomId() int32 { @@ -1649,25 +669,33 @@ func (x *CSEnterRoom) GetGameId() int32 { return 0 } +func (x *CSEnterRoom) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + //PACKET_SC_ENTERROOM type SCEnterRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - GameId int32 `protobuf:"varint,1,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏ID - ModeType int32 `protobuf:"varint,2,opt,name=ModeType,proto3" json:"ModeType,omitempty"` //场类型 - Params []int32 `protobuf:"varint,3,rep,packed,name=Params,proto3" json:"Params,omitempty"` //场参数 - RoomId int32 `protobuf:"varint,4,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - HallId int32 `protobuf:"varint,5,opt,name=HallId,proto3" json:"HallId,omitempty"` //厅id - OpRetCode OpResultCode_Game `protobuf:"varint,6,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - ClubId int32 `protobuf:"varint,7,opt,name=ClubId,proto3" json:"ClubId,omitempty"` + GameId int32 `protobuf:"varint,1,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏ID + ModeType int32 `protobuf:"varint,2,opt,name=ModeType,proto3" json:"ModeType,omitempty"` //游戏模式(玩法,已经不用了) + Params []int32 `protobuf:"varint,3,rep,packed,name=Params,proto3" json:"Params,omitempty"` //场参数 + RoomId int32 `protobuf:"varint,4,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 + HallId int32 `protobuf:"varint,5,opt,name=HallId,proto3" json:"HallId,omitempty"` //厅id + OpRetCode OpResultCode_Game `protobuf:"varint,6,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 + ClubId int32 `protobuf:"varint,7,opt,name=ClubId,proto3" json:"ClubId,omitempty"` + GameFreeId int32 `protobuf:"varint,8,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏场次id } func (x *SCEnterRoom) Reset() { *x = SCEnterRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[18] + mi := &file_game_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1680,7 +708,7 @@ func (x *SCEnterRoom) String() string { func (*SCEnterRoom) ProtoMessage() {} func (x *SCEnterRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[18] + mi := &file_game_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1693,7 +721,7 @@ func (x *SCEnterRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use SCEnterRoom.ProtoReflect.Descriptor instead. func (*SCEnterRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{18} + return file_game_proto_rawDescGZIP(), []int{3} } func (x *SCEnterRoom) GetGameId() int32 { @@ -1745,124 +773,9 @@ func (x *SCEnterRoom) GetClubId() int32 { return 0 } -//PACKET_CS_LEAVEROOM -//PACKET_CS_AUDIENCE_LEAVEROOM -//玩家离开房间,返回大厅 -type CSLeaveRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Mode int32 `protobuf:"varint,1,opt,name=Mode,proto3" json:"Mode,omitempty"` //离开方式 0:退出 1:暂离(占着座位,返回大厅) -} - -func (x *CSLeaveRoom) Reset() { - *x = CSLeaveRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSLeaveRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSLeaveRoom) ProtoMessage() {} - -func (x *CSLeaveRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[19] - 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 CSLeaveRoom.ProtoReflect.Descriptor instead. -func (*CSLeaveRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{19} -} - -func (x *CSLeaveRoom) GetMode() int32 { +func (x *SCEnterRoom) GetGameFreeId() int32 { if x != nil { - return x.Mode - } - return 0 -} - -//PACKET_SC_LEAVEROOM -type SCLeaveRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - Reason int32 `protobuf:"varint,2,opt,name=Reason,proto3" json:"Reason,omitempty"` //原因 0:主动退出 1:被踢出 - RoomId int32 `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间ID - Mode int32 `protobuf:"varint,4,opt,name=Mode,proto3" json:"Mode,omitempty"` -} - -func (x *SCLeaveRoom) Reset() { - *x = SCLeaveRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLeaveRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLeaveRoom) ProtoMessage() {} - -func (x *SCLeaveRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[20] - 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 SCLeaveRoom.ProtoReflect.Descriptor instead. -func (*SCLeaveRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{20} -} - -func (x *SCLeaveRoom) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCLeaveRoom) GetReason() int32 { - if x != nil { - return x.Reason - } - return 0 -} - -func (x *SCLeaveRoom) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCLeaveRoom) GetMode() int32 { - if x != nil { - return x.Mode + return x.GameFreeId } return 0 } @@ -1882,7 +795,7 @@ type CSReturnRoom struct { func (x *CSReturnRoom) Reset() { *x = CSReturnRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[21] + mi := &file_game_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1895,7 +808,7 @@ func (x *CSReturnRoom) String() string { func (*CSReturnRoom) ProtoMessage() {} func (x *CSReturnRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[21] + mi := &file_game_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1908,7 +821,7 @@ func (x *CSReturnRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use CSReturnRoom.ProtoReflect.Descriptor instead. func (*CSReturnRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{21} + return file_game_proto_rawDescGZIP(), []int{4} } func (x *CSReturnRoom) GetApkVer() int32 { @@ -1962,7 +875,7 @@ type SCReturnRoom struct { func (x *SCReturnRoom) Reset() { *x = SCReturnRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[22] + mi := &file_game_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1975,7 +888,7 @@ func (x *SCReturnRoom) String() string { func (*SCReturnRoom) ProtoMessage() {} func (x *SCReturnRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[22] + mi := &file_game_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1988,7 +901,7 @@ func (x *SCReturnRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use SCReturnRoom.ProtoReflect.Descriptor instead. func (*SCReturnRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{22} + return file_game_proto_rawDescGZIP(), []int{5} } func (x *SCReturnRoom) GetOpRetCode() OpResultCode_Game { @@ -2075,34 +988,36 @@ func (x *SCReturnRoom) GetClubId() int32 { return 0 } -//获取游戏记录 -//PACKET_CS_GETGAMEREC -type CSGetGameRec struct { +//PACKET_CS_ENTERGAME +type CSEnterGame struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ver int32 `protobuf:"varint,1,opt,name=Ver,proto3" json:"Ver,omitempty"` - GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //游戏id + OpParams []int32 `protobuf:"varint,2,rep,packed,name=OpParams,proto3" json:"OpParams,omitempty"` + Platform string `protobuf:"bytes,3,opt,name=Platform,proto3" json:"Platform,omitempty"` + ApkVer int32 `protobuf:"varint,4,opt,name=ApkVer,proto3" json:"ApkVer,omitempty"` + ResVer int32 `protobuf:"varint,5,opt,name=ResVer,proto3" json:"ResVer,omitempty"` } -func (x *CSGetGameRec) Reset() { - *x = CSGetGameRec{} +func (x *CSEnterGame) Reset() { + *x = CSEnterGame{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[23] + mi := &file_game_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CSGetGameRec) String() string { +func (x *CSEnterGame) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CSGetGameRec) ProtoMessage() {} +func (*CSEnterGame) ProtoMessage() {} -func (x *CSGetGameRec) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[23] +func (x *CSEnterGame) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2113,149 +1028,78 @@ func (x *CSGetGameRec) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CSGetGameRec.ProtoReflect.Descriptor instead. -func (*CSGetGameRec) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{23} +// Deprecated: Use CSEnterGame.ProtoReflect.Descriptor instead. +func (*CSEnterGame) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{6} } -func (x *CSGetGameRec) GetVer() int32 { - if x != nil { - return x.Ver - } - return 0 -} - -func (x *CSGetGameRec) GetGameId() int32 { - if x != nil { - return x.GameId - } - return 0 -} - -type PlayerGameRec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` - Head int32 `protobuf:"varint,3,opt,name=Head,proto3" json:"Head,omitempty"` - Coin int64 `protobuf:"varint,4,opt,name=Coin,proto3" json:"Coin,omitempty"` - Pos int32 `protobuf:"varint,5,opt,name=Pos,proto3" json:"Pos,omitempty"` - OtherParams []int32 `protobuf:"varint,6,rep,packed,name=OtherParams,proto3" json:"OtherParams,omitempty"` -} - -func (x *PlayerGameRec) Reset() { - *x = PlayerGameRec{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PlayerGameRec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PlayerGameRec) ProtoMessage() {} - -func (x *PlayerGameRec) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[24] - 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 PlayerGameRec.ProtoReflect.Descriptor instead. -func (*PlayerGameRec) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{24} -} - -func (x *PlayerGameRec) GetId() int32 { +func (x *CSEnterGame) GetId() int32 { if x != nil { return x.Id } return 0 } -func (x *PlayerGameRec) GetName() string { +func (x *CSEnterGame) GetOpParams() []int32 { if x != nil { - return x.Name + return x.OpParams + } + return nil +} + +func (x *CSEnterGame) GetPlatform() string { + if x != nil { + return x.Platform } return "" } -func (x *PlayerGameRec) GetHead() int32 { +func (x *CSEnterGame) GetApkVer() int32 { if x != nil { - return x.Head + return x.ApkVer } return 0 } -func (x *PlayerGameRec) GetCoin() int64 { +func (x *CSEnterGame) GetResVer() int32 { if x != nil { - return x.Coin + return x.ResVer } return 0 } -func (x *PlayerGameRec) GetPos() int32 { - if x != nil { - return x.Pos - } - return 0 -} - -func (x *PlayerGameRec) GetOtherParams() []int32 { - if x != nil { - return x.OtherParams - } - return nil -} - -type GameRec struct { +//PACKET_SC_ENTERGAME +type SCEnterGame struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - RecId int32 `protobuf:"varint,1,opt,name=RecId,proto3" json:"RecId,omitempty"` - Datas []*PlayerGameRec `protobuf:"bytes,2,rep,name=Datas,proto3" json:"Datas,omitempty"` - Ts int64 `protobuf:"varint,3,opt,name=Ts,proto3" json:"Ts,omitempty"` - RoomId int32 `protobuf:"varint,4,opt,name=RoomId,proto3" json:"RoomId,omitempty"` - GameMode int32 `protobuf:"varint,5,opt,name=GameMode,proto3" json:"GameMode,omitempty"` - SceneType int32 `protobuf:"varint,6,opt,name=SceneType,proto3" json:"SceneType,omitempty"` - GameId int32 `protobuf:"varint,7,opt,name=GameId,proto3" json:"GameId,omitempty"` - TotalOfGames int32 `protobuf:"varint,8,opt,name=TotalOfGames,proto3" json:"TotalOfGames,omitempty"` - NumOfGames int32 `protobuf:"varint,9,opt,name=NumOfGames,proto3" json:"NumOfGames,omitempty"` - RoomFeeMode int32 `protobuf:"varint,10,opt,name=RoomFeeMode,proto3" json:"RoomFeeMode,omitempty"` - RoomCardCnt int32 `protobuf:"varint,11,opt,name=RoomCardCnt,proto3" json:"RoomCardCnt,omitempty"` - Params []int32 `protobuf:"varint,12,rep,packed,name=Params,proto3" json:"Params,omitempty"` - GameTime int32 `protobuf:"varint,13,opt,name=GameTime,proto3" json:"GameTime,omitempty"` + OpCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpCode,omitempty"` //操作码 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // + OpParams []int32 `protobuf:"varint,3,rep,packed,name=OpParams,proto3" json:"OpParams,omitempty"` + MinApkVer int32 `protobuf:"varint,4,opt,name=MinApkVer,proto3" json:"MinApkVer,omitempty"` //最低apk版本号 + LatestApkVer int32 `protobuf:"varint,5,opt,name=LatestApkVer,proto3" json:"LatestApkVer,omitempty"` //最新apk版本号 + MinResVer int32 `protobuf:"varint,6,opt,name=MinResVer,proto3" json:"MinResVer,omitempty"` //最低资源版本号 + LatestResVer int32 `protobuf:"varint,7,opt,name=LatestResVer,proto3" json:"LatestResVer,omitempty"` //最新资源版本号 } -func (x *GameRec) Reset() { - *x = GameRec{} +func (x *SCEnterGame) Reset() { + *x = SCEnterGame{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[25] + mi := &file_game_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GameRec) String() string { +func (x *SCEnterGame) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GameRec) ProtoMessage() {} +func (*SCEnterGame) ProtoMessage() {} -func (x *GameRec) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[25] +func (x *SCEnterGame) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2266,433 +1110,144 @@ func (x *GameRec) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GameRec.ProtoReflect.Descriptor instead. -func (*GameRec) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{25} +// Deprecated: Use SCEnterGame.ProtoReflect.Descriptor instead. +func (*SCEnterGame) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{7} } -func (x *GameRec) GetRecId() int32 { +func (x *SCEnterGame) GetOpCode() OpResultCode_Game { if x != nil { - return x.RecId - } - return 0 -} - -func (x *GameRec) GetDatas() []*PlayerGameRec { - if x != nil { - return x.Datas - } - return nil -} - -func (x *GameRec) GetTs() int64 { - if x != nil { - return x.Ts - } - return 0 -} - -func (x *GameRec) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *GameRec) GetGameMode() int32 { - if x != nil { - return x.GameMode - } - return 0 -} - -func (x *GameRec) GetSceneType() int32 { - if x != nil { - return x.SceneType - } - return 0 -} - -func (x *GameRec) GetGameId() int32 { - if x != nil { - return x.GameId - } - return 0 -} - -func (x *GameRec) GetTotalOfGames() int32 { - if x != nil { - return x.TotalOfGames - } - return 0 -} - -func (x *GameRec) GetNumOfGames() int32 { - if x != nil { - return x.NumOfGames - } - return 0 -} - -func (x *GameRec) GetRoomFeeMode() int32 { - if x != nil { - return x.RoomFeeMode - } - return 0 -} - -func (x *GameRec) GetRoomCardCnt() int32 { - if x != nil { - return x.RoomCardCnt - } - return 0 -} - -func (x *GameRec) GetParams() []int32 { - if x != nil { - return x.Params - } - return nil -} - -func (x *GameRec) GetGameTime() int32 { - if x != nil { - return x.GameTime - } - return 0 -} - -//PACKET_SC_GETGAMEREC -type SCGetGameRec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Recs []*GameRec `protobuf:"bytes,1,rep,name=Recs,proto3" json:"Recs,omitempty"` - Ver int32 `protobuf:"varint,2,opt,name=Ver,proto3" json:"Ver,omitempty"` - GameId int32 `protobuf:"varint,3,opt,name=GameId,proto3" json:"GameId,omitempty"` -} - -func (x *SCGetGameRec) Reset() { - *x = SCGetGameRec{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCGetGameRec) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCGetGameRec) ProtoMessage() {} - -func (x *SCGetGameRec) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[26] - 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 SCGetGameRec.ProtoReflect.Descriptor instead. -func (*SCGetGameRec) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{26} -} - -func (x *SCGetGameRec) GetRecs() []*GameRec { - if x != nil { - return x.Recs - } - return nil -} - -func (x *SCGetGameRec) GetVer() int32 { - if x != nil { - return x.Ver - } - return 0 -} - -func (x *SCGetGameRec) GetGameId() int32 { - if x != nil { - return x.GameId - } - return 0 -} - -//PACKET_CS_SHARESUC -type CSShareSuc struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ShareType int32 `protobuf:"varint,1,opt,name=ShareType,proto3" json:"ShareType,omitempty"` //分享类型 1:微信好友 2:朋友圈 -} - -func (x *CSShareSuc) Reset() { - *x = CSShareSuc{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSShareSuc) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSShareSuc) ProtoMessage() {} - -func (x *CSShareSuc) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[27] - 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 CSShareSuc.ProtoReflect.Descriptor instead. -func (*CSShareSuc) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{27} -} - -func (x *CSShareSuc) GetShareType() int32 { - if x != nil { - return x.ShareType - } - return 0 -} - -//PACKET_SC_SHARESUC -type SCShareSuc struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCShareSuc) Reset() { - *x = SCShareSuc{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCShareSuc) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCShareSuc) ProtoMessage() {} - -func (x *SCShareSuc) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[28] - 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 SCShareSuc.ProtoReflect.Descriptor instead. -func (*SCShareSuc) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{28} -} - -func (x *SCShareSuc) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode + return x.OpCode } return OpResultCode_Game_OPRC_Sucess_Game } -//PACKET_CS_FORCESTART -type CSForceStart struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSForceStart) Reset() { - *x = CSForceStart{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSForceStart) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSForceStart) ProtoMessage() {} - -func (x *CSForceStart) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[29] - 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 CSForceStart.ProtoReflect.Descriptor instead. -func (*CSForceStart) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{29} -} - -//PACKET_SC_FORCESTART -type SCForceStart struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCForceStart) Reset() { - *x = SCForceStart{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCForceStart) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCForceStart) ProtoMessage() {} - -func (x *SCForceStart) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[30] - 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 SCForceStart.ProtoReflect.Descriptor instead. -func (*SCForceStart) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{30} -} - -func (x *SCForceStart) GetOpRetCode() OpResultCode_Game { +func (x *SCEnterGame) GetId() int32 { if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//PACKET_CS_INVITEROBOT -type CSInviteRobot struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameId int32 `protobuf:"varint,1,opt,name=GameId,proto3" json:"GameId,omitempty"` - IsAgent bool `protobuf:"varint,2,opt,name=IsAgent,proto3" json:"IsAgent,omitempty"` //0:自己玩 1:机器人代替我 -} - -func (x *CSInviteRobot) Reset() { - *x = CSInviteRobot{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSInviteRobot) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSInviteRobot) ProtoMessage() {} - -func (x *CSInviteRobot) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[31] - 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 CSInviteRobot.ProtoReflect.Descriptor instead. -func (*CSInviteRobot) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{31} -} - -func (x *CSInviteRobot) GetGameId() int32 { - if x != nil { - return x.GameId + return x.Id } return 0 } -func (x *CSInviteRobot) GetIsAgent() bool { +func (x *SCEnterGame) GetOpParams() []int32 { if x != nil { - return x.IsAgent + return x.OpParams + } + return nil +} + +func (x *SCEnterGame) GetMinApkVer() int32 { + if x != nil { + return x.MinApkVer + } + return 0 +} + +func (x *SCEnterGame) GetLatestApkVer() int32 { + if x != nil { + return x.LatestApkVer + } + return 0 +} + +func (x *SCEnterGame) GetMinResVer() int32 { + if x != nil { + return x.MinResVer + } + return 0 +} + +func (x *SCEnterGame) GetLatestResVer() int32 { + if x != nil { + return x.LatestResVer + } + return 0 +} + +//PACKET_CS_QUITGAME +type CSQuitGame struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //游戏id + IsAudience bool `protobuf:"varint,2,opt,name=IsAudience,proto3" json:"IsAudience,omitempty"` //是否是观众 +} + +func (x *CSQuitGame) Reset() { + *x = CSQuitGame{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSQuitGame) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSQuitGame) ProtoMessage() {} + +func (x *CSQuitGame) ProtoReflect() protoreflect.Message { + mi := &file_game_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 CSQuitGame.ProtoReflect.Descriptor instead. +func (*CSQuitGame) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{8} +} + +func (x *CSQuitGame) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CSQuitGame) GetIsAudience() bool { + if x != nil { + return x.IsAudience } return false } -//玩家设置标记 -//PACKET_CS_PLAYER_SWITCHFLAG -type CSPlayerSwithFlag struct { +//PACKET_SC_QUITGAME +type SCQuitGame struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Flag int32 `protobuf:"varint,1,opt,name=Flag,proto3" json:"Flag,omitempty"` - Mark int32 `protobuf:"varint,2,opt,name=Mark,proto3" json:"Mark,omitempty"` //1:设置 0:取消 + OpCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpCode,omitempty"` //操作码 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` + Reason int32 `protobuf:"varint,3,opt,name=Reason,proto3" json:"Reason,omitempty"` //原因 } -func (x *CSPlayerSwithFlag) Reset() { - *x = CSPlayerSwithFlag{} +func (x *SCQuitGame) Reset() { + *x = SCQuitGame{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[32] + mi := &file_game_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CSPlayerSwithFlag) String() string { +func (x *SCQuitGame) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CSPlayerSwithFlag) ProtoMessage() {} +func (*SCQuitGame) ProtoMessage() {} -func (x *CSPlayerSwithFlag) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[32] +func (x *SCQuitGame) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2703,2943 +1258,28 @@ func (x *CSPlayerSwithFlag) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CSPlayerSwithFlag.ProtoReflect.Descriptor instead. -func (*CSPlayerSwithFlag) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{32} +// Deprecated: Use SCQuitGame.ProtoReflect.Descriptor instead. +func (*SCQuitGame) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{9} } -func (x *CSPlayerSwithFlag) GetFlag() int32 { +func (x *SCQuitGame) GetOpCode() OpResultCode_Game { if x != nil { - return x.Flag + return x.OpCode } - return 0 + return OpResultCode_Game_OPRC_Sucess_Game } -func (x *CSPlayerSwithFlag) GetMark() int32 { - if x != nil { - return x.Mark - } - return 0 -} - -//玩家商城购买 -//PACKET_CS_SHOPBUY -type CSShopBuy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //商品ID - Count int32 `protobuf:"varint,2,opt,name=Count,proto3" json:"Count,omitempty"` //数量 -} - -func (x *CSShopBuy) Reset() { - *x = CSShopBuy{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSShopBuy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSShopBuy) ProtoMessage() {} - -func (x *CSShopBuy) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[33] - 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 CSShopBuy.ProtoReflect.Descriptor instead. -func (*CSShopBuy) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{33} -} - -func (x *CSShopBuy) GetId() int32 { +func (x *SCQuitGame) GetId() int32 { if x != nil { return x.Id } return 0 } -func (x *CSShopBuy) GetCount() int32 { +func (x *SCQuitGame) GetReason() int32 { if x != nil { - return x.Count - } - return 0 -} - -//PACKET_SC_SHOPBUY -type SCShopBuy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - OpRetCode OpResultCode_Game `protobuf:"varint,2,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - CostType int32 `protobuf:"varint,3,opt,name=CostType,proto3" json:"CostType,omitempty"` //消耗类型 - CostNum int32 `protobuf:"varint,4,opt,name=CostNum,proto3" json:"CostNum,omitempty"` //消耗数量 - GainType int32 `protobuf:"varint,5,opt,name=GainType,proto3" json:"GainType,omitempty"` //获得类型 - GainNum int32 `protobuf:"varint,6,opt,name=GainNum,proto3" json:"GainNum,omitempty"` //获得数量 -} - -func (x *SCShopBuy) Reset() { - *x = SCShopBuy{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCShopBuy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCShopBuy) ProtoMessage() {} - -func (x *SCShopBuy) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[34] - 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 SCShopBuy.ProtoReflect.Descriptor instead. -func (*SCShopBuy) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{34} -} - -func (x *SCShopBuy) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *SCShopBuy) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCShopBuy) GetCostType() int32 { - if x != nil { - return x.CostType - } - return 0 -} - -func (x *SCShopBuy) GetCostNum() int32 { - if x != nil { - return x.CostNum - } - return 0 -} - -func (x *SCShopBuy) GetGainType() int32 { - if x != nil { - return x.GainType - } - return 0 -} - -func (x *SCShopBuy) GetGainNum() int32 { - if x != nil { - return x.GainNum - } - return 0 -} - -//CS_JOINGAME -//请求的通知 -type CSJoinGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MsgType int32 `protobuf:"varint,1,opt,name=MsgType,proto3" json:"MsgType,omitempty"` //0.请求信息1.确认信息 - SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` //type=1发送,为服务器下发的数据,原数据发送 - Pos int32 `protobuf:"varint,3,opt,name=Pos,proto3" json:"Pos,omitempty"` //type=0时发送,为申请坐下的位置,索引0开始 - Agree bool `protobuf:"varint,4,opt,name=Agree,proto3" json:"Agree,omitempty"` //type=1时发送,true为同意,false为拒绝 -} - -func (x *CSJoinGame) Reset() { - *x = CSJoinGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSJoinGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSJoinGame) ProtoMessage() {} - -func (x *CSJoinGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[35] - 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 CSJoinGame.ProtoReflect.Descriptor instead. -func (*CSJoinGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{35} -} - -func (x *CSJoinGame) GetMsgType() int32 { - if x != nil { - return x.MsgType - } - return 0 -} - -func (x *CSJoinGame) GetSnId() int32 { - if x != nil { - return x.SnId - } - return 0 -} - -func (x *CSJoinGame) GetPos() int32 { - if x != nil { - return x.Pos - } - return 0 -} - -func (x *CSJoinGame) GetAgree() bool { - if x != nil { - return x.Agree - } - return false -} - -//SC_TJOINGAME -//请求的通知 -type SCJoinGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MsgType int32 `protobuf:"varint,1,opt,name=MsgType,proto3" json:"MsgType,omitempty"` //0.请求信息1.确认信息 - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` //type=0为申请者的昵称,和snid同步发送,广播范围是房间内用户 - SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` //type=0申请者ID - OpRetCode OpResultCode_Game `protobuf:"varint,4,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //type=1时,为申请的结果,为0成功,其他的为错误代码 1 座位已满 2 观战人数已满 -} - -func (x *SCJoinGame) Reset() { - *x = SCJoinGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCJoinGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCJoinGame) ProtoMessage() {} - -func (x *SCJoinGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[36] - 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 SCJoinGame.ProtoReflect.Descriptor instead. -func (*SCJoinGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{36} -} - -func (x *SCJoinGame) GetMsgType() int32 { - if x != nil { - return x.MsgType - } - return 0 -} - -func (x *SCJoinGame) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *SCJoinGame) GetSnId() int32 { - if x != nil { - return x.SnId - } - return 0 -} - -func (x *SCJoinGame) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//PACKET_CS_ENTERDGGAME -type CSEnterDgGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LoginType int32 `protobuf:"varint,1,opt,name=LoginType,proto3" json:"LoginType,omitempty"` //0.试玩登录1.正常登录 - DgGameId int32 `protobuf:"varint,2,opt,name=DgGameId,proto3" json:"DgGameId,omitempty"` //游戏ID - Domains string `protobuf:"bytes,3,opt,name=Domains,proto3" json:"Domains,omitempty"` //sdk -} - -func (x *CSEnterDgGame) Reset() { - *x = CSEnterDgGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[37] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSEnterDgGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSEnterDgGame) ProtoMessage() {} - -func (x *CSEnterDgGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[37] - 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 CSEnterDgGame.ProtoReflect.Descriptor instead. -func (*CSEnterDgGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{37} -} - -func (x *CSEnterDgGame) GetLoginType() int32 { - if x != nil { - return x.LoginType - } - return 0 -} - -func (x *CSEnterDgGame) GetDgGameId() int32 { - if x != nil { - return x.DgGameId - } - return 0 -} - -func (x *CSEnterDgGame) GetDomains() string { - if x != nil { - return x.Domains - } - return "" -} - -type SCEnterDgGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - LoginUrl string `protobuf:"bytes,2,opt,name=LoginUrl,proto3" json:"LoginUrl,omitempty"` - Token string `protobuf:"bytes,3,opt,name=Token,proto3" json:"Token,omitempty"` - DgGameId int32 `protobuf:"varint,4,opt,name=DgGameId,proto3" json:"DgGameId,omitempty"` //游戏ID - CodeId int32 `protobuf:"varint,5,opt,name=CodeId,proto3" json:"CodeId,omitempty"` - Domains string `protobuf:"bytes,6,opt,name=Domains,proto3" json:"Domains,omitempty"` - List []string `protobuf:"bytes,7,rep,name=List,proto3" json:"List,omitempty"` -} - -func (x *SCEnterDgGame) Reset() { - *x = SCEnterDgGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCEnterDgGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCEnterDgGame) ProtoMessage() {} - -func (x *SCEnterDgGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[38] - 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 SCEnterDgGame.ProtoReflect.Descriptor instead. -func (*SCEnterDgGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{38} -} - -func (x *SCEnterDgGame) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCEnterDgGame) GetLoginUrl() string { - if x != nil { - return x.LoginUrl - } - return "" -} - -func (x *SCEnterDgGame) GetToken() string { - if x != nil { - return x.Token - } - return "" -} - -func (x *SCEnterDgGame) GetDgGameId() int32 { - if x != nil { - return x.DgGameId - } - return 0 -} - -func (x *SCEnterDgGame) GetCodeId() int32 { - if x != nil { - return x.CodeId - } - return 0 -} - -func (x *SCEnterDgGame) GetDomains() string { - if x != nil { - return x.Domains - } - return "" -} - -func (x *SCEnterDgGame) GetList() []string { - if x != nil { - return x.List - } - return nil -} - -//PACKET_CS_LEAVEDGGAME -type CSLeaveDgGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSLeaveDgGame) Reset() { - *x = CSLeaveDgGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSLeaveDgGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSLeaveDgGame) ProtoMessage() {} - -func (x *CSLeaveDgGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[39] - 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 CSLeaveDgGame.ProtoReflect.Descriptor instead. -func (*CSLeaveDgGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{39} -} - -type SCLeaveDgGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCLeaveDgGame) Reset() { - *x = SCLeaveDgGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLeaveDgGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLeaveDgGame) ProtoMessage() {} - -func (x *SCLeaveDgGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[40] - 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 SCLeaveDgGame.ProtoReflect.Descriptor instead. -func (*SCLeaveDgGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{40} -} - -func (x *SCLeaveDgGame) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//第三方个人账户信息统计 -type CSThridAccountStatistic struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReqId int32 `protobuf:"varint,1,opt,name=ReqId,proto3" json:"ReqId,omitempty"` //-1返回全部平台信息,0为系统平台 -} - -func (x *CSThridAccountStatistic) Reset() { - *x = CSThridAccountStatistic{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSThridAccountStatistic) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSThridAccountStatistic) ProtoMessage() {} - -func (x *CSThridAccountStatistic) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[41] - 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 CSThridAccountStatistic.ProtoReflect.Descriptor instead. -func (*CSThridAccountStatistic) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{41} -} - -func (x *CSThridAccountStatistic) GetReqId() int32 { - if x != nil { - return x.ReqId - } - return 0 -} - -type ThridAccount struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ThridPlatformId int32 `protobuf:"varint,1,opt,name=ThridPlatformId,proto3" json:"ThridPlatformId,omitempty"` - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` - Status int32 `protobuf:"varint,3,opt,name=Status,proto3" json:"Status,omitempty"` //200正常,403异常 - Balance int64 `protobuf:"varint,4,opt,name=Balance,proto3" json:"Balance,omitempty"` -} - -func (x *ThridAccount) Reset() { - *x = ThridAccount{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ThridAccount) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ThridAccount) ProtoMessage() {} - -func (x *ThridAccount) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[42] - 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 ThridAccount.ProtoReflect.Descriptor instead. -func (*ThridAccount) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{42} -} - -func (x *ThridAccount) GetThridPlatformId() int32 { - if x != nil { - return x.ThridPlatformId - } - return 0 -} - -func (x *ThridAccount) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *ThridAccount) GetStatus() int32 { - if x != nil { - return x.Status - } - return 0 -} - -func (x *ThridAccount) GetBalance() int64 { - if x != nil { - return x.Balance - } - return 0 -} - -type SCThridAccountStatistic struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReqId int32 `protobuf:"varint,1,opt,name=ReqId,proto3" json:"ReqId,omitempty"` - Accounts []*ThridAccount `protobuf:"bytes,2,rep,name=Accounts,proto3" json:"Accounts,omitempty"` -} - -func (x *SCThridAccountStatistic) Reset() { - *x = SCThridAccountStatistic{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCThridAccountStatistic) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCThridAccountStatistic) ProtoMessage() {} - -func (x *SCThridAccountStatistic) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[43] - 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 SCThridAccountStatistic.ProtoReflect.Descriptor instead. -func (*SCThridAccountStatistic) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{43} -} - -func (x *SCThridAccountStatistic) GetReqId() int32 { - if x != nil { - return x.ReqId - } - return 0 -} - -func (x *SCThridAccountStatistic) GetAccounts() []*ThridAccount { - if x != nil { - return x.Accounts - } - return nil -} - -//第三方个人账户余额转入转出 -type CSThridAccountTransfer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FromId int32 `protobuf:"varint,1,opt,name=FromId,proto3" json:"FromId,omitempty"` - ToId int32 `protobuf:"varint,2,opt,name=ToId,proto3" json:"ToId,omitempty"` - Amount int64 `protobuf:"varint,3,opt,name=Amount,proto3" json:"Amount,omitempty"` -} - -func (x *CSThridAccountTransfer) Reset() { - *x = CSThridAccountTransfer{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSThridAccountTransfer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSThridAccountTransfer) ProtoMessage() {} - -func (x *CSThridAccountTransfer) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[44] - 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 CSThridAccountTransfer.ProtoReflect.Descriptor instead. -func (*CSThridAccountTransfer) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{44} -} - -func (x *CSThridAccountTransfer) GetFromId() int32 { - if x != nil { - return x.FromId - } - return 0 -} - -func (x *CSThridAccountTransfer) GetToId() int32 { - if x != nil { - return x.ToId - } - return 0 -} - -func (x *CSThridAccountTransfer) GetAmount() int64 { - if x != nil { - return x.Amount - } - return 0 -} - -type SCThridAccountTransfer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - Accounts []*ThridAccount `protobuf:"bytes,2,rep,name=Accounts,proto3" json:"Accounts,omitempty"` //OpRetCode为0时,两条数据 分别是from to -} - -func (x *SCThridAccountTransfer) Reset() { - *x = SCThridAccountTransfer{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[45] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCThridAccountTransfer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCThridAccountTransfer) ProtoMessage() {} - -func (x *SCThridAccountTransfer) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[45] - 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 SCThridAccountTransfer.ProtoReflect.Descriptor instead. -func (*SCThridAccountTransfer) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{45} -} - -func (x *SCThridAccountTransfer) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCThridAccountTransfer) GetAccounts() []*ThridAccount { - if x != nil { - return x.Accounts - } - return nil -} - -type CSEnterThridGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ThridGameId int32 `protobuf:"varint,2,opt,name=ThridGameId,proto3" json:"ThridGameId,omitempty"` //第三方游戏ID -} - -func (x *CSEnterThridGame) Reset() { - *x = CSEnterThridGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[46] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSEnterThridGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSEnterThridGame) ProtoMessage() {} - -func (x *CSEnterThridGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[46] - 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 CSEnterThridGame.ProtoReflect.Descriptor instead. -func (*CSEnterThridGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{46} -} - -func (x *CSEnterThridGame) GetThridGameId() int32 { - if x != nil { - return x.ThridGameId - } - return 0 -} - -type SCEnterThridGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - EnterUrl string `protobuf:"bytes,2,opt,name=EnterUrl,proto3" json:"EnterUrl,omitempty"` - ScreenOrientationType int32 `protobuf:"varint,3,opt,name=ScreenOrientationType,proto3" json:"ScreenOrientationType,omitempty"` - ThridGameId int32 `protobuf:"varint,4,opt,name=ThridGameId,proto3" json:"ThridGameId,omitempty"` //第三方游戏ID -} - -func (x *SCEnterThridGame) Reset() { - *x = SCEnterThridGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[47] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCEnterThridGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCEnterThridGame) ProtoMessage() {} - -func (x *SCEnterThridGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[47] - 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 SCEnterThridGame.ProtoReflect.Descriptor instead. -func (*SCEnterThridGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{47} -} - -func (x *SCEnterThridGame) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCEnterThridGame) GetEnterUrl() string { - if x != nil { - return x.EnterUrl - } - return "" -} - -func (x *SCEnterThridGame) GetScreenOrientationType() int32 { - if x != nil { - return x.ScreenOrientationType - } - return 0 -} - -func (x *SCEnterThridGame) GetThridGameId() int32 { - if x != nil { - return x.ThridGameId - } - return 0 -} - -type CSLeaveThridGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSLeaveThridGame) Reset() { - *x = CSLeaveThridGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[48] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSLeaveThridGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSLeaveThridGame) ProtoMessage() {} - -func (x *CSLeaveThridGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[48] - 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 CSLeaveThridGame.ProtoReflect.Descriptor instead. -func (*CSLeaveThridGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{48} -} - -type SCLeaveThridGame struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCLeaveThridGame) Reset() { - *x = SCLeaveThridGame{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[49] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLeaveThridGame) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLeaveThridGame) ProtoMessage() {} - -func (x *SCLeaveThridGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[49] - 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 SCLeaveThridGame.ProtoReflect.Descriptor instead. -func (*SCLeaveThridGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{49} -} - -func (x *SCLeaveThridGame) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -type CSThridGameList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSThridGameList) Reset() { - *x = CSThridGameList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSThridGameList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSThridGameList) ProtoMessage() {} - -func (x *CSThridGameList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[50] - 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 CSThridGameList.ProtoReflect.Descriptor instead. -func (*CSThridGameList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{50} -} - -type ThridGameDatas struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ThridGameId string `protobuf:"bytes,1,opt,name=ThridGameId,proto3" json:"ThridGameId,omitempty"` //第三方游戏ID - ThridGameName string `protobuf:"bytes,2,opt,name=ThridGameName,proto3" json:"ThridGameName,omitempty"` //游戏名 -} - -func (x *ThridGameDatas) Reset() { - *x = ThridGameDatas{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[51] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ThridGameDatas) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ThridGameDatas) ProtoMessage() {} - -func (x *ThridGameDatas) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[51] - 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 ThridGameDatas.ProtoReflect.Descriptor instead. -func (*ThridGameDatas) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{51} -} - -func (x *ThridGameDatas) GetThridGameId() string { - if x != nil { - return x.ThridGameId - } - return "" -} - -func (x *ThridGameDatas) GetThridGameName() string { - if x != nil { - return x.ThridGameName - } - return "" -} - -type ThridGamePlatforms struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ThridPlatformId int32 `protobuf:"varint,1,opt,name=ThridPlatformId,proto3" json:"ThridPlatformId,omitempty"` - ThridPlatformName string `protobuf:"bytes,2,opt,name=ThridPlatformName,proto3" json:"ThridPlatformName,omitempty"` //平台名 - GameDatas []*ThridGameDatas `protobuf:"bytes,3,rep,name=GameDatas,proto3" json:"GameDatas,omitempty"` -} - -func (x *ThridGamePlatforms) Reset() { - *x = ThridGamePlatforms{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[52] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ThridGamePlatforms) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ThridGamePlatforms) ProtoMessage() {} - -func (x *ThridGamePlatforms) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[52] - 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 ThridGamePlatforms.ProtoReflect.Descriptor instead. -func (*ThridGamePlatforms) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{52} -} - -func (x *ThridGamePlatforms) GetThridPlatformId() int32 { - if x != nil { - return x.ThridPlatformId - } - return 0 -} - -func (x *ThridGamePlatforms) GetThridPlatformName() string { - if x != nil { - return x.ThridPlatformName - } - return "" -} - -func (x *ThridGamePlatforms) GetGameDatas() []*ThridGameDatas { - if x != nil { - return x.GameDatas - } - return nil -} - -type SCThridGameList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - GamePlatforms []*ThridGamePlatforms `protobuf:"bytes,2,rep,name=GamePlatforms,proto3" json:"GamePlatforms,omitempty"` -} - -func (x *SCThridGameList) Reset() { - *x = SCThridGameList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[53] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCThridGameList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCThridGameList) ProtoMessage() {} - -func (x *SCThridGameList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[53] - 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 SCThridGameList.ProtoReflect.Descriptor instead. -func (*SCThridGameList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{53} -} - -func (x *SCThridGameList) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCThridGameList) GetGamePlatforms() []*ThridGamePlatforms { - if x != nil { - return x.GamePlatforms - } - return nil -} - -type CSThridGameBalanceUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSThridGameBalanceUpdate) Reset() { - *x = CSThridGameBalanceUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSThridGameBalanceUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSThridGameBalanceUpdate) ProtoMessage() {} - -func (x *CSThridGameBalanceUpdate) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[54] - 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 CSThridGameBalanceUpdate.ProtoReflect.Descriptor instead. -func (*CSThridGameBalanceUpdate) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{54} -} - -type SCThridGameBalanceUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - Coin int64 `protobuf:"varint,2,opt,name=Coin,proto3" json:"Coin,omitempty"` //玩家的余额 -} - -func (x *SCThridGameBalanceUpdate) Reset() { - *x = SCThridGameBalanceUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCThridGameBalanceUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCThridGameBalanceUpdate) ProtoMessage() {} - -func (x *SCThridGameBalanceUpdate) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[55] - 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 SCThridGameBalanceUpdate.ProtoReflect.Descriptor instead. -func (*SCThridGameBalanceUpdate) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{55} -} - -func (x *SCThridGameBalanceUpdate) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCThridGameBalanceUpdate) GetCoin() int64 { - if x != nil { - return x.Coin - } - return 0 -} - -type SCThridGameBalanceUpdateState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCThridGameBalanceUpdateState) Reset() { - *x = SCThridGameBalanceUpdateState{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCThridGameBalanceUpdateState) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCThridGameBalanceUpdateState) ProtoMessage() {} - -func (x *SCThridGameBalanceUpdateState) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[56] - 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 SCThridGameBalanceUpdateState.ProtoReflect.Descriptor instead. -func (*SCThridGameBalanceUpdateState) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{56} -} - -func (x *SCThridGameBalanceUpdateState) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//创建私人房间 -//PACKET_CS_CREATEPRIVATEROOM -type CSCreatePrivateRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id - Params []int32 `protobuf:"varint,2,rep,packed,name=Params,proto3" json:"Params,omitempty"` //场参数 1:局数索引(从1开始) 2:中途加入 3:同IP -} - -func (x *CSCreatePrivateRoom) Reset() { - *x = CSCreatePrivateRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSCreatePrivateRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSCreatePrivateRoom) ProtoMessage() {} - -func (x *CSCreatePrivateRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[57] - 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 CSCreatePrivateRoom.ProtoReflect.Descriptor instead. -func (*CSCreatePrivateRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{57} -} - -func (x *CSCreatePrivateRoom) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *CSCreatePrivateRoom) GetParams() []int32 { - if x != nil { - return x.Params - } - return nil -} - -//创建私人房间 -//PACKET_SC_CREATEPRIVATEROOM -type SCCreatePrivateRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - //游戏ID - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id - Params []int32 `protobuf:"varint,2,rep,packed,name=Params,proto3" json:"Params,omitempty"` //场参数 1:局数索引(从1开始) 2:中途加入 3:同IP - RoomId int32 `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - OpRetCode OpResultCode_Game `protobuf:"varint,4,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCCreatePrivateRoom) Reset() { - *x = SCCreatePrivateRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[58] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCCreatePrivateRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCCreatePrivateRoom) ProtoMessage() {} - -func (x *SCCreatePrivateRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[58] - 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 SCCreatePrivateRoom.ProtoReflect.Descriptor instead. -func (*SCCreatePrivateRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{58} -} - -func (x *SCCreatePrivateRoom) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *SCCreatePrivateRoom) GetParams() []int32 { - if x != nil { - return x.Params - } - return nil -} - -func (x *SCCreatePrivateRoom) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCCreatePrivateRoom) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//个人创建的房间信息 -type PrivateRoomInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id - RoomId int32 `protobuf:"varint,2,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - CurrRound int32 `protobuf:"varint,3,opt,name=CurrRound,proto3" json:"CurrRound,omitempty"` //当前第几轮 - MaxRound int32 `protobuf:"varint,4,opt,name=MaxRound,proto3" json:"MaxRound,omitempty"` //最多多少轮 - CurrNum int32 `protobuf:"varint,5,opt,name=CurrNum,proto3" json:"CurrNum,omitempty"` //当前人数 - MaxPlayer int32 `protobuf:"varint,6,opt,name=MaxPlayer,proto3" json:"MaxPlayer,omitempty"` //最大人数 - CreateTs int32 `protobuf:"varint,7,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //创建时间戳 -} - -func (x *PrivateRoomInfo) Reset() { - *x = PrivateRoomInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[59] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrivateRoomInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrivateRoomInfo) ProtoMessage() {} - -func (x *PrivateRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[59] - 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 PrivateRoomInfo.ProtoReflect.Descriptor instead. -func (*PrivateRoomInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{59} -} - -func (x *PrivateRoomInfo) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *PrivateRoomInfo) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *PrivateRoomInfo) GetCurrRound() int32 { - if x != nil { - return x.CurrRound - } - return 0 -} - -func (x *PrivateRoomInfo) GetMaxRound() int32 { - if x != nil { - return x.MaxRound - } - return 0 -} - -func (x *PrivateRoomInfo) GetCurrNum() int32 { - if x != nil { - return x.CurrNum - } - return 0 -} - -func (x *PrivateRoomInfo) GetMaxPlayer() int32 { - if x != nil { - return x.MaxPlayer - } - return 0 -} - -func (x *PrivateRoomInfo) GetCreateTs() int32 { - if x != nil { - return x.CreateTs - } - return 0 -} - -//获取代开的房间列表 -//PACKET_CS_GETPRIVATEROOMLIST -type CSGetPrivateRoomList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSGetPrivateRoomList) Reset() { - *x = CSGetPrivateRoomList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[60] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSGetPrivateRoomList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSGetPrivateRoomList) ProtoMessage() {} - -func (x *CSGetPrivateRoomList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[60] - 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 CSGetPrivateRoomList.ProtoReflect.Descriptor instead. -func (*CSGetPrivateRoomList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{60} -} - -//PACKET_SC_GETPRIVATEROOMLIST -type SCGetPrivateRoomList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Datas []*PrivateRoomInfo `protobuf:"bytes,1,rep,name=Datas,proto3" json:"Datas,omitempty"` //房间列表 -} - -func (x *SCGetPrivateRoomList) Reset() { - *x = SCGetPrivateRoomList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCGetPrivateRoomList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCGetPrivateRoomList) ProtoMessage() {} - -func (x *SCGetPrivateRoomList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[61] - 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 SCGetPrivateRoomList.ProtoReflect.Descriptor instead. -func (*SCGetPrivateRoomList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{61} -} - -func (x *SCGetPrivateRoomList) GetDatas() []*PrivateRoomInfo { - if x != nil { - return x.Datas - } - return nil -} - -//获取代开的房间历史记录 -//PACKET_CS_GETPRIVATEROOMHISTORY -type CSGetPrivateRoomHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - QueryTime int32 `protobuf:"varint,1,opt,name=QueryTime,proto3" json:"QueryTime,omitempty"` //查询日期 YYYYMMDD -} - -func (x *CSGetPrivateRoomHistory) Reset() { - *x = CSGetPrivateRoomHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSGetPrivateRoomHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSGetPrivateRoomHistory) ProtoMessage() {} - -func (x *CSGetPrivateRoomHistory) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[62] - 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 CSGetPrivateRoomHistory.ProtoReflect.Descriptor instead. -func (*CSGetPrivateRoomHistory) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{62} -} - -func (x *CSGetPrivateRoomHistory) GetQueryTime() int32 { - if x != nil { - return x.QueryTime - } - return 0 -} - -//已开房间历史记录 -type PrivateRoomHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id - RoomId int32 `protobuf:"varint,2,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - CreateTime int32 `protobuf:"varint,3,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` //创建时间,时间戳 - DestroyTime int32 `protobuf:"varint,4,opt,name=DestroyTime,proto3" json:"DestroyTime,omitempty"` //结束时间,时间戳 - CreateFee int32 `protobuf:"varint,5,opt,name=CreateFee,proto3" json:"CreateFee,omitempty"` //房费 -} - -func (x *PrivateRoomHistory) Reset() { - *x = PrivateRoomHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrivateRoomHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrivateRoomHistory) ProtoMessage() {} - -func (x *PrivateRoomHistory) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[63] - 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 PrivateRoomHistory.ProtoReflect.Descriptor instead. -func (*PrivateRoomHistory) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{63} -} - -func (x *PrivateRoomHistory) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *PrivateRoomHistory) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *PrivateRoomHistory) GetCreateTime() int32 { - if x != nil { - return x.CreateTime - } - return 0 -} - -func (x *PrivateRoomHistory) GetDestroyTime() int32 { - if x != nil { - return x.DestroyTime - } - return 0 -} - -func (x *PrivateRoomHistory) GetCreateFee() int32 { - if x != nil { - return x.CreateFee - } - return 0 -} - -//PACKET_SC_GETPRIVATEROOMHISTORY -type SCGetPrivateRoomHistory struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - QueryTime int32 `protobuf:"varint,1,opt,name=QueryTime,proto3" json:"QueryTime,omitempty"` //查询日期 - Datas []*PrivateRoomHistory `protobuf:"bytes,2,rep,name=Datas,proto3" json:"Datas,omitempty"` //历史开房记录 -} - -func (x *SCGetPrivateRoomHistory) Reset() { - *x = SCGetPrivateRoomHistory{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCGetPrivateRoomHistory) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCGetPrivateRoomHistory) ProtoMessage() {} - -func (x *SCGetPrivateRoomHistory) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[64] - 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 SCGetPrivateRoomHistory.ProtoReflect.Descriptor instead. -func (*SCGetPrivateRoomHistory) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{64} -} - -func (x *SCGetPrivateRoomHistory) GetQueryTime() int32 { - if x != nil { - return x.QueryTime - } - return 0 -} - -func (x *SCGetPrivateRoomHistory) GetDatas() []*PrivateRoomHistory { - if x != nil { - return x.Datas - } - return nil -} - -//PACKET_CS_DESTROYPRIVATEROOM -type CSDestroyPrivateRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` -} - -func (x *CSDestroyPrivateRoom) Reset() { - *x = CSDestroyPrivateRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSDestroyPrivateRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSDestroyPrivateRoom) ProtoMessage() {} - -func (x *CSDestroyPrivateRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[65] - 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 CSDestroyPrivateRoom.ProtoReflect.Descriptor instead. -func (*CSDestroyPrivateRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{65} -} - -func (x *CSDestroyPrivateRoom) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -//PACKET_SC_DESTROYPRIVATEROOM -type SCDestroyPrivateRoom struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - OpRetCode OpResultCode_Game `protobuf:"varint,2,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 - State int32 `protobuf:"varint,3,opt,name=State,proto3" json:"State,omitempty"` //状态 0:删除中 1:已删除 -} - -func (x *SCDestroyPrivateRoom) Reset() { - *x = SCDestroyPrivateRoom{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[66] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCDestroyPrivateRoom) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCDestroyPrivateRoom) ProtoMessage() {} - -func (x *SCDestroyPrivateRoom) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[66] - 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 SCDestroyPrivateRoom.ProtoReflect.Descriptor instead. -func (*SCDestroyPrivateRoom) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{66} -} - -func (x *SCDestroyPrivateRoom) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *SCDestroyPrivateRoom) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -func (x *SCDestroyPrivateRoom) GetState() int32 { - if x != nil { - return x.State - } - return 0 -} - -//PACKET_CS_QUERYROOMINFO -type CSQueryRoomInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameIds []int32 `protobuf:"varint,1,rep,packed,name=GameIds,proto3" json:"GameIds,omitempty"` - GameSite int32 `protobuf:"varint,2,opt,name=GameSite,proto3" json:"GameSite,omitempty"` //1.初级 2.中级 3.高级 - Id []int32 `protobuf:"varint,3,rep,packed,name=Id,proto3" json:"Id,omitempty"` //gamefreeid - SceneMode int32 `protobuf:"varint,4,opt,name=SceneMode,proto3" json:"SceneMode,omitempty"` // 0公共房 2私人房 -} - -func (x *CSQueryRoomInfo) Reset() { - *x = CSQueryRoomInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[67] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSQueryRoomInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSQueryRoomInfo) ProtoMessage() {} - -func (x *CSQueryRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[67] - 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 CSQueryRoomInfo.ProtoReflect.Descriptor instead. -func (*CSQueryRoomInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{67} -} - -func (x *CSQueryRoomInfo) GetGameIds() []int32 { - if x != nil { - return x.GameIds - } - return nil -} - -func (x *CSQueryRoomInfo) GetGameSite() int32 { - if x != nil { - return x.GameSite - } - return 0 -} - -func (x *CSQueryRoomInfo) GetId() []int32 { - if x != nil { - return x.Id - } - return nil -} - -func (x *CSQueryRoomInfo) GetSceneMode() int32 { - if x != nil { - return x.SceneMode - } - return 0 -} - -//个人创建的房间信息 -type QRoomInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id - GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` - RoomId int32 `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 - BaseCoin int64 `protobuf:"varint,4,opt,name=BaseCoin,proto3" json:"BaseCoin,omitempty"` - LimitCoin int64 `protobuf:"varint,5,opt,name=LimitCoin,proto3" json:"LimitCoin,omitempty"` - CurrNum int32 `protobuf:"varint,6,opt,name=CurrNum,proto3" json:"CurrNum,omitempty"` //当前人数 - MaxPlayer int32 `protobuf:"varint,7,opt,name=MaxPlayer,proto3" json:"MaxPlayer,omitempty"` //最大人数 - Creator int32 `protobuf:"varint,8,opt,name=Creator,proto3" json:"Creator,omitempty"` - CreateTs int32 `protobuf:"varint,9,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //创建时间戳 - Params []int32 `protobuf:"varint,10,rep,packed,name=Params,proto3" json:"Params,omitempty"` // 建房参数 -} - -func (x *QRoomInfo) Reset() { - *x = QRoomInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[68] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QRoomInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QRoomInfo) ProtoMessage() {} - -func (x *QRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[68] - 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 QRoomInfo.ProtoReflect.Descriptor instead. -func (*QRoomInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{68} -} - -func (x *QRoomInfo) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *QRoomInfo) GetGameId() int32 { - if x != nil { - return x.GameId - } - return 0 -} - -func (x *QRoomInfo) GetRoomId() int32 { - if x != nil { - return x.RoomId - } - return 0 -} - -func (x *QRoomInfo) GetBaseCoin() int64 { - if x != nil { - return x.BaseCoin - } - return 0 -} - -func (x *QRoomInfo) GetLimitCoin() int64 { - if x != nil { - return x.LimitCoin - } - return 0 -} - -func (x *QRoomInfo) GetCurrNum() int32 { - if x != nil { - return x.CurrNum - } - return 0 -} - -func (x *QRoomInfo) GetMaxPlayer() int32 { - if x != nil { - return x.MaxPlayer - } - return 0 -} - -func (x *QRoomInfo) GetCreator() int32 { - if x != nil { - return x.Creator - } - return 0 -} - -func (x *QRoomInfo) GetCreateTs() int32 { - if x != nil { - return x.CreateTs - } - return 0 -} - -func (x *QRoomInfo) GetParams() []int32 { - if x != nil { - return x.Params - } - return nil -} - -//PACKET_SC_QUERYROOMINFO -type SCQueryRoomInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameIds []int32 `protobuf:"varint,1,rep,packed,name=GameIds,proto3" json:"GameIds,omitempty"` - GameSite int32 `protobuf:"varint,2,opt,name=GameSite,proto3" json:"GameSite,omitempty"` //1.初级 2.中级 3.高级 - RoomInfo []*QRoomInfo `protobuf:"bytes,3,rep,name=RoomInfo,proto3" json:"RoomInfo,omitempty"` //房间列表 - OpRetCode OpResultCode_Game `protobuf:"varint,4,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 -} - -func (x *SCQueryRoomInfo) Reset() { - *x = SCQueryRoomInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[69] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCQueryRoomInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCQueryRoomInfo) ProtoMessage() {} - -func (x *SCQueryRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[69] - 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 SCQueryRoomInfo.ProtoReflect.Descriptor instead. -func (*SCQueryRoomInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{69} -} - -func (x *SCQueryRoomInfo) GetGameIds() []int32 { - if x != nil { - return x.GameIds - } - return nil -} - -func (x *SCQueryRoomInfo) GetGameSite() int32 { - if x != nil { - return x.GameSite - } - return 0 -} - -func (x *SCQueryRoomInfo) GetRoomInfo() []*QRoomInfo { - if x != nil { - return x.RoomInfo - } - return nil -} - -func (x *SCQueryRoomInfo) GetOpRetCode() OpResultCode_Game { - if x != nil { - return x.OpRetCode - } - return OpResultCode_Game_OPRC_Sucess_Game -} - -//注册观察者,用于推送游戏的状态信息 -//PACKET_CS_GAMEOBSERVE -type CSGameObserve struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameId int32 `protobuf:"varint,1,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏ID - StartOrEnd bool `protobuf:"varint,2,opt,name=StartOrEnd,proto3" json:"StartOrEnd,omitempty"` //打开或者关闭 -} - -func (x *CSGameObserve) Reset() { - *x = CSGameObserve{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[70] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSGameObserve) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSGameObserve) ProtoMessage() {} - -func (x *CSGameObserve) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[70] - 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 CSGameObserve.ProtoReflect.Descriptor instead. -func (*CSGameObserve) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{70} -} - -func (x *CSGameObserve) GetGameId() int32 { - if x != nil { - return x.GameId - } - return 0 -} - -func (x *CSGameObserve) GetStartOrEnd() bool { - if x != nil { - return x.StartOrEnd - } - return false -} - -//PACKET_SC_GAMESUBLIST -type GameSubRecord struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` - LogCnt int32 `protobuf:"varint,2,opt,name=LogCnt,proto3" json:"LogCnt,omitempty"` - NewLog int32 `protobuf:"varint,3,opt,name=NewLog,proto3" json:"NewLog,omitempty"` //新结果 - TotleLog []int32 `protobuf:"varint,4,rep,packed,name=TotleLog,proto3" json:"TotleLog,omitempty"` //最近几局的中奖结果 -} - -func (x *GameSubRecord) Reset() { - *x = GameSubRecord{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[71] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GameSubRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GameSubRecord) ProtoMessage() {} - -func (x *GameSubRecord) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[71] - 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 GameSubRecord.ProtoReflect.Descriptor instead. -func (*GameSubRecord) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{71} -} - -func (x *GameSubRecord) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *GameSubRecord) GetLogCnt() int32 { - if x != nil { - return x.LogCnt - } - return 0 -} - -func (x *GameSubRecord) GetNewLog() int32 { - if x != nil { - return x.NewLog - } - return 0 -} - -func (x *GameSubRecord) GetTotleLog() []int32 { - if x != nil { - return x.TotleLog - } - return nil -} - -type SCGameSubList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - List []*GameSubRecord `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` -} - -func (x *SCGameSubList) Reset() { - *x = SCGameSubList{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[72] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCGameSubList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCGameSubList) ProtoMessage() {} - -func (x *SCGameSubList) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[72] - 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 SCGameSubList.ProtoReflect.Descriptor instead. -func (*SCGameSubList) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{72} -} - -func (x *SCGameSubList) GetList() []*GameSubRecord { - if x != nil { - return x.List - } - return nil -} - -//游戏中的状态 -type GameState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` - Ts int64 `protobuf:"varint,2,opt,name=Ts,proto3" json:"Ts,omitempty"` - Sec int32 `protobuf:"varint,3,opt,name=Sec,proto3" json:"Sec,omitempty"` -} - -func (x *GameState) Reset() { - *x = GameState{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[73] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GameState) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GameState) ProtoMessage() {} - -func (x *GameState) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[73] - 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 GameState.ProtoReflect.Descriptor instead. -func (*GameState) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{73} -} - -func (x *GameState) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *GameState) GetTs() int64 { - if x != nil { - return x.Ts - } - return 0 -} - -func (x *GameState) GetSec() int32 { - if x != nil { - return x.Sec - } - return 0 -} - -type SCGameState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - List []*GameState `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` -} - -func (x *SCGameState) Reset() { - *x = SCGameState{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[74] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCGameState) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCGameState) ProtoMessage() {} - -func (x *SCGameState) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[74] - 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 SCGameState.ProtoReflect.Descriptor instead. -func (*SCGameState) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{74} -} - -func (x *SCGameState) GetList() []*GameState { - if x != nil { - return x.List - } - return nil -} - -//奖金池数据 -type LotteryData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` - Value int64 `protobuf:"varint,2,opt,name=Value,proto3" json:"Value,omitempty"` -} - -func (x *LotteryData) Reset() { - *x = LotteryData{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LotteryData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LotteryData) ProtoMessage() {} - -func (x *LotteryData) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[75] - 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 LotteryData.ProtoReflect.Descriptor instead. -func (*LotteryData) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{75} -} - -func (x *LotteryData) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *LotteryData) GetValue() int64 { - if x != nil { - return x.Value - } - return 0 -} - -//奖金池同步 PACKET_SC_LOTTERYSYNC -type SCLotterySync struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Datas []*LotteryData `protobuf:"bytes,1,rep,name=Datas,proto3" json:"Datas,omitempty"` -} - -func (x *SCLotterySync) Reset() { - *x = SCLotterySync{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLotterySync) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLotterySync) ProtoMessage() {} - -func (x *SCLotterySync) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[76] - 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 SCLotterySync.ProtoReflect.Descriptor instead. -func (*SCLotterySync) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{76} -} - -func (x *SCLotterySync) GetDatas() []*LotteryData { - if x != nil { - return x.Datas - } - return nil -} - -//PACKET_CS_LOTTERYLOG = 2288; -type CSLotteryLog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` -} - -func (x *CSLotteryLog) Reset() { - *x = CSLotteryLog{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSLotteryLog) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSLotteryLog) ProtoMessage() {} - -func (x *CSLotteryLog) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[77] - 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 CSLotteryLog.ProtoReflect.Descriptor instead. -func (*CSLotteryLog) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{77} -} - -func (x *CSLotteryLog) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -//奖池中奖记录 -type LotteryLog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Time int32 `protobuf:"varint,1,opt,name=Time,proto3" json:"Time,omitempty"` - NickName string `protobuf:"bytes,2,opt,name=NickName,proto3" json:"NickName,omitempty"` - Card []int32 `protobuf:"varint,3,rep,packed,name=Card,proto3" json:"Card,omitempty"` - Kind int32 `protobuf:"varint,4,opt,name=Kind,proto3" json:"Kind,omitempty"` - Coin int32 `protobuf:"varint,5,opt,name=Coin,proto3" json:"Coin,omitempty"` -} - -func (x *LotteryLog) Reset() { - *x = LotteryLog{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[78] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LotteryLog) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LotteryLog) ProtoMessage() {} - -func (x *LotteryLog) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[78] - 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 LotteryLog.ProtoReflect.Descriptor instead. -func (*LotteryLog) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{78} -} - -func (x *LotteryLog) GetTime() int32 { - if x != nil { - return x.Time - } - return 0 -} - -func (x *LotteryLog) GetNickName() string { - if x != nil { - return x.NickName - } - return "" -} - -func (x *LotteryLog) GetCard() []int32 { - if x != nil { - return x.Card - } - return nil -} - -func (x *LotteryLog) GetKind() int32 { - if x != nil { - return x.Kind - } - return 0 -} - -func (x *LotteryLog) GetCoin() int32 { - if x != nil { - return x.Coin - } - return 0 -} - -//PACKET_SC_LOTTERYLOG = 2289; -type SCLotteryLog struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` - Logs []*LotteryLog `protobuf:"bytes,2,rep,name=Logs,proto3" json:"Logs,omitempty"` -} - -func (x *SCLotteryLog) Reset() { - *x = SCLotteryLog{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLotteryLog) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLotteryLog) ProtoMessage() {} - -func (x *SCLotteryLog) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[79] - 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 SCLotteryLog.ProtoReflect.Descriptor instead. -func (*SCLotteryLog) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{79} -} - -func (x *SCLotteryLog) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *SCLotteryLog) GetLogs() []*LotteryLog { - if x != nil { - return x.Logs - } - return nil -} - -//PACKET_SC_LOTTERYBILL = 2290 -type SCLotteryBill struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` - SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` - Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` - Kind int32 `protobuf:"varint,4,opt,name=Kind,proto3" json:"Kind,omitempty"` - Card []int32 `protobuf:"varint,5,rep,packed,name=Card,proto3" json:"Card,omitempty"` - Value int64 `protobuf:"varint,6,opt,name=Value,proto3" json:"Value,omitempty"` -} - -func (x *SCLotteryBill) Reset() { - *x = SCLotteryBill{} - if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[80] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCLotteryBill) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCLotteryBill) ProtoMessage() {} - -func (x *SCLotteryBill) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[80] - 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 SCLotteryBill.ProtoReflect.Descriptor instead. -func (*SCLotteryBill) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{80} -} - -func (x *SCLotteryBill) GetGameFreeId() int32 { - if x != nil { - return x.GameFreeId - } - return 0 -} - -func (x *SCLotteryBill) GetSnId() int32 { - if x != nil { - return x.SnId - } - return 0 -} - -func (x *SCLotteryBill) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *SCLotteryBill) GetKind() int32 { - if x != nil { - return x.Kind - } - return 0 -} - -func (x *SCLotteryBill) GetCard() []int32 { - if x != nil { - return x.Card - } - return nil -} - -func (x *SCLotteryBill) GetValue() int64 { - if x != nil { - return x.Value + return x.Reason } return 0 } @@ -5669,7 +1309,7 @@ type GameConfig1 struct { func (x *GameConfig1) Reset() { *x = GameConfig1{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[81] + mi := &file_game_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5682,7 +1322,7 @@ func (x *GameConfig1) String() string { func (*GameConfig1) ProtoMessage() {} func (x *GameConfig1) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[81] + mi := &file_game_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5695,7 +1335,7 @@ func (x *GameConfig1) ProtoReflect() protoreflect.Message { // Deprecated: Use GameConfig1.ProtoReflect.Descriptor instead. func (*GameConfig1) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{81} + return file_game_proto_rawDescGZIP(), []int{10} } func (x *GameConfig1) GetLogicId() int32 { @@ -5803,7 +1443,7 @@ func (x *GameConfig1) GetSceneAdd() int32 { return 0 } -//PACKET_CS_GETGAMECONFIG = 2231 +//PACKET_CS_GETGAMECONFIG type CSGetGameConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5817,7 +1457,7 @@ type CSGetGameConfig struct { func (x *CSGetGameConfig) Reset() { *x = CSGetGameConfig{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[82] + mi := &file_game_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5830,7 +1470,7 @@ func (x *CSGetGameConfig) String() string { func (*CSGetGameConfig) ProtoMessage() {} func (x *CSGetGameConfig) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[82] + mi := &file_game_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5843,7 +1483,7 @@ func (x *CSGetGameConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use CSGetGameConfig.ProtoReflect.Descriptor instead. func (*CSGetGameConfig) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{82} + return file_game_proto_rawDescGZIP(), []int{11} } func (x *CSGetGameConfig) GetPlatform() string { @@ -5879,7 +1519,7 @@ type ChessRankInfo struct { func (x *ChessRankInfo) Reset() { *x = ChessRankInfo{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[83] + mi := &file_game_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5892,7 +1532,7 @@ func (x *ChessRankInfo) String() string { func (*ChessRankInfo) ProtoMessage() {} func (x *ChessRankInfo) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[83] + mi := &file_game_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5905,7 +1545,7 @@ func (x *ChessRankInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ChessRankInfo.ProtoReflect.Descriptor instead. func (*ChessRankInfo) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{83} + return file_game_proto_rawDescGZIP(), []int{12} } func (x *ChessRankInfo) GetScore() int32 { @@ -5922,7 +1562,7 @@ func (x *ChessRankInfo) GetName() string { return "" } -//PACKET_SC_GETGAMECONFIG = 2232 +//PACKET_SC_GETGAMECONFIG type SCGetGameConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -5936,7 +1576,7 @@ type SCGetGameConfig struct { func (x *SCGetGameConfig) Reset() { *x = SCGetGameConfig{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[84] + mi := &file_game_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5949,7 +1589,7 @@ func (x *SCGetGameConfig) String() string { func (*SCGetGameConfig) ProtoMessage() {} func (x *SCGetGameConfig) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[84] + mi := &file_game_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5962,7 +1602,7 @@ func (x *SCGetGameConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SCGetGameConfig.ProtoReflect.Descriptor instead. func (*SCGetGameConfig) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{84} + return file_game_proto_rawDescGZIP(), []int{13} } func (x *SCGetGameConfig) GetGameCfg() []*GameConfig1 { @@ -5998,7 +1638,7 @@ type SCChangeGameStatus struct { func (x *SCChangeGameStatus) Reset() { *x = SCChangeGameStatus{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[85] + mi := &file_game_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6011,7 +1651,7 @@ func (x *SCChangeGameStatus) String() string { func (*SCChangeGameStatus) ProtoMessage() {} func (x *SCChangeGameStatus) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[85] + mi := &file_game_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6024,7 +1664,7 @@ func (x *SCChangeGameStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use SCChangeGameStatus.ProtoReflect.Descriptor instead. func (*SCChangeGameStatus) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{85} + return file_game_proto_rawDescGZIP(), []int{14} } func (x *SCChangeGameStatus) GetGameCfg() []*GameConfig1 { @@ -6047,7 +1687,7 @@ type SCChangeEntrySwitch struct { func (x *SCChangeEntrySwitch) Reset() { *x = SCChangeEntrySwitch{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[86] + mi := &file_game_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6060,7 +1700,7 @@ func (x *SCChangeEntrySwitch) String() string { func (*SCChangeEntrySwitch) ProtoMessage() {} func (x *SCChangeEntrySwitch) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[86] + mi := &file_game_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6073,7 +1713,7 @@ func (x *SCChangeEntrySwitch) ProtoReflect() protoreflect.Message { // Deprecated: Use SCChangeEntrySwitch.ProtoReflect.Descriptor instead. func (*SCChangeEntrySwitch) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{86} + return file_game_proto_rawDescGZIP(), []int{15} } func (x *SCChangeEntrySwitch) GetIndex() int32 { @@ -6090,36 +1730,40 @@ func (x *SCChangeEntrySwitch) GetSwitch() []bool { return nil } -//PACKET_CS_ENTERGAME -type CSEnterGame struct { +//创建竞技馆私人房间 +//PACKET_CS_CREATEPRIVATEROOM +type CSCreatePrivateRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //游戏id - OpParams []int32 `protobuf:"varint,2,rep,packed,name=OpParams,proto3" json:"OpParams,omitempty"` - Platform string `protobuf:"bytes,3,opt,name=Platform,proto3" json:"Platform,omitempty"` - ApkVer int32 `protobuf:"varint,4,opt,name=ApkVer,proto3" json:"ApkVer,omitempty"` - ResVer int32 `protobuf:"varint,5,opt,name=ResVer,proto3" json:"ResVer,omitempty"` + GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id + RoomTypeId int32 `protobuf:"varint,2,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` //房间类型id + RoomConfigId int32 `protobuf:"varint,3,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id + Round int32 `protobuf:"varint,4,opt,name=Round,proto3" json:"Round,omitempty"` //局数 + PlayerNum int32 `protobuf:"varint,5,opt,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` //人数 + NeedPassword int32 `protobuf:"varint,6,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` //是否需要密码 1需要 + CostType int32 `protobuf:"varint,7,opt,name=CostType,proto3" json:"CostType,omitempty"` // 房卡支付方式 1AA 2房主 + Voice int32 `protobuf:"varint,8,opt,name=Voice,proto3" json:"Voice,omitempty"` //是否开启语音 1开启 } -func (x *CSEnterGame) Reset() { - *x = CSEnterGame{} +func (x *CSCreatePrivateRoom) Reset() { + *x = CSCreatePrivateRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[87] + mi := &file_game_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CSEnterGame) String() string { +func (x *CSCreatePrivateRoom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CSEnterGame) ProtoMessage() {} +func (*CSCreatePrivateRoom) ProtoMessage() {} -func (x *CSEnterGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[87] +func (x *CSCreatePrivateRoom) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6130,78 +1774,103 @@ func (x *CSEnterGame) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CSEnterGame.ProtoReflect.Descriptor instead. -func (*CSEnterGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{87} +// Deprecated: Use CSCreatePrivateRoom.ProtoReflect.Descriptor instead. +func (*CSCreatePrivateRoom) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{16} } -func (x *CSEnterGame) GetId() int32 { +func (x *CSCreatePrivateRoom) GetGameFreeId() int32 { if x != nil { - return x.Id + return x.GameFreeId } return 0 } -func (x *CSEnterGame) GetOpParams() []int32 { +func (x *CSCreatePrivateRoom) GetRoomTypeId() int32 { if x != nil { - return x.OpParams - } - return nil -} - -func (x *CSEnterGame) GetPlatform() string { - if x != nil { - return x.Platform - } - return "" -} - -func (x *CSEnterGame) GetApkVer() int32 { - if x != nil { - return x.ApkVer + return x.RoomTypeId } return 0 } -func (x *CSEnterGame) GetResVer() int32 { +func (x *CSCreatePrivateRoom) GetRoomConfigId() int32 { if x != nil { - return x.ResVer + return x.RoomConfigId } return 0 } -//PACKET_SC_ENTERGAME -type SCEnterGame struct { +func (x *CSCreatePrivateRoom) GetRound() int32 { + if x != nil { + return x.Round + } + return 0 +} + +func (x *CSCreatePrivateRoom) GetPlayerNum() int32 { + if x != nil { + return x.PlayerNum + } + return 0 +} + +func (x *CSCreatePrivateRoom) GetNeedPassword() int32 { + if x != nil { + return x.NeedPassword + } + return 0 +} + +func (x *CSCreatePrivateRoom) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *CSCreatePrivateRoom) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + +//PACKET_SC_CREATEPRIVATEROOM +type SCCreatePrivateRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpCode,omitempty"` //操作码 - Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // - OpParams []int32 `protobuf:"varint,3,rep,packed,name=OpParams,proto3" json:"OpParams,omitempty"` - MinApkVer int32 `protobuf:"varint,4,opt,name=MinApkVer,proto3" json:"MinApkVer,omitempty"` //最低apk版本号 - LatestApkVer int32 `protobuf:"varint,5,opt,name=LatestApkVer,proto3" json:"LatestApkVer,omitempty"` //最新apk版本号 - MinResVer int32 `protobuf:"varint,6,opt,name=MinResVer,proto3" json:"MinResVer,omitempty"` //最低资源版本号 - LatestResVer int32 `protobuf:"varint,7,opt,name=LatestResVer,proto3" json:"LatestResVer,omitempty"` //最新资源版本号 + OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 + GameFreeId int32 `protobuf:"varint,2,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id + RoomTypeId int32 `protobuf:"varint,3,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` //房间类型id + RoomConfigId int32 `protobuf:"varint,4,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id + Round int32 `protobuf:"varint,5,opt,name=Round,proto3" json:"Round,omitempty"` //局数 + PlayerNum int32 `protobuf:"varint,6,opt,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` //人数 + NeedPassword int32 `protobuf:"varint,7,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` //是否需要密码 1需要 + CostType int32 `protobuf:"varint,8,opt,name=CostType,proto3" json:"CostType,omitempty"` //房卡支付方式 1AA 2房主 + Voice int32 `protobuf:"varint,9,opt,name=Voice,proto3" json:"Voice,omitempty"` //是否开启语音 1开启 + RoomId int32 `protobuf:"varint,10,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间id + Password string `protobuf:"bytes,11,opt,name=Password,proto3" json:"Password,omitempty"` //房间密码 } -func (x *SCEnterGame) Reset() { - *x = SCEnterGame{} +func (x *SCCreatePrivateRoom) Reset() { + *x = SCCreatePrivateRoom{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[88] + mi := &file_game_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SCEnterGame) String() string { +func (x *SCCreatePrivateRoom) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SCEnterGame) ProtoMessage() {} +func (*SCCreatePrivateRoom) ProtoMessage() {} -func (x *SCEnterGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[88] +func (x *SCCreatePrivateRoom) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6212,87 +1881,394 @@ func (x *SCEnterGame) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SCEnterGame.ProtoReflect.Descriptor instead. -func (*SCEnterGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{88} +// Deprecated: Use SCCreatePrivateRoom.ProtoReflect.Descriptor instead. +func (*SCCreatePrivateRoom) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{17} } -func (x *SCEnterGame) GetOpCode() OpResultCode_Game { +func (x *SCCreatePrivateRoom) GetOpRetCode() OpResultCode_Game { if x != nil { - return x.OpCode + return x.OpRetCode } return OpResultCode_Game_OPRC_Sucess_Game } -func (x *SCEnterGame) GetId() int32 { +func (x *SCCreatePrivateRoom) GetGameFreeId() int32 { if x != nil { - return x.Id + return x.GameFreeId } return 0 } -func (x *SCEnterGame) GetOpParams() []int32 { +func (x *SCCreatePrivateRoom) GetRoomTypeId() int32 { if x != nil { - return x.OpParams + return x.RoomTypeId + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetRound() int32 { + if x != nil { + return x.Round + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetPlayerNum() int32 { + if x != nil { + return x.PlayerNum + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetNeedPassword() int32 { + if x != nil { + return x.NeedPassword + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *SCCreatePrivateRoom) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +//PACKET_CS_GETPRIVATEROOMLIST +type CSGetPrivateRoomList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoomConfigId int32 `protobuf:"varint,1,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id + GameFreeId int32 `protobuf:"varint,2,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` // 场次id + RoomId int32 `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` // 房间id + RoomTypeId int32 `protobuf:"varint,4,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` // 玩法类型id +} + +func (x *CSGetPrivateRoomList) Reset() { + *x = CSGetPrivateRoomList{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSGetPrivateRoomList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSGetPrivateRoomList) ProtoMessage() {} + +func (x *CSGetPrivateRoomList) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[18] + 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 CSGetPrivateRoomList.ProtoReflect.Descriptor instead. +func (*CSGetPrivateRoomList) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{18} +} + +func (x *CSGetPrivateRoomList) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + +func (x *CSGetPrivateRoomList) GetGameFreeId() int32 { + if x != nil { + return x.GameFreeId + } + return 0 +} + +func (x *CSGetPrivateRoomList) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *CSGetPrivateRoomList) GetRoomTypeId() int32 { + if x != nil { + return x.RoomTypeId + } + return 0 +} + +type PrivatePlayerInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家昵称 + UseRoleId int32 `protobuf:"varint,3,opt,name=UseRoleId,proto3" json:"UseRoleId,omitempty"` //使用的人物模型id +} + +func (x *PrivatePlayerInfo) Reset() { + *x = PrivatePlayerInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrivatePlayerInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrivatePlayerInfo) ProtoMessage() {} + +func (x *PrivatePlayerInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[19] + 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 PrivatePlayerInfo.ProtoReflect.Descriptor instead. +func (*PrivatePlayerInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{19} +} + +func (x *PrivatePlayerInfo) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *PrivatePlayerInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PrivatePlayerInfo) GetUseRoleId() int32 { + if x != nil { + return x.UseRoleId + } + return 0 +} + +//个人创建的房间信息 +type PrivateRoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //场次id + GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id + RoomTypeId int32 `protobuf:"varint,3,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` //玩法类型id + RoomConfigId int32 `protobuf:"varint,4,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id + RoomId int32 `protobuf:"varint,5,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间号 + NeedPassword int32 `protobuf:"varint,6,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` //是否需要密码 1是 + CurrRound int32 `protobuf:"varint,7,opt,name=CurrRound,proto3" json:"CurrRound,omitempty"` //当前第几轮 + MaxRound int32 `protobuf:"varint,8,opt,name=MaxRound,proto3" json:"MaxRound,omitempty"` //最大轮数 + CurrNum int32 `protobuf:"varint,9,opt,name=CurrNum,proto3" json:"CurrNum,omitempty"` //当前人数 + MaxPlayer int32 `protobuf:"varint,10,opt,name=MaxPlayer,proto3" json:"MaxPlayer,omitempty"` //最大人数 + CreateTs int64 `protobuf:"varint,11,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //创建时间戳 + State int32 `protobuf:"varint,12,opt,name=State,proto3" json:"State,omitempty"` //房间状态 0等待中 1进行中 2已结束 + Players []*PrivatePlayerInfo `protobuf:"bytes,13,rep,name=Players,proto3" json:"Players,omitempty"` //玩家列表 +} + +func (x *PrivateRoomInfo) Reset() { + *x = PrivateRoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PrivateRoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PrivateRoomInfo) ProtoMessage() {} + +func (x *PrivateRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[20] + 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 PrivateRoomInfo.ProtoReflect.Descriptor instead. +func (*PrivateRoomInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{20} +} + +func (x *PrivateRoomInfo) GetGameFreeId() int32 { + if x != nil { + return x.GameFreeId + } + return 0 +} + +func (x *PrivateRoomInfo) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *PrivateRoomInfo) GetRoomTypeId() int32 { + if x != nil { + return x.RoomTypeId + } + return 0 +} + +func (x *PrivateRoomInfo) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + +func (x *PrivateRoomInfo) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *PrivateRoomInfo) GetNeedPassword() int32 { + if x != nil { + return x.NeedPassword + } + return 0 +} + +func (x *PrivateRoomInfo) GetCurrRound() int32 { + if x != nil { + return x.CurrRound + } + return 0 +} + +func (x *PrivateRoomInfo) GetMaxRound() int32 { + if x != nil { + return x.MaxRound + } + return 0 +} + +func (x *PrivateRoomInfo) GetCurrNum() int32 { + if x != nil { + return x.CurrNum + } + return 0 +} + +func (x *PrivateRoomInfo) GetMaxPlayer() int32 { + if x != nil { + return x.MaxPlayer + } + return 0 +} + +func (x *PrivateRoomInfo) GetCreateTs() int64 { + if x != nil { + return x.CreateTs + } + return 0 +} + +func (x *PrivateRoomInfo) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *PrivateRoomInfo) GetPlayers() []*PrivatePlayerInfo { + if x != nil { + return x.Players } return nil } -func (x *SCEnterGame) GetMinApkVer() int32 { - if x != nil { - return x.MinApkVer - } - return 0 -} - -func (x *SCEnterGame) GetLatestApkVer() int32 { - if x != nil { - return x.LatestApkVer - } - return 0 -} - -func (x *SCEnterGame) GetMinResVer() int32 { - if x != nil { - return x.MinResVer - } - return 0 -} - -func (x *SCEnterGame) GetLatestResVer() int32 { - if x != nil { - return x.LatestResVer - } - return 0 -} - -//PACKET_CS_QUITGAME -type CSQuitGame struct { +//PACKET_SC_GETPRIVATEROOMLIST +type SCGetPrivateRoomList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //游戏id - IsAudience bool `protobuf:"varint,2,opt,name=IsAudience,proto3" json:"IsAudience,omitempty"` //是否是观众 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 0所有配置 1更新 2新增 3删除 + Datas []*PrivateRoomInfo `protobuf:"bytes,2,rep,name=Datas,proto3" json:"Datas,omitempty"` //房间列表 } -func (x *CSQuitGame) Reset() { - *x = CSQuitGame{} +func (x *SCGetPrivateRoomList) Reset() { + *x = SCGetPrivateRoomList{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[89] + mi := &file_game_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CSQuitGame) String() string { +func (x *SCGetPrivateRoomList) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CSQuitGame) ProtoMessage() {} +func (*SCGetPrivateRoomList) ProtoMessage() {} -func (x *CSQuitGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[89] +func (x *SCGetPrivateRoomList) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6303,53 +2279,132 @@ func (x *CSQuitGame) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CSQuitGame.ProtoReflect.Descriptor instead. -func (*CSQuitGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{89} +// Deprecated: Use SCGetPrivateRoomList.ProtoReflect.Descriptor instead. +func (*SCGetPrivateRoomList) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{21} } -func (x *CSQuitGame) GetId() int32 { +func (x *SCGetPrivateRoomList) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +func (x *SCGetPrivateRoomList) GetDatas() []*PrivateRoomInfo { + if x != nil { + return x.Datas + } + return nil +} + +//PACKET_CS_QUERYROOMINFO +type CSQueryRoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GameIds []int32 `protobuf:"varint,1,rep,packed,name=GameIds,proto3" json:"GameIds,omitempty"` + GameSite int32 `protobuf:"varint,2,opt,name=GameSite,proto3" json:"GameSite,omitempty"` //1.初级 2.中级 3.高级 + Id []int32 `protobuf:"varint,3,rep,packed,name=Id,proto3" json:"Id,omitempty"` //gamefreeid + SceneMode int32 `protobuf:"varint,4,opt,name=SceneMode,proto3" json:"SceneMode,omitempty"` // 0公共房 2私人房 +} + +func (x *CSQueryRoomInfo) Reset() { + *x = CSQueryRoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSQueryRoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSQueryRoomInfo) ProtoMessage() {} + +func (x *CSQueryRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[22] + 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 CSQueryRoomInfo.ProtoReflect.Descriptor instead. +func (*CSQueryRoomInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{22} +} + +func (x *CSQueryRoomInfo) GetGameIds() []int32 { + if x != nil { + return x.GameIds + } + return nil +} + +func (x *CSQueryRoomInfo) GetGameSite() int32 { + if x != nil { + return x.GameSite + } + return 0 +} + +func (x *CSQueryRoomInfo) GetId() []int32 { if x != nil { return x.Id } + return nil +} + +func (x *CSQueryRoomInfo) GetSceneMode() int32 { + if x != nil { + return x.SceneMode + } return 0 } -func (x *CSQuitGame) GetIsAudience() bool { - if x != nil { - return x.IsAudience - } - return false -} - -//PACKET_SC_QUITGAME -type SCQuitGame struct { +//自由桌房间信息 +type QRoomInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpCode,omitempty"` //操作码 - Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` - Reason int32 `protobuf:"varint,3,opt,name=Reason,proto3" json:"Reason,omitempty"` //原因 + GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` //游戏id + GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` + RoomId int32 `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 + BaseCoin int64 `protobuf:"varint,4,opt,name=BaseCoin,proto3" json:"BaseCoin,omitempty"` + LimitCoin int64 `protobuf:"varint,5,opt,name=LimitCoin,proto3" json:"LimitCoin,omitempty"` + CurrNum int32 `protobuf:"varint,6,opt,name=CurrNum,proto3" json:"CurrNum,omitempty"` //当前人数 + MaxPlayer int32 `protobuf:"varint,7,opt,name=MaxPlayer,proto3" json:"MaxPlayer,omitempty"` //最大人数 + Creator int32 `protobuf:"varint,8,opt,name=Creator,proto3" json:"Creator,omitempty"` + CreateTs int32 `protobuf:"varint,9,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //创建时间戳 + Params []int32 `protobuf:"varint,10,rep,packed,name=Params,proto3" json:"Params,omitempty"` // 建房参数 } -func (x *SCQuitGame) Reset() { - *x = SCQuitGame{} +func (x *QRoomInfo) Reset() { + *x = QRoomInfo{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[90] + mi := &file_game_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SCQuitGame) String() string { +func (x *QRoomInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SCQuitGame) ProtoMessage() {} +func (*QRoomInfo) ProtoMessage() {} -func (x *SCQuitGame) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[90] +func (x *QRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6360,60 +2415,180 @@ func (x *SCQuitGame) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SCQuitGame.ProtoReflect.Descriptor instead. -func (*SCQuitGame) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{90} +// Deprecated: Use QRoomInfo.ProtoReflect.Descriptor instead. +func (*QRoomInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{23} } -func (x *SCQuitGame) GetOpCode() OpResultCode_Game { +func (x *QRoomInfo) GetGameFreeId() int32 { if x != nil { - return x.OpCode + return x.GameFreeId + } + return 0 +} + +func (x *QRoomInfo) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *QRoomInfo) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *QRoomInfo) GetBaseCoin() int64 { + if x != nil { + return x.BaseCoin + } + return 0 +} + +func (x *QRoomInfo) GetLimitCoin() int64 { + if x != nil { + return x.LimitCoin + } + return 0 +} + +func (x *QRoomInfo) GetCurrNum() int32 { + if x != nil { + return x.CurrNum + } + return 0 +} + +func (x *QRoomInfo) GetMaxPlayer() int32 { + if x != nil { + return x.MaxPlayer + } + return 0 +} + +func (x *QRoomInfo) GetCreator() int32 { + if x != nil { + return x.Creator + } + return 0 +} + +func (x *QRoomInfo) GetCreateTs() int32 { + if x != nil { + return x.CreateTs + } + return 0 +} + +func (x *QRoomInfo) GetParams() []int32 { + if x != nil { + return x.Params + } + return nil +} + +//PACKET_SC_QUERYROOMINFO +type SCQueryRoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GameIds []int32 `protobuf:"varint,1,rep,packed,name=GameIds,proto3" json:"GameIds,omitempty"` + GameSite int32 `protobuf:"varint,2,opt,name=GameSite,proto3" json:"GameSite,omitempty"` //1.初级 2.中级 3.高级 + RoomInfo []*QRoomInfo `protobuf:"bytes,3,rep,name=RoomInfo,proto3" json:"RoomInfo,omitempty"` //房间列表 + OpRetCode OpResultCode_Game `protobuf:"varint,4,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 +} + +func (x *SCQueryRoomInfo) Reset() { + *x = SCQueryRoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCQueryRoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCQueryRoomInfo) ProtoMessage() {} + +func (x *SCQueryRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[24] + 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 SCQueryRoomInfo.ProtoReflect.Descriptor instead. +func (*SCQueryRoomInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{24} +} + +func (x *SCQueryRoomInfo) GetGameIds() []int32 { + if x != nil { + return x.GameIds + } + return nil +} + +func (x *SCQueryRoomInfo) GetGameSite() int32 { + if x != nil { + return x.GameSite + } + return 0 +} + +func (x *SCQueryRoomInfo) GetRoomInfo() []*QRoomInfo { + if x != nil { + return x.RoomInfo + } + return nil +} + +func (x *SCQueryRoomInfo) GetOpRetCode() OpResultCode_Game { + if x != nil { + return x.OpRetCode } return OpResultCode_Game_OPRC_Sucess_Game } -func (x *SCQuitGame) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *SCQuitGame) GetReason() int32 { - if x != nil { - return x.Reason - } - return 0 -} - -//PACKET_CS_UPLOADLOC -type CSUploadLoc struct { +type GameState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Longitude int32 `protobuf:"varint,1,opt,name=Longitude,proto3" json:"Longitude,omitempty"` //经度 - Latitude int32 `protobuf:"varint,2,opt,name=Latitude,proto3" json:"Latitude,omitempty"` //纬度 - City string `protobuf:"bytes,3,opt,name=City,proto3" json:"City,omitempty"` //城市 例:中国-河南省-郑州市 + GameFreeId int32 `protobuf:"varint,1,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` + Ts int64 `protobuf:"varint,2,opt,name=Ts,proto3" json:"Ts,omitempty"` + Sec int32 `protobuf:"varint,3,opt,name=Sec,proto3" json:"Sec,omitempty"` } -func (x *CSUploadLoc) Reset() { - *x = CSUploadLoc{} +func (x *GameState) Reset() { + *x = GameState{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[91] + mi := &file_game_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CSUploadLoc) String() string { +func (x *GameState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CSUploadLoc) ProtoMessage() {} +func (*GameState) ProtoMessage() {} -func (x *CSUploadLoc) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[91] +func (x *GameState) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6424,61 +2599,58 @@ func (x *CSUploadLoc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CSUploadLoc.ProtoReflect.Descriptor instead. -func (*CSUploadLoc) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{91} +// Deprecated: Use GameState.ProtoReflect.Descriptor instead. +func (*GameState) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{25} } -func (x *CSUploadLoc) GetLongitude() int32 { +func (x *GameState) GetGameFreeId() int32 { if x != nil { - return x.Longitude + return x.GameFreeId } return 0 } -func (x *CSUploadLoc) GetLatitude() int32 { +func (x *GameState) GetTs() int64 { if x != nil { - return x.Latitude + return x.Ts } return 0 } -func (x *CSUploadLoc) GetCity() string { +func (x *GameState) GetSec() int32 { if x != nil { - return x.City + return x.Sec } - return "" + return 0 } -//PACKET_SC_UPLOADLOC -type SCUploadLoc struct { +//PACKET_SC_GAMESTATE +type SCGameState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` - Longitude int32 `protobuf:"varint,2,opt,name=Longitude,proto3" json:"Longitude,omitempty"` //经度 - Latitude int32 `protobuf:"varint,3,opt,name=Latitude,proto3" json:"Latitude,omitempty"` //纬度 - City string `protobuf:"bytes,4,opt,name=City,proto3" json:"City,omitempty"` //城市 例:中国-河南省-郑州市 + List []*GameState `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` } -func (x *SCUploadLoc) Reset() { - *x = SCUploadLoc{} +func (x *SCGameState) Reset() { + *x = SCGameState{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[92] + mi := &file_game_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SCUploadLoc) String() string { +func (x *SCGameState) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SCUploadLoc) ProtoMessage() {} +func (*SCGameState) ProtoMessage() {} -func (x *SCUploadLoc) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[92] +func (x *SCGameState) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6489,37 +2661,16 @@ func (x *SCUploadLoc) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SCUploadLoc.ProtoReflect.Descriptor instead. -func (*SCUploadLoc) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{92} +// Deprecated: Use SCGameState.ProtoReflect.Descriptor instead. +func (*SCGameState) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{26} } -func (x *SCUploadLoc) GetPos() int32 { +func (x *SCGameState) GetList() []*GameState { if x != nil { - return x.Pos + return x.List } - return 0 -} - -func (x *SCUploadLoc) GetLongitude() int32 { - if x != nil { - return x.Longitude - } - return 0 -} - -func (x *SCUploadLoc) GetLatitude() int32 { - if x != nil { - return x.Latitude - } - return 0 -} - -func (x *SCUploadLoc) GetCity() string { - if x != nil { - return x.City - } - return "" + return nil } //PACKET_CS_AUDIENCESIT @@ -6534,7 +2685,7 @@ type CSAudienceSit struct { func (x *CSAudienceSit) Reset() { *x = CSAudienceSit{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[93] + mi := &file_game_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6547,7 +2698,7 @@ func (x *CSAudienceSit) String() string { func (*CSAudienceSit) ProtoMessage() {} func (x *CSAudienceSit) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[93] + mi := &file_game_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6560,7 +2711,7 @@ func (x *CSAudienceSit) ProtoReflect() protoreflect.Message { // Deprecated: Use CSAudienceSit.ProtoReflect.Descriptor instead. func (*CSAudienceSit) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{93} + return file_game_proto_rawDescGZIP(), []int{27} } func (x *CSAudienceSit) GetRoomId() int32 { @@ -6583,7 +2734,7 @@ type SCAudienceSit struct { func (x *SCAudienceSit) Reset() { *x = SCAudienceSit{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[94] + mi := &file_game_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6596,7 +2747,7 @@ func (x *SCAudienceSit) String() string { func (*SCAudienceSit) ProtoMessage() {} func (x *SCAudienceSit) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[94] + mi := &file_game_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6609,7 +2760,7 @@ func (x *SCAudienceSit) ProtoReflect() protoreflect.Message { // Deprecated: Use SCAudienceSit.ProtoReflect.Descriptor instead. func (*SCAudienceSit) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{94} + return file_game_proto_rawDescGZIP(), []int{28} } func (x *SCAudienceSit) GetRoomId() int32 { @@ -6641,7 +2792,7 @@ type CSRecordAndNotice struct { func (x *CSRecordAndNotice) Reset() { *x = CSRecordAndNotice{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[95] + mi := &file_game_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6654,7 +2805,7 @@ func (x *CSRecordAndNotice) String() string { func (*CSRecordAndNotice) ProtoMessage() {} func (x *CSRecordAndNotice) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[95] + mi := &file_game_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6667,7 +2818,7 @@ func (x *CSRecordAndNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use CSRecordAndNotice.ProtoReflect.Descriptor instead. func (*CSRecordAndNotice) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{95} + return file_game_proto_rawDescGZIP(), []int{29} } func (x *CSRecordAndNotice) GetPageNo() int32 { @@ -6723,7 +2874,7 @@ type CommonNotice struct { func (x *CommonNotice) Reset() { *x = CommonNotice{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[96] + mi := &file_game_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6736,7 +2887,7 @@ func (x *CommonNotice) String() string { func (*CommonNotice) ProtoMessage() {} func (x *CommonNotice) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[96] + mi := &file_game_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6749,7 +2900,7 @@ func (x *CommonNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use CommonNotice.ProtoReflect.Descriptor instead. func (*CommonNotice) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{96} + return file_game_proto_rawDescGZIP(), []int{30} } func (x *CommonNotice) GetSort() int32 { @@ -6873,7 +3024,7 @@ type PlayerRecord struct { func (x *PlayerRecord) Reset() { *x = PlayerRecord{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[97] + mi := &file_game_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6886,7 +3037,7 @@ func (x *PlayerRecord) String() string { func (*PlayerRecord) ProtoMessage() {} func (x *PlayerRecord) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[97] + mi := &file_game_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6899,7 +3050,7 @@ func (x *PlayerRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerRecord.ProtoReflect.Descriptor instead. func (*PlayerRecord) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{97} + return file_game_proto_rawDescGZIP(), []int{31} } func (x *PlayerRecord) GetGameFreeid() int32 { @@ -6959,7 +3110,7 @@ type SCRecordAndNotice struct { func (x *SCRecordAndNotice) Reset() { *x = SCRecordAndNotice{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[98] + mi := &file_game_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6972,7 +3123,7 @@ func (x *SCRecordAndNotice) String() string { func (*SCRecordAndNotice) ProtoMessage() {} func (x *SCRecordAndNotice) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[98] + mi := &file_game_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6985,7 +3136,7 @@ func (x *SCRecordAndNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use SCRecordAndNotice.ProtoReflect.Descriptor instead. func (*SCRecordAndNotice) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{98} + return file_game_proto_rawDescGZIP(), []int{32} } func (x *SCRecordAndNotice) GetOpCode() OpResultCode_Game { @@ -7026,7 +3177,7 @@ type SCNoticeChange struct { func (x *SCNoticeChange) Reset() { *x = SCNoticeChange{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[99] + mi := &file_game_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7039,7 +3190,7 @@ func (x *SCNoticeChange) String() string { func (*SCNoticeChange) ProtoMessage() {} func (x *SCNoticeChange) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[99] + mi := &file_game_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7052,7 +3203,376 @@ func (x *SCNoticeChange) ProtoReflect() protoreflect.Message { // Deprecated: Use SCNoticeChange.ProtoReflect.Descriptor instead. func (*SCNoticeChange) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{99} + return file_game_proto_rawDescGZIP(), []int{33} +} + +//PACKET_CS_DESTROYROOM +type CSDestroyRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSDestroyRoom) Reset() { + *x = CSDestroyRoom{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSDestroyRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSDestroyRoom) ProtoMessage() {} + +func (x *CSDestroyRoom) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[34] + 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 CSDestroyRoom.ProtoReflect.Descriptor instead. +func (*CSDestroyRoom) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{34} +} + +//PACKET_SC_DESTROYROOM +type SCDestroyRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间编号 + OpRetCode OpResultCode_Game `protobuf:"varint,2,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 + IsForce int32 `protobuf:"varint,3,opt,name=IsForce,proto3" json:"IsForce,omitempty"` //是否强制销毁 +} + +func (x *SCDestroyRoom) Reset() { + *x = SCDestroyRoom{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCDestroyRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCDestroyRoom) ProtoMessage() {} + +func (x *SCDestroyRoom) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[35] + 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 SCDestroyRoom.ProtoReflect.Descriptor instead. +func (*SCDestroyRoom) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{35} +} + +func (x *SCDestroyRoom) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *SCDestroyRoom) GetOpRetCode() OpResultCode_Game { + if x != nil { + return x.OpRetCode + } + return OpResultCode_Game_OPRC_Sucess_Game +} + +func (x *SCDestroyRoom) GetIsForce() int32 { + if x != nil { + return x.IsForce + } + return 0 +} + +//PACKET_CS_LEAVEROOM +//PACKET_CS_AUDIENCE_LEAVEROOM +//玩家离开房间,返回大厅 +type CSLeaveRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Mode int32 `protobuf:"varint,1,opt,name=Mode,proto3" json:"Mode,omitempty"` //离开方式 0:退出 1:暂离(占着座位,返回大厅) +} + +func (x *CSLeaveRoom) Reset() { + *x = CSLeaveRoom{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSLeaveRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSLeaveRoom) ProtoMessage() {} + +func (x *CSLeaveRoom) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[36] + 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 CSLeaveRoom.ProtoReflect.Descriptor instead. +func (*CSLeaveRoom) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{36} +} + +func (x *CSLeaveRoom) GetMode() int32 { + if x != nil { + return x.Mode + } + return 0 +} + +//PACKET_SC_LEAVEROOM +type SCLeaveRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 + Reason int32 `protobuf:"varint,2,opt,name=Reason,proto3" json:"Reason,omitempty"` //原因 0:主动退出 1:被踢出 + RoomId int32 `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间ID + Mode int32 `protobuf:"varint,4,opt,name=Mode,proto3" json:"Mode,omitempty"` +} + +func (x *SCLeaveRoom) Reset() { + *x = SCLeaveRoom{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCLeaveRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCLeaveRoom) ProtoMessage() {} + +func (x *SCLeaveRoom) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[37] + 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 SCLeaveRoom.ProtoReflect.Descriptor instead. +func (*SCLeaveRoom) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{37} +} + +func (x *SCLeaveRoom) GetOpRetCode() OpResultCode_Game { + if x != nil { + return x.OpRetCode + } + return OpResultCode_Game_OPRC_Sucess_Game +} + +func (x *SCLeaveRoom) GetReason() int32 { + if x != nil { + return x.Reason + } + return 0 +} + +func (x *SCLeaveRoom) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *SCLeaveRoom) GetMode() int32 { + if x != nil { + return x.Mode + } + return 0 +} + +//PACKET_CS_FORCESTART +type CSForceStart struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSForceStart) Reset() { + *x = CSForceStart{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSForceStart) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSForceStart) ProtoMessage() {} + +func (x *CSForceStart) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[38] + 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 CSForceStart.ProtoReflect.Descriptor instead. +func (*CSForceStart) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{38} +} + +//PACKET_SC_FORCESTART +type SCForceStart struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode_Game `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=gamehall.OpResultCode_Game" json:"OpRetCode,omitempty"` //结果 +} + +func (x *SCForceStart) Reset() { + *x = SCForceStart{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCForceStart) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCForceStart) ProtoMessage() {} + +func (x *SCForceStart) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[39] + 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 SCForceStart.ProtoReflect.Descriptor instead. +func (*SCForceStart) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{39} +} + +func (x *SCForceStart) GetOpRetCode() OpResultCode_Game { + if x != nil { + return x.OpRetCode + } + return OpResultCode_Game_OPRC_Sucess_Game +} + +//玩家设置标记 +//PACKET_CS_PLAYER_SWITCHFLAG +type CSPlayerSwithFlag struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Flag int32 `protobuf:"varint,1,opt,name=Flag,proto3" json:"Flag,omitempty"` + Mark int32 `protobuf:"varint,2,opt,name=Mark,proto3" json:"Mark,omitempty"` //1:设置 0:取消 +} + +func (x *CSPlayerSwithFlag) Reset() { + *x = CSPlayerSwithFlag{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPlayerSwithFlag) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPlayerSwithFlag) ProtoMessage() {} + +func (x *CSPlayerSwithFlag) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[40] + 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 CSPlayerSwithFlag.ProtoReflect.Descriptor instead. +func (*CSPlayerSwithFlag) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{40} +} + +func (x *CSPlayerSwithFlag) GetFlag() int32 { + if x != nil { + return x.Flag + } + return 0 +} + +func (x *CSPlayerSwithFlag) GetMark() int32 { + if x != nil { + return x.Mark + } + return 0 } // PACKET_CSRoomEvent @@ -7069,7 +3589,7 @@ type CSRoomEvent struct { func (x *CSRoomEvent) Reset() { *x = CSRoomEvent{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[100] + mi := &file_game_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7082,7 +3602,7 @@ func (x *CSRoomEvent) String() string { func (*CSRoomEvent) ProtoMessage() {} func (x *CSRoomEvent) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[100] + mi := &file_game_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7095,7 +3615,7 @@ func (x *CSRoomEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use CSRoomEvent.ProtoReflect.Descriptor instead. func (*CSRoomEvent) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{100} + return file_game_proto_rawDescGZIP(), []int{41} } func (x *CSRoomEvent) GetTp() int32 { @@ -7135,7 +3655,7 @@ type SCRoomEvent struct { func (x *SCRoomEvent) Reset() { *x = SCRoomEvent{} if protoimpl.UnsafeEnabled { - mi := &file_game_proto_msgTypes[101] + mi := &file_game_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7148,7 +3668,7 @@ func (x *SCRoomEvent) String() string { func (*SCRoomEvent) ProtoMessage() {} func (x *SCRoomEvent) ProtoReflect() protoreflect.Message { - mi := &file_game_proto_msgTypes[101] + mi := &file_game_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7161,7 +3681,7 @@ func (x *SCRoomEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SCRoomEvent.ProtoReflect.Descriptor instead. func (*SCRoomEvent) Descriptor() ([]byte, []int) { - return file_game_proto_rawDescGZIP(), []int{101} + return file_game_proto_rawDescGZIP(), []int{42} } func (x *SCRoomEvent) GetOpCode() OpResultCode_Game { @@ -7206,555 +3726,562 @@ func (x *SCRoomEvent) GetTs() int64 { return 0 } +type ItemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // id + Num int32 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` // 数量 +} + +func (x *ItemInfo) Reset() { + *x = ItemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemInfo) ProtoMessage() {} + +func (x *ItemInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[43] + 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 ItemInfo.ProtoReflect.Descriptor instead. +func (*ItemInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{43} +} + +func (x *ItemInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ItemInfo) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +// PACKET_CSTouchType +// 每10秒发送一次,保持更新 +type CSTouchType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tp DataType `protobuf:"varint,1,opt,name=Tp,proto3,enum=gamehall.DataType" json:"Tp,omitempty"` // 保持更新类型 + // Tp: Params + // 1: 房间配置id + Params []int32 `protobuf:"varint,3,rep,packed,name=Params,proto3" json:"Params,omitempty"` +} + +func (x *CSTouchType) Reset() { + *x = CSTouchType{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSTouchType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSTouchType) ProtoMessage() {} + +func (x *CSTouchType) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[44] + 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 CSTouchType.ProtoReflect.Descriptor instead. +func (*CSTouchType) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{44} +} + +func (x *CSTouchType) GetTp() DataType { + if x != nil { + return x.Tp + } + return DataType_Zero +} + +func (x *CSTouchType) GetParams() []int32 { + if x != nil { + return x.Params + } + return nil +} + +type RoomConfigInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id + Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 配置名称 + RoomType int32 `protobuf:"varint,4,opt,name=RoomType,proto3" json:"RoomType,omitempty"` // 房间类型id, RoomTypeInfo.Id + On int32 `protobuf:"varint,5,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 + SortId int32 `protobuf:"varint,6,opt,name=SortId,proto3" json:"SortId,omitempty"` // 排序ID + Cost []*ItemInfo `protobuf:"bytes,7,rep,name=Cost,proto3" json:"Cost,omitempty"` // 进入房间消耗 + Reward []*ItemInfo `protobuf:"bytes,8,rep,name=Reward,proto3" json:"Reward,omitempty"` // 进入房间奖励 + OnChannelName []string `protobuf:"bytes,9,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启的渠道名称 + GameFreeId []int32 `protobuf:"varint,10,rep,packed,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` // 场次id + Round []int32 `protobuf:"varint,11,rep,packed,name=Round,proto3" json:"Round,omitempty"` // 局数 + PlayerNum []int32 `protobuf:"varint,12,rep,packed,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` // 人数 + NeedPassword int32 `protobuf:"varint,13,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` // 是否需要密码 1是 2否 3自定义 + CostType int32 `protobuf:"varint,14,opt,name=CostType,proto3" json:"CostType,omitempty"` // 消耗类型 1AA 2房主 3自定义 + Voice int32 `protobuf:"varint,15,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1是 2否 3自定义 + ImageURI string `protobuf:"bytes,16,opt,name=ImageURI,proto3" json:"ImageURI,omitempty"` // 奖励图片 +} + +func (x *RoomConfigInfo) Reset() { + *x = RoomConfigInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoomConfigInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoomConfigInfo) ProtoMessage() {} + +func (x *RoomConfigInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[45] + 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 RoomConfigInfo.ProtoReflect.Descriptor instead. +func (*RoomConfigInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{45} +} + +func (x *RoomConfigInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *RoomConfigInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RoomConfigInfo) GetRoomType() int32 { + if x != nil { + return x.RoomType + } + return 0 +} + +func (x *RoomConfigInfo) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *RoomConfigInfo) GetSortId() int32 { + if x != nil { + return x.SortId + } + return 0 +} + +func (x *RoomConfigInfo) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *RoomConfigInfo) GetReward() []*ItemInfo { + if x != nil { + return x.Reward + } + return nil +} + +func (x *RoomConfigInfo) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + +func (x *RoomConfigInfo) GetGameFreeId() []int32 { + if x != nil { + return x.GameFreeId + } + return nil +} + +func (x *RoomConfigInfo) GetRound() []int32 { + if x != nil { + return x.Round + } + return nil +} + +func (x *RoomConfigInfo) GetPlayerNum() []int32 { + if x != nil { + return x.PlayerNum + } + return nil +} + +func (x *RoomConfigInfo) GetNeedPassword() int32 { + if x != nil { + return x.NeedPassword + } + return 0 +} + +func (x *RoomConfigInfo) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *RoomConfigInfo) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + +func (x *RoomConfigInfo) GetImageURI() string { + if x != nil { + return x.ImageURI + } + return "" +} + +type RoomTypeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // id + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 类型名称 + On int32 `protobuf:"varint,3,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 + SortId int32 `protobuf:"varint,4,opt,name=SortId,proto3" json:"SortId,omitempty"` // 排序ID + List []*RoomConfigInfo `protobuf:"bytes,5,rep,name=List,proto3" json:"List,omitempty"` // 房间配置列表 +} + +func (x *RoomTypeInfo) Reset() { + *x = RoomTypeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoomTypeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoomTypeInfo) ProtoMessage() {} + +func (x *RoomTypeInfo) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[46] + 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 RoomTypeInfo.ProtoReflect.Descriptor instead. +func (*RoomTypeInfo) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{46} +} + +func (x *RoomTypeInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *RoomTypeInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RoomTypeInfo) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *RoomTypeInfo) GetSortId() int32 { + if x != nil { + return x.SortId + } + return 0 +} + +func (x *RoomTypeInfo) GetList() []*RoomConfigInfo { + if x != nil { + return x.List + } + return nil +} + +// PACKET_CSRoomConfig +type CSRoomConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSRoomConfig) Reset() { + *x = CSRoomConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSRoomConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSRoomConfig) ProtoMessage() {} + +func (x *CSRoomConfig) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[47] + 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 CSRoomConfig.ProtoReflect.Descriptor instead. +func (*CSRoomConfig) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{47} +} + +// PACKET_SCRoomConfig 竞技馆房间配置 +type SCRoomConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*RoomTypeInfo `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` +} + +func (x *SCRoomConfig) Reset() { + *x = SCRoomConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCRoomConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCRoomConfig) ProtoMessage() {} + +func (x *SCRoomConfig) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[48] + 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 SCRoomConfig.ProtoReflect.Descriptor instead. +func (*SCRoomConfig) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{48} +} + +func (x *SCRoomConfig) GetList() []*RoomTypeInfo { + if x != nil { + return x.List + } + return nil +} + var File_game_proto protoreflect.FileDescriptor var file_game_proto_rawDesc = []byte{ 0x0a, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x22, 0x25, 0x0a, 0x0b, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x48, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0x60, 0x0a, - 0x0b, 0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, - 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, 0x61, - 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, + 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x22, 0xac, 0x01, 0x0a, 0x0c, 0x43, 0x53, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 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, + 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xd7, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 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, 0x1a, + 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, - 0x0d, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x22, 0x25, - 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x0a, - 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, - 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0xb8, 0x01, 0x0a, 0x0e, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 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, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, - 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x20, 0x0a, 0x0b, - 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x4f, 0x75, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x56, 0x49, 0x50, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x49, 0x50, - 0x22, 0x72, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x32, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, - 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x0e, 0x43, 0x53, 0x48, 0x61, 0x6c, 0x6c, 0x52, 0x6f, - 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x22, 0x46, - 0x0a, 0x08, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0x3f, 0x0a, 0x0d, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x2e, 0x0a, 0x08, 0x48, 0x61, 0x6c, 0x6c, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x48, - 0x61, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x48, 0x61, - 0x6c, 0x6c, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, - 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, 0x61, 0x6c, 0x6c, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, - 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x41, 0x64, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x41, 0x64, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x52, 0x6f, 0x6f, 0x6d, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x52, 0x6f, 0x6f, 0x6d, 0x73, 0x12, 0x2e, - 0x0a, 0x08, 0x48, 0x61, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x48, 0x61, 0x6c, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x48, 0x61, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5d, - 0x0a, 0x11, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x22, 0x3d, 0x0a, - 0x11, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, - 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5d, 0x0a, 0x11, - 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xac, 0x01, 0x0a, 0x0c, - 0x43, 0x53, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 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, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, - 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xd7, 0x01, 0x0a, 0x0c, 0x53, - 0x43, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 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, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, - 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, - 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, - 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x22, 0x7c, 0x0a, 0x0d, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x39, - 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x46, - 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x46, 0x6f, - 0x72, 0x63, 0x65, 0x22, 0x3d, 0x0a, 0x0b, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, - 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, - 0x49, 0x64, 0x22, 0xdc, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, - 0x6f, 0x6d, 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, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, - 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, - 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x39, - 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, - 0x62, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, - 0x64, 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, - 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, - 0x6f, 0x64, 0x65, 0x22, 0x72, 0x0a, 0x0c, 0x43, 0x53, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, - 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, - 0x56, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xfd, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, - 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, - 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, - 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x56, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x22, 0x38, 0x0a, 0x0c, 0x43, 0x53, 0x47, 0x65, 0x74, - 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, - 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x63, 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, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, - 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x22, 0x84, 0x03, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, - 0x14, 0x0a, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x52, 0x65, 0x63, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x52, 0x05, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x22, - 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, - 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x65, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x65, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, - 0x43, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x6f, 0x6d, 0x43, - 0x61, 0x72, 0x64, 0x43, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x0c, 0x53, 0x43, - 0x47, 0x65, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x04, 0x52, 0x65, - 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, - 0x61, 0x6c, 0x6c, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x52, 0x04, 0x52, 0x65, 0x63, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x56, 0x65, 0x72, 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, 0x2a, 0x0a, 0x0a, 0x43, - 0x53, 0x53, 0x68, 0x61, 0x72, 0x65, 0x53, 0x75, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x47, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x53, 0x75, 0x63, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, - 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x43, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x41, 0x0a, 0x0d, 0x43, - 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x6f, 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, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x3b, - 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x77, 0x69, 0x74, 0x68, 0x46, - 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x31, 0x0a, 0x09, 0x43, - 0x53, 0x53, 0x68, 0x6f, 0x70, 0x42, 0x75, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc2, - 0x01, 0x0a, 0x09, 0x53, 0x43, 0x53, 0x68, 0x6f, 0x70, 0x42, 0x75, 0x79, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, - 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, - 0x08, 0x47, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x47, 0x61, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x69, - 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x69, 0x6e, - 0x4e, 0x75, 0x6d, 0x22, 0x62, 0x0a, 0x0a, 0x43, 0x53, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x61, 0x6d, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x67, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x05, 0x41, 0x67, 0x72, 0x65, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x4a, 0x6f, - 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x44, 0x67, - 0x47, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x67, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x67, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x44, 0x67, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, - 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x72, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x72, - 0x6c, 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, 0x44, 0x67, 0x47, 0x61, 0x6d, - 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x67, 0x47, 0x61, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x44, 0x67, 0x47, 0x61, 0x6d, 0x65, 0x22, 0x4a, 0x0a, 0x0d, 0x53, 0x43, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x67, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x4f, - 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x2f, 0x0a, 0x17, 0x43, 0x53, 0x54, 0x68, 0x72, 0x69, - 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, - 0x63, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x71, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x52, 0x65, 0x71, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x0c, 0x54, 0x68, 0x72, 0x69, 0x64, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x54, 0x68, 0x72, 0x69, 0x64, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0f, 0x54, 0x68, 0x72, 0x69, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 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, 0x18, 0x0a, - 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x53, 0x43, 0x54, 0x68, 0x72, - 0x69, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x71, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x52, 0x65, 0x71, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, - 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x54, 0x68, 0x72, 0x69, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x5c, 0x0a, 0x16, - 0x43, 0x53, 0x54, 0x68, 0x72, 0x69, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x72, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x54, 0x6f, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x6f, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x53, - 0x43, 0x54, 0x68, 0x72, 0x69, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, - 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x32, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x54, 0x68, - 0x72, 0x69, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x10, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, - 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x72, 0x69, - 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x54, - 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x53, - 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x12, - 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, - 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, - 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0x12, - 0x0a, 0x10, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, - 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x10, 0x53, 0x43, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x54, 0x68, 0x72, - 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, + 0x59, 0x0a, 0x0b, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xfc, 0x01, 0x0a, 0x0b, 0x53, + 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f, 0x6d, 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, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x0e, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x72, - 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x54, 0x68, 0x72, 0x69, - 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa4, - 0x01, 0x0a, 0x12, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x54, 0x68, 0x72, 0x69, 0x64, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, - 0x54, 0x68, 0x72, 0x69, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x49, 0x64, 0x12, - 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x72, 0x69, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x72, 0x69, - 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x36, 0x0a, - 0x09, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x54, 0x68, 0x72, 0x69, - 0x64, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x73, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x68, 0x72, 0x69, - 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, - 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x52, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x73, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x53, 0x54, 0x68, - 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x22, 0x69, 0x0a, 0x18, 0x53, 0x43, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, - 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, - 0x5a, 0x0a, 0x1d, 0x53, 0x43, 0x54, 0x68, 0x72, 0x69, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, 0x13, 0x43, - 0x53, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xa0, 0x01, 0x0a, 0x13, 0x53, - 0x43, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, - 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xd7, 0x01, - 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, - 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, - 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, - 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, - 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0x47, 0x0a, 0x14, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, - 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x37, 0x0a, 0x17, 0x43, 0x53, 0x47, 0x65, - 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0xac, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, - 0x6d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, - 0x22, 0x6b, 0x0a, 0x17, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, - 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x2e, 0x0a, - 0x14, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x7f, 0x0a, - 0x14, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x39, 0x0a, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, - 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x75, - 0x0a, 0x0f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, - 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, - 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x09, 0x51, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x78, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x2f, 0x0a, - 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x51, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, - 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x0c, 0x43, 0x53, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x70, 0x6b, + 0x56, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, + 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xfd, 0x02, + 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, + 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x47, 0x0a, 0x0d, 0x43, 0x53, 0x47, - 0x61, 0x6d, 0x65, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 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, 0x1e, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x72, 0x45, 0x6e, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4f, 0x72, 0x45, - 0x6e, 0x64, 0x22, 0x7b, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x4e, - 0x65, 0x77, 0x4c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4e, 0x65, 0x77, - 0x4c, 0x6f, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x4c, 0x6f, 0x67, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x4c, 0x6f, 0x67, 0x22, - 0x3c, 0x0a, 0x0d, 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x2b, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, - 0x62, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x4d, 0x0a, - 0x09, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, - 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x22, 0x36, 0x0a, 0x0b, - 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x3c, 0x0a, 0x0d, 0x53, 0x43, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0x78, 0x0a, 0x0a, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, 0x63, - 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, 0x63, - 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, - 0x6e, 0x22, 0x58, 0x0a, 0x0c, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x6f, - 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, - 0x64, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x4c, 0x6f, 0x67, 0x52, 0x04, 0x4c, 0x6f, 0x67, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x0d, - 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x42, 0x69, 0x6c, 0x6c, 0x12, 0x1e, 0x0a, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, - 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0xe3, 0x03, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, + 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x48, + 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, + 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, + 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, + 0x56, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x56, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x22, 0x85, 0x01, + 0x0a, 0x0b, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 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, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x65, 0x73, 0x56, 0x65, 0x72, 0x22, 0xf2, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, + 0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, + 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, + 0x56, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, + 0x6b, 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, + 0x6b, 0x56, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x22, 0x3c, 0x0a, 0x0a, 0x43, 0x53, + 0x51, 0x75, 0x69, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x41, 0x75, + 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, + 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x69, 0x0a, 0x0a, 0x53, 0x43, 0x51, 0x75, + 0x69, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, + 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x22, 0xe3, 0x03, 0x0a, 0x0b, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x31, 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, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, @@ -7812,407 +4339,465 @@ var file_game_proto_rawDesc = []byte{ 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x08, 0x52, - 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x43, 0x53, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 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, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x22, - 0xf2, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x12, - 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x12, 0x22, - 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x56, - 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, - 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x56, 0x65, 0x72, 0x22, 0x3c, 0x0a, 0x0a, 0x43, 0x53, 0x51, 0x75, 0x69, 0x74, 0x47, 0x61, - 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, - 0x63, 0x65, 0x22, 0x69, 0x0a, 0x0a, 0x53, 0x43, 0x51, 0x75, 0x69, 0x74, 0x47, 0x61, 0x6d, 0x65, - 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, - 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, - 0x0b, 0x43, 0x53, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x12, 0x1c, 0x0a, 0x09, - 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, - 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, - 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x22, 0x6d, 0x0a, 0x0b, 0x53, 0x43, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, - 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x4c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x61, 0x74, - 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x61, 0x74, - 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, - 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x43, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, - 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x4f, - 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, - 0x22, 0x77, 0x0a, 0x11, 0x43, 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, - 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 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, - 0x05, 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, 0x05, 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, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, - 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53, - 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43, - 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, + 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x83, 0x02, 0x0a, 0x13, 0x43, 0x53, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, + 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 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, 0x06, 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, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, + 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xf2, 0x02, + 0x0a, 0x13, 0x53, 0x43, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, + 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, + 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 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, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, + 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 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, 0x07, 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, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x22, 0x92, 0x01, 0x0a, 0x14, 0x43, 0x53, 0x47, 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x52, + 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, + 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x11, 0x50, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 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, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x49, 0x64, 0x22, 0xa4, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x22, + 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, + 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x72, + 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, + 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x53, 0x43, 0x47, + 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, + 0x70, 0x12, 0x2f, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x22, 0x75, 0x0a, 0x0f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, + 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, + 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x09, 0x51, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, + 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, + 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x51, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, + 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, + 0x09, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, + 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x22, 0x36, 0x0a, 0x0b, + 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, + 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, + 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a, + 0x0d, 0x53, 0x43, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, + 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a, 0x11, 0x43, + 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x4f, 0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 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, 0x05, 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, 0x05, 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, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, + 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, + 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, + 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69, + 0x73, 0x74, 0x54, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73, + 0x74, 0x54, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72, + 0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x22, 0x7c, 0x0a, 0x0d, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74, + 0x72, 0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, + 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, + 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x46, + 0x6f, 0x72, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, + 0x6f, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, + 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x46, 0x6f, 0x72, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x43, 0x46, 0x6f, 0x72, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, - 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, - 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, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, - 0x2a, 0xe6, 0x09, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, - 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, - 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, - 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, - 0x64, 0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, - 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, - 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, - 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0x80, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, - 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, - 0x08, 0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, - 0x6f, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, - 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, - 0x77, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, - 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, - 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xa3, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, - 0x6c, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xca, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, - 0x6f, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, - 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, - 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, - 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, - 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, - 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x65, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, - 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, - 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, - 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70, 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, - 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, - 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, - 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, - 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, - 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, - 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, 0xd0, 0x17, 0x0a, 0x10, 0x47, 0x61, - 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, - 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x98, - 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, - 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x99, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, - 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, - 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, - 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, - 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, - 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, + 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x77, 0x69, + 0x74, 0x68, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x61, + 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x4d, + 0x0a, 0x0b, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, + 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, + 0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, + 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x50, 0x6f, 0x73, 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, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x54, 0x73, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, + 0x75, 0x6d, 0x22, 0x49, 0x0a, 0x0b, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x02, 0x54, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb8, 0x03, + 0x0a, 0x0e, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, + 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, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, + 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, + 0x12, 0x2a, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 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, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, + 0x6d, 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, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, + 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, + 0xb1, 0x0a, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, + 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, + 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, + 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, + 0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, + 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, + 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, + 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, + 0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, + 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, + 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, + 0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, + 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, + 0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, + 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, + 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, + 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, + 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, + 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x10, 0xcc, + 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xcd, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, + 0x10, 0xce, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0xb5, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, + 0x41, 0x72, 0x65, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, + 0x65, 0x61, 0x76, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, + 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, + 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, + 0x0a, 0x1a, 0x4f, 0x70, 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, + 0x49, 0x73, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, + 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x44, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0xaa, 0x46, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, + 0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, + 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0xb2, 0x46, 0x2a, 0xc8, 0x09, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, + 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, + 0x9c, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, + 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, + 0x9f, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, + 0x41, 0x4d, 0x45, 0x10, 0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, + 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa4, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x10, 0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x10, 0xb9, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, + 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, + 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21, + 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, + 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2, + 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, + 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0xe3, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0xe8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, + 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, - 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, - 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa2, - 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, - 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, - 0x10, 0xa4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x43, 0x41, 0x52, 0x44, 0x47, 0x41, 0x49, 0x4e, 0x57, 0x41, 0x59, 0x10, 0xa5, 0x11, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x41, 0x53, - 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa6, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, - 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, - 0x41, 0x53, 0x4b, 0x43, 0x48, 0x47, 0x10, 0xa8, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x43, 0x4f, 0x4d, 0x50, 0x4c, - 0x45, 0x54, 0x45, 0x10, 0xa9, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x44, 0x45, 0x4c, 0x10, 0xaa, 0x11, 0x12, 0x1c, - 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x41, 0x43, 0x4b, - 0x44, 0x52, 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xab, 0x11, 0x12, 0x1c, 0x0a, 0x17, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, - 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xac, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, - 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xaf, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, - 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb0, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x47, 0x45, 0x4e, 0x54, - 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb1, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, - 0xb2, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb3, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x4c, 0x49, 0x53, - 0x54, 0x10, 0xb4, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, - 0x44, 0x53, 0x10, 0xb5, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, - 0x49, 0x44, 0x53, 0x10, 0xb6, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, - 0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x10, 0xb9, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc0, 0x11, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, - 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc2, - 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, - 0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc3, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, - 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc4, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0xc5, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, - 0x45, 0x52, 0x10, 0xc6, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, - 0x56, 0x45, 0x10, 0xc7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x10, 0xc8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4e, 0x55, 0x4d, 0x10, - 0xc9, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xca, 0x11, - 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x55, - 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xcb, 0x11, 0x12, 0x1f, - 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcc, 0x11, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, - 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcd, 0x11, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, - 0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xce, 0x11, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, - 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xcf, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, - 0x45, 0x10, 0xd0, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd1, 0x11, - 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, - 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, - 0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, 0xd3, 0x11, 0x12, 0x25, 0x0a, 0x20, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, - 0x10, 0xd4, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd5, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd6, 0x11, 0x12, 0x1d, 0x0a, - 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, - 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd7, 0x11, 0x12, 0x1d, 0x0a, 0x18, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, - 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd8, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x54, 0x48, - 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd9, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x54, 0x48, 0x52, - 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xda, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0xdc, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, - 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xdd, 0x11, 0x12, 0x25, 0x0a, 0x20, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, - 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x10, 0xde, 0x11, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, - 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xdf, 0x11, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, - 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, - 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, - 0x10, 0xe1, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, - 0x49, 0x53, 0x54, 0x10, 0xe2, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, - 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe3, 0x11, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, - 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0xe4, 0x11, 0x12, - 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, - 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, - 0x52, 0x59, 0x10, 0xe5, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, - 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe6, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, - 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, - 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, - 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0xeb, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x10, 0xec, 0x11, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, - 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x46, - 0x52, 0x45, 0x45, 0x10, 0xee, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x53, 0x59, 0x4e, 0x43, 0x10, - 0xef, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x11, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, - 0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x42, 0x49, 0x4c, - 0x4c, 0x10, 0xf2, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf3, 0x11, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x4c, 0x4f, - 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, - 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf6, 0x11, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4f, - 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, - 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x10, 0xfa, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, - 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, - 0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12, - 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, - 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, - 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 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, 0x67, 0x61, - 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x1a, 0x0a, + 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, + 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, + 0x49, 0x54, 0x10, 0xf6, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, + 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xfa, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x10, 0xfb, + 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, + 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0xfc, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x10, 0xfd, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, + 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, + 0x4f, 0x4d, 0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, + 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, + 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, + 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x2a, 0x29, + 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x65, + 0x72, 0x6f, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x01, 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, 0x67, 0x61, 0x6d, 0x65, 0x68, + 0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8227,169 +4812,95 @@ func file_game_proto_rawDescGZIP() []byte { return file_game_proto_rawDescData } -var file_game_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_game_proto_msgTypes = make([]protoimpl.MessageInfo, 102) +var file_game_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_game_proto_msgTypes = make([]protoimpl.MessageInfo, 49) var file_game_proto_goTypes = []interface{}{ - (OpResultCode_Game)(0), // 0: gamehall.OpResultCode_Game - (GameHallPacketID)(0), // 1: gamehall.GameHallPacketID - (*CSEnterHall)(nil), // 2: gamehall.CSEnterHall - (*SCEnterHall)(nil), // 3: gamehall.SCEnterHall - (*CSLeaveHall)(nil), // 4: gamehall.CSLeaveHall - (*SCLeaveHall)(nil), // 5: gamehall.SCLeaveHall - (*RoomPlayerInfo)(nil), // 6: gamehall.RoomPlayerInfo - (*RoomInfo)(nil), // 7: gamehall.RoomInfo - (*CSHallRoomList)(nil), // 8: gamehall.CSHallRoomList - (*HallInfo)(nil), // 9: gamehall.HallInfo - (*HallPlayerNum)(nil), // 10: gamehall.HallPlayerNum - (*SCHallRoomList)(nil), // 11: gamehall.SCHallRoomList - (*SCRoomPlayerEnter)(nil), // 12: gamehall.SCRoomPlayerEnter - (*SCRoomPlayerLeave)(nil), // 13: gamehall.SCRoomPlayerLeave - (*SCRoomStateChange)(nil), // 14: gamehall.SCRoomStateChange - (*CSCreateRoom)(nil), // 15: gamehall.CSCreateRoom - (*SCCreateRoom)(nil), // 16: gamehall.SCCreateRoom - (*CSDestroyRoom)(nil), // 17: gamehall.CSDestroyRoom - (*SCDestroyRoom)(nil), // 18: gamehall.SCDestroyRoom - (*CSEnterRoom)(nil), // 19: gamehall.CSEnterRoom - (*SCEnterRoom)(nil), // 20: gamehall.SCEnterRoom - (*CSLeaveRoom)(nil), // 21: gamehall.CSLeaveRoom - (*SCLeaveRoom)(nil), // 22: gamehall.SCLeaveRoom - (*CSReturnRoom)(nil), // 23: gamehall.CSReturnRoom - (*SCReturnRoom)(nil), // 24: gamehall.SCReturnRoom - (*CSGetGameRec)(nil), // 25: gamehall.CSGetGameRec - (*PlayerGameRec)(nil), // 26: gamehall.PlayerGameRec - (*GameRec)(nil), // 27: gamehall.GameRec - (*SCGetGameRec)(nil), // 28: gamehall.SCGetGameRec - (*CSShareSuc)(nil), // 29: gamehall.CSShareSuc - (*SCShareSuc)(nil), // 30: gamehall.SCShareSuc - (*CSForceStart)(nil), // 31: gamehall.CSForceStart - (*SCForceStart)(nil), // 32: gamehall.SCForceStart - (*CSInviteRobot)(nil), // 33: gamehall.CSInviteRobot - (*CSPlayerSwithFlag)(nil), // 34: gamehall.CSPlayerSwithFlag - (*CSShopBuy)(nil), // 35: gamehall.CSShopBuy - (*SCShopBuy)(nil), // 36: gamehall.SCShopBuy - (*CSJoinGame)(nil), // 37: gamehall.CSJoinGame - (*SCJoinGame)(nil), // 38: gamehall.SCJoinGame - (*CSEnterDgGame)(nil), // 39: gamehall.CSEnterDgGame - (*SCEnterDgGame)(nil), // 40: gamehall.SCEnterDgGame - (*CSLeaveDgGame)(nil), // 41: gamehall.CSLeaveDgGame - (*SCLeaveDgGame)(nil), // 42: gamehall.SCLeaveDgGame - (*CSThridAccountStatistic)(nil), // 43: gamehall.CSThridAccountStatistic - (*ThridAccount)(nil), // 44: gamehall.ThridAccount - (*SCThridAccountStatistic)(nil), // 45: gamehall.SCThridAccountStatistic - (*CSThridAccountTransfer)(nil), // 46: gamehall.CSThridAccountTransfer - (*SCThridAccountTransfer)(nil), // 47: gamehall.SCThridAccountTransfer - (*CSEnterThridGame)(nil), // 48: gamehall.CSEnterThridGame - (*SCEnterThridGame)(nil), // 49: gamehall.SCEnterThridGame - (*CSLeaveThridGame)(nil), // 50: gamehall.CSLeaveThridGame - (*SCLeaveThridGame)(nil), // 51: gamehall.SCLeaveThridGame - (*CSThridGameList)(nil), // 52: gamehall.CSThridGameList - (*ThridGameDatas)(nil), // 53: gamehall.ThridGameDatas - (*ThridGamePlatforms)(nil), // 54: gamehall.ThridGamePlatforms - (*SCThridGameList)(nil), // 55: gamehall.SCThridGameList - (*CSThridGameBalanceUpdate)(nil), // 56: gamehall.CSThridGameBalanceUpdate - (*SCThridGameBalanceUpdate)(nil), // 57: gamehall.SCThridGameBalanceUpdate - (*SCThridGameBalanceUpdateState)(nil), // 58: gamehall.SCThridGameBalanceUpdateState - (*CSCreatePrivateRoom)(nil), // 59: gamehall.CSCreatePrivateRoom - (*SCCreatePrivateRoom)(nil), // 60: gamehall.SCCreatePrivateRoom - (*PrivateRoomInfo)(nil), // 61: gamehall.PrivateRoomInfo - (*CSGetPrivateRoomList)(nil), // 62: gamehall.CSGetPrivateRoomList - (*SCGetPrivateRoomList)(nil), // 63: gamehall.SCGetPrivateRoomList - (*CSGetPrivateRoomHistory)(nil), // 64: gamehall.CSGetPrivateRoomHistory - (*PrivateRoomHistory)(nil), // 65: gamehall.PrivateRoomHistory - (*SCGetPrivateRoomHistory)(nil), // 66: gamehall.SCGetPrivateRoomHistory - (*CSDestroyPrivateRoom)(nil), // 67: gamehall.CSDestroyPrivateRoom - (*SCDestroyPrivateRoom)(nil), // 68: gamehall.SCDestroyPrivateRoom - (*CSQueryRoomInfo)(nil), // 69: gamehall.CSQueryRoomInfo - (*QRoomInfo)(nil), // 70: gamehall.QRoomInfo - (*SCQueryRoomInfo)(nil), // 71: gamehall.SCQueryRoomInfo - (*CSGameObserve)(nil), // 72: gamehall.CSGameObserve - (*GameSubRecord)(nil), // 73: gamehall.GameSubRecord - (*SCGameSubList)(nil), // 74: gamehall.SCGameSubList - (*GameState)(nil), // 75: gamehall.GameState - (*SCGameState)(nil), // 76: gamehall.SCGameState - (*LotteryData)(nil), // 77: gamehall.LotteryData - (*SCLotterySync)(nil), // 78: gamehall.SCLotterySync - (*CSLotteryLog)(nil), // 79: gamehall.CSLotteryLog - (*LotteryLog)(nil), // 80: gamehall.LotteryLog - (*SCLotteryLog)(nil), // 81: gamehall.SCLotteryLog - (*SCLotteryBill)(nil), // 82: gamehall.SCLotteryBill - (*GameConfig1)(nil), // 83: gamehall.GameConfig1 - (*CSGetGameConfig)(nil), // 84: gamehall.CSGetGameConfig - (*ChessRankInfo)(nil), // 85: gamehall.ChessRankInfo - (*SCGetGameConfig)(nil), // 86: gamehall.SCGetGameConfig - (*SCChangeGameStatus)(nil), // 87: gamehall.SCChangeGameStatus - (*SCChangeEntrySwitch)(nil), // 88: gamehall.SCChangeEntrySwitch - (*CSEnterGame)(nil), // 89: gamehall.CSEnterGame - (*SCEnterGame)(nil), // 90: gamehall.SCEnterGame - (*CSQuitGame)(nil), // 91: gamehall.CSQuitGame - (*SCQuitGame)(nil), // 92: gamehall.SCQuitGame - (*CSUploadLoc)(nil), // 93: gamehall.CSUploadLoc - (*SCUploadLoc)(nil), // 94: gamehall.SCUploadLoc - (*CSAudienceSit)(nil), // 95: gamehall.CSAudienceSit - (*SCAudienceSit)(nil), // 96: gamehall.SCAudienceSit - (*CSRecordAndNotice)(nil), // 97: gamehall.CSRecordAndNotice - (*CommonNotice)(nil), // 98: gamehall.CommonNotice - (*PlayerRecord)(nil), // 99: gamehall.PlayerRecord - (*SCRecordAndNotice)(nil), // 100: gamehall.SCRecordAndNotice - (*SCNoticeChange)(nil), // 101: gamehall.SCNoticeChange - (*CSRoomEvent)(nil), // 102: gamehall.CSRoomEvent - (*SCRoomEvent)(nil), // 103: gamehall.SCRoomEvent + (OpResultCode_Game)(0), // 0: gamehall.OpResultCode_Game + (GameHallPacketID)(0), // 1: gamehall.GameHallPacketID + (DataType)(0), // 2: gamehall.DataType + (*CSCreateRoom)(nil), // 3: gamehall.CSCreateRoom + (*SCCreateRoom)(nil), // 4: gamehall.SCCreateRoom + (*CSEnterRoom)(nil), // 5: gamehall.CSEnterRoom + (*SCEnterRoom)(nil), // 6: gamehall.SCEnterRoom + (*CSReturnRoom)(nil), // 7: gamehall.CSReturnRoom + (*SCReturnRoom)(nil), // 8: gamehall.SCReturnRoom + (*CSEnterGame)(nil), // 9: gamehall.CSEnterGame + (*SCEnterGame)(nil), // 10: gamehall.SCEnterGame + (*CSQuitGame)(nil), // 11: gamehall.CSQuitGame + (*SCQuitGame)(nil), // 12: gamehall.SCQuitGame + (*GameConfig1)(nil), // 13: gamehall.GameConfig1 + (*CSGetGameConfig)(nil), // 14: gamehall.CSGetGameConfig + (*ChessRankInfo)(nil), // 15: gamehall.ChessRankInfo + (*SCGetGameConfig)(nil), // 16: gamehall.SCGetGameConfig + (*SCChangeGameStatus)(nil), // 17: gamehall.SCChangeGameStatus + (*SCChangeEntrySwitch)(nil), // 18: gamehall.SCChangeEntrySwitch + (*CSCreatePrivateRoom)(nil), // 19: gamehall.CSCreatePrivateRoom + (*SCCreatePrivateRoom)(nil), // 20: gamehall.SCCreatePrivateRoom + (*CSGetPrivateRoomList)(nil), // 21: gamehall.CSGetPrivateRoomList + (*PrivatePlayerInfo)(nil), // 22: gamehall.PrivatePlayerInfo + (*PrivateRoomInfo)(nil), // 23: gamehall.PrivateRoomInfo + (*SCGetPrivateRoomList)(nil), // 24: gamehall.SCGetPrivateRoomList + (*CSQueryRoomInfo)(nil), // 25: gamehall.CSQueryRoomInfo + (*QRoomInfo)(nil), // 26: gamehall.QRoomInfo + (*SCQueryRoomInfo)(nil), // 27: gamehall.SCQueryRoomInfo + (*GameState)(nil), // 28: gamehall.GameState + (*SCGameState)(nil), // 29: gamehall.SCGameState + (*CSAudienceSit)(nil), // 30: gamehall.CSAudienceSit + (*SCAudienceSit)(nil), // 31: gamehall.SCAudienceSit + (*CSRecordAndNotice)(nil), // 32: gamehall.CSRecordAndNotice + (*CommonNotice)(nil), // 33: gamehall.CommonNotice + (*PlayerRecord)(nil), // 34: gamehall.PlayerRecord + (*SCRecordAndNotice)(nil), // 35: gamehall.SCRecordAndNotice + (*SCNoticeChange)(nil), // 36: gamehall.SCNoticeChange + (*CSDestroyRoom)(nil), // 37: gamehall.CSDestroyRoom + (*SCDestroyRoom)(nil), // 38: gamehall.SCDestroyRoom + (*CSLeaveRoom)(nil), // 39: gamehall.CSLeaveRoom + (*SCLeaveRoom)(nil), // 40: gamehall.SCLeaveRoom + (*CSForceStart)(nil), // 41: gamehall.CSForceStart + (*SCForceStart)(nil), // 42: gamehall.SCForceStart + (*CSPlayerSwithFlag)(nil), // 43: gamehall.CSPlayerSwithFlag + (*CSRoomEvent)(nil), // 44: gamehall.CSRoomEvent + (*SCRoomEvent)(nil), // 45: gamehall.SCRoomEvent + (*ItemInfo)(nil), // 46: gamehall.ItemInfo + (*CSTouchType)(nil), // 47: gamehall.CSTouchType + (*RoomConfigInfo)(nil), // 48: gamehall.RoomConfigInfo + (*RoomTypeInfo)(nil), // 49: gamehall.RoomTypeInfo + (*CSRoomConfig)(nil), // 50: gamehall.CSRoomConfig + (*SCRoomConfig)(nil), // 51: gamehall.SCRoomConfig } var file_game_proto_depIdxs = []int32{ - 0, // 0: gamehall.SCEnterHall.OpRetCode:type_name -> gamehall.OpResultCode_Game - 6, // 1: gamehall.RoomInfo.Players:type_name -> gamehall.RoomPlayerInfo - 9, // 2: gamehall.HallPlayerNum.HallData:type_name -> gamehall.HallInfo - 7, // 3: gamehall.SCHallRoomList.Rooms:type_name -> gamehall.RoomInfo - 9, // 4: gamehall.SCHallRoomList.HallData:type_name -> gamehall.HallInfo - 6, // 5: gamehall.SCRoomPlayerEnter.Player:type_name -> gamehall.RoomPlayerInfo - 0, // 6: gamehall.SCCreateRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 7: gamehall.SCDestroyRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 8: gamehall.SCEnterRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 9: gamehall.SCLeaveRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 10: gamehall.SCReturnRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 26, // 11: gamehall.GameRec.Datas:type_name -> gamehall.PlayerGameRec - 27, // 12: gamehall.SCGetGameRec.Recs:type_name -> gamehall.GameRec - 0, // 13: gamehall.SCShareSuc.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 14: gamehall.SCForceStart.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 15: gamehall.SCShopBuy.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 16: gamehall.SCJoinGame.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 17: gamehall.SCEnterDgGame.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 18: gamehall.SCLeaveDgGame.OpRetCode:type_name -> gamehall.OpResultCode_Game - 44, // 19: gamehall.SCThridAccountStatistic.Accounts:type_name -> gamehall.ThridAccount - 0, // 20: gamehall.SCThridAccountTransfer.OpRetCode:type_name -> gamehall.OpResultCode_Game - 44, // 21: gamehall.SCThridAccountTransfer.Accounts:type_name -> gamehall.ThridAccount - 0, // 22: gamehall.SCEnterThridGame.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 23: gamehall.SCLeaveThridGame.OpRetCode:type_name -> gamehall.OpResultCode_Game - 53, // 24: gamehall.ThridGamePlatforms.GameDatas:type_name -> gamehall.ThridGameDatas - 0, // 25: gamehall.SCThridGameList.OpRetCode:type_name -> gamehall.OpResultCode_Game - 54, // 26: gamehall.SCThridGameList.GamePlatforms:type_name -> gamehall.ThridGamePlatforms - 0, // 27: gamehall.SCThridGameBalanceUpdate.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 28: gamehall.SCThridGameBalanceUpdateState.OpRetCode:type_name -> gamehall.OpResultCode_Game - 0, // 29: gamehall.SCCreatePrivateRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 61, // 30: gamehall.SCGetPrivateRoomList.Datas:type_name -> gamehall.PrivateRoomInfo - 65, // 31: gamehall.SCGetPrivateRoomHistory.Datas:type_name -> gamehall.PrivateRoomHistory - 0, // 32: gamehall.SCDestroyPrivateRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game - 70, // 33: gamehall.SCQueryRoomInfo.RoomInfo:type_name -> gamehall.QRoomInfo - 0, // 34: gamehall.SCQueryRoomInfo.OpRetCode:type_name -> gamehall.OpResultCode_Game - 73, // 35: gamehall.SCGameSubList.List:type_name -> gamehall.GameSubRecord - 75, // 36: gamehall.SCGameState.List:type_name -> gamehall.GameState - 77, // 37: gamehall.SCLotterySync.Datas:type_name -> gamehall.LotteryData - 80, // 38: gamehall.SCLotteryLog.Logs:type_name -> gamehall.LotteryLog - 83, // 39: gamehall.SCGetGameConfig.GameCfg:type_name -> gamehall.GameConfig1 - 85, // 40: gamehall.SCGetGameConfig.ChessRanks:type_name -> gamehall.ChessRankInfo - 83, // 41: gamehall.SCChangeGameStatus.GameCfg:type_name -> gamehall.GameConfig1 - 0, // 42: gamehall.SCEnterGame.OpCode:type_name -> gamehall.OpResultCode_Game - 0, // 43: gamehall.SCQuitGame.OpCode:type_name -> gamehall.OpResultCode_Game - 0, // 44: gamehall.SCAudienceSit.OpCode:type_name -> gamehall.OpResultCode_Game - 0, // 45: gamehall.SCRecordAndNotice.OpCode:type_name -> gamehall.OpResultCode_Game - 98, // 46: gamehall.SCRecordAndNotice.List:type_name -> gamehall.CommonNotice - 99, // 47: gamehall.SCRecordAndNotice.Glist:type_name -> gamehall.PlayerRecord - 0, // 48: gamehall.SCRoomEvent.OpCode:type_name -> gamehall.OpResultCode_Game - 49, // [49:49] is the sub-list for method output_type - 49, // [49:49] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 0, // 0: gamehall.SCCreateRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game + 0, // 1: gamehall.SCEnterRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game + 0, // 2: gamehall.SCReturnRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game + 0, // 3: gamehall.SCEnterGame.OpCode:type_name -> gamehall.OpResultCode_Game + 0, // 4: gamehall.SCQuitGame.OpCode:type_name -> gamehall.OpResultCode_Game + 13, // 5: gamehall.SCGetGameConfig.GameCfg:type_name -> gamehall.GameConfig1 + 15, // 6: gamehall.SCGetGameConfig.ChessRanks:type_name -> gamehall.ChessRankInfo + 13, // 7: gamehall.SCChangeGameStatus.GameCfg:type_name -> gamehall.GameConfig1 + 0, // 8: gamehall.SCCreatePrivateRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game + 22, // 9: gamehall.PrivateRoomInfo.Players:type_name -> gamehall.PrivatePlayerInfo + 23, // 10: gamehall.SCGetPrivateRoomList.Datas:type_name -> gamehall.PrivateRoomInfo + 26, // 11: gamehall.SCQueryRoomInfo.RoomInfo:type_name -> gamehall.QRoomInfo + 0, // 12: gamehall.SCQueryRoomInfo.OpRetCode:type_name -> gamehall.OpResultCode_Game + 28, // 13: gamehall.SCGameState.List:type_name -> gamehall.GameState + 0, // 14: gamehall.SCAudienceSit.OpCode:type_name -> gamehall.OpResultCode_Game + 0, // 15: gamehall.SCRecordAndNotice.OpCode:type_name -> gamehall.OpResultCode_Game + 33, // 16: gamehall.SCRecordAndNotice.List:type_name -> gamehall.CommonNotice + 34, // 17: gamehall.SCRecordAndNotice.Glist:type_name -> gamehall.PlayerRecord + 0, // 18: gamehall.SCDestroyRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game + 0, // 19: gamehall.SCLeaveRoom.OpRetCode:type_name -> gamehall.OpResultCode_Game + 0, // 20: gamehall.SCForceStart.OpRetCode:type_name -> gamehall.OpResultCode_Game + 0, // 21: gamehall.SCRoomEvent.OpCode:type_name -> gamehall.OpResultCode_Game + 2, // 22: gamehall.CSTouchType.Tp:type_name -> gamehall.DataType + 46, // 23: gamehall.RoomConfigInfo.Cost:type_name -> gamehall.ItemInfo + 46, // 24: gamehall.RoomConfigInfo.Reward:type_name -> gamehall.ItemInfo + 48, // 25: gamehall.RoomTypeInfo.List:type_name -> gamehall.RoomConfigInfo + 49, // 26: gamehall.SCRoomConfig.List:type_name -> gamehall.RoomTypeInfo + 27, // [27:27] is the sub-list for method output_type + 27, // [27:27] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_game_proto_init() } @@ -8399,162 +4910,6 @@ func file_game_proto_init() { } if !protoimpl.UnsafeEnabled { file_game_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSEnterHall); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCEnterHall); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLeaveHall); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLeaveHall); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoomPlayerInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoomInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSHallRoomList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HallInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HallPlayerNum); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCHallRoomList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCRoomPlayerEnter); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCRoomPlayerLeave); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCRoomStateChange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSCreateRoom); i { case 0: return &v.state @@ -8566,7 +4921,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCCreateRoom); i { case 0: return &v.state @@ -8578,31 +4933,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSDestroyRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCDestroyRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSEnterRoom); i { case 0: return &v.state @@ -8614,7 +4945,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCEnterRoom); i { case 0: return &v.state @@ -8626,31 +4957,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLeaveRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLeaveRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSReturnRoom); i { case 0: return &v.state @@ -8662,7 +4969,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCReturnRoom); i { case 0: return &v.state @@ -8674,775 +4981,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSGetGameRec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerGameRec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameRec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCGetGameRec); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSShareSuc); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCShareSuc); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSForceStart); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCForceStart); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSInviteRobot); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPlayerSwithFlag); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSShopBuy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCShopBuy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSJoinGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCJoinGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSEnterDgGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCEnterDgGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLeaveDgGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLeaveDgGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSThridAccountStatistic); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ThridAccount); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCThridAccountStatistic); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSThridAccountTransfer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCThridAccountTransfer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSEnterThridGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCEnterThridGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLeaveThridGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLeaveThridGame); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSThridGameList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ThridGameDatas); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ThridGamePlatforms); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCThridGameList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSThridGameBalanceUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCThridGameBalanceUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCThridGameBalanceUpdateState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSCreatePrivateRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCCreatePrivateRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrivateRoomInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSGetPrivateRoomList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCGetPrivateRoomList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSGetPrivateRoomHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrivateRoomHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCGetPrivateRoomHistory); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSDestroyPrivateRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCDestroyPrivateRoom); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSQueryRoomInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QRoomInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCQueryRoomInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSGameObserve); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameSubRecord); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCGameSubList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCGameState); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LotteryData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLotterySync); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLotteryLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LotteryLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLotteryLog); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLotteryBill); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameConfig1); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSGetGameConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChessRankInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCGetGameConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCChangeGameStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCChangeEntrySwitch); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_game_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSEnterGame); i { case 0: return &v.state @@ -9454,7 +4993,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCEnterGame); i { case 0: return &v.state @@ -9466,7 +5005,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSQuitGame); i { case 0: return &v.state @@ -9478,7 +5017,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCQuitGame); i { case 0: return &v.state @@ -9490,8 +5029,8 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSUploadLoc); i { + file_game_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GameConfig1); i { case 0: return &v.state case 1: @@ -9502,8 +5041,8 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCUploadLoc); i { + file_game_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSGetGameConfig); i { case 0: return &v.state case 1: @@ -9514,7 +5053,187 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ChessRankInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCGetGameConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCChangeGameStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCChangeEntrySwitch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSCreatePrivateRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCCreatePrivateRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSGetPrivateRoomList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrivatePlayerInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrivateRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCGetPrivateRoomList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSQueryRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*QRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCQueryRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GameState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCGameState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSAudienceSit); i { case 0: return &v.state @@ -9526,7 +5245,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCAudienceSit); i { case 0: return &v.state @@ -9538,7 +5257,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSRecordAndNotice); i { case 0: return &v.state @@ -9550,7 +5269,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommonNotice); i { case 0: return &v.state @@ -9562,7 +5281,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PlayerRecord); i { case 0: return &v.state @@ -9574,7 +5293,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCRecordAndNotice); i { case 0: return &v.state @@ -9586,7 +5305,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCNoticeChange); i { case 0: return &v.state @@ -9598,7 +5317,91 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSDestroyRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCDestroyRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSLeaveRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCLeaveRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSForceStart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCForceStart); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPlayerSwithFlag); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CSRoomEvent); i { case 0: return &v.state @@ -9610,7 +5413,7 @@ func file_game_proto_init() { return nil } } - file_game_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_game_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SCRoomEvent); i { case 0: return &v.state @@ -9622,14 +5425,86 @@ func file_game_proto_init() { return nil } } + file_game_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSTouchType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoomConfigInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoomTypeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSRoomConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCRoomConfig); 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{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_game_proto_rawDesc, - NumEnums: 2, - NumMessages: 102, + NumEnums: 3, + NumMessages: 49, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/gamehall/game.proto b/protocol/gamehall/game.proto index 33cc8fb..59fdfcf 100644 --- a/protocol/gamehall/game.proto +++ b/protocol/gamehall/game.proto @@ -30,6 +30,9 @@ enum OpResultCode_Game { OPRC_AllocRoomIdFailed_Game = 1097; //房间id获取失败 OPRC_PrivateRoomCountLimit_Game = 1098; //私人房间上限 OPRC_RoomNotExit = 1099; // 已经不在房间了 + OPRC_MatchAudience = 1100; // 不在比赛观战白名单 + OPRC_PasswordError = 1101; //密码错误 + OPRC_CostNotEnough = 1102; //房卡不足 OPRC_LowerRice_ScenceMax_Game = 1075; //超过最大下米数量 OPRC_LowerRice_PlayerMax_Game = 1076; //超过单个用户最大下米数 @@ -47,203 +50,84 @@ enum OpResultCode_Game { OPRC_Dg_QuotaNotEnough_Game = 9003; //平台DG配额不足 OPRC_Thr_GameClose_Game = 9010; //游戏维护中 } -//消息id 2200-2319 + enum GameHallPacketID { - PACKET_GameHall_ZERO = 0; // 弃用消息号 - PACKET_CS_JOINGAME = 2200; - PACKET_SC_JOINGAME = 2201; + // client -> worldsrv 协议 + // 消息id 2200-2319 + // 弃用消息号 + PACKET_GameHall_ZERO = 0; + // 创建房间 PACKET_CS_CREATEROOM = 2202; PACKET_SC_CREATEROOM = 2203; + // 进入房间 PACKET_CS_ENTERROOM = 2204; PACKET_SC_ENTERROOM = 2205; + // 返回房间 PACKET_CS_RETURNROOM = 2206; PACKET_SC_RETURNROOM = 2207; - PACKET_CS_AUDIENCE_ENTERROOM = 2208; + // 进入游戏 PACKET_CS_ENTERGAME = 2209; PACKET_SC_ENTERGAME = 2210; - + // 退出游戏 PACKET_CS_QUITGAME = 2211; PACKET_SC_QUITGAME = 2212; - PACKET_SC_CARDGAINWAY = 2213; - PACKET_CS_TASKLIST = 2214; - PACKET_SC_TASKLIST = 2215; - PACKET_SC_TASKCHG = 2216; - PACKET_SC_TACKCOMPLETE = 2217; - PACKET_SC_TASKDEL = 2218; - PACKET_CS_TACKDRAWPRIZE = 2219; - PACKET_SC_TACKDRAWPRIZE = 2220; - - PACKET_CS_GETAGENTGAMEREC = 2223; - PACKET_SC_GETAGENTGAMEREC = 2224; - PACKET_CS_DELAGENTGAMEREC = 2225; - PACKET_CS_SHOPBUY = 2226; - PACKET_SC_SHOPBUY = 2227; - PACKET_SC_LIMITLIST = 2228; - PACKET_CS_GETLATELYGAMEIDS = 2229; - PACKET_SC_GETLATELYGAMEIDS = 2230; - + // 获取游戏分场配置 PACKET_CS_GETGAMECONFIG = 2231; PACKET_SC_GETGAMECONFIG = 2232; + // 修改游戏开关 PACKET_SC_CHANGEGAMESTATUS = 2233; - PACKET_CS_ENTERHALL = 2240; - PACKET_SC_ENTERHALL = 2241; - PACKET_CS_LEAVEHALL = 2242; - PACKET_SC_LEAVEHALL = 2243; - PACKET_CS_HALLROOMLIST = 2244; - PACKET_SC_HALLROOMLIST = 2245; - PACKET_SC_ROOMPLAYERENTER = 2246; - PACKET_SC_ROOMPLAYERLEAVE = 2247; - PACKET_SC_ROOMSTATECHANG = 2248; - PACKET_SC_HALLPLAYERNUM = 2249; - PACKET_SC_BULLETIONINFO = 2250; + // 充值弹框协议 + PACKET_SC_PLAYERRECHARGEANSWER = 2258; - PACKET_CS_BULLETIONINFO = 2251; - PACKET_CS_CUSTOMERINFOLIST = 2252; - PACKET_SC_CUSTOMERINFOLIST = 2253; - PACKET_CS_ENTERDGGAME = 2254; - PACKET_SC_ENTERDGGAME = 2255; - PACKET_CS_LEAVEDGGAME = 2256; - PACKET_SC_LEAVEDGGAME = 2257; - PACKET_SC_PLAYERRECHARGEANSWER = 2258;//充值弹框协议 - PACKET_CS_THRIDACCOUNTSTATICSTIC = 2259; - PACKET_SC_THRIDACCOUNTSTATICSTIC = 2260; - - PACKET_CS_THRIDACCOUNTTRANSFER = 2261; - PACKET_SC_THRIDACCOUNTTRANSFER = 2262; - PACKET_CS_ENTERTHRIDGAME = 2263; - PACKET_SC_ENTERTHRIDGAME = 2264; - PACKET_CS_LEAVETHRIDGAME = 2265; - PACKET_SC_LEAVETHRIDGAME = 2266; - PACKET_CS_THRIDGAMELIST = 2267; - PACKET_SC_THRIDGAMELIST = 2268; - PACKET_CS_THRIDGAMEBALANCEUPDATE = 2269; - PACKET_SC_THRIDGAMEBALANCEUPDATE = 2270; - - PACKET_SC_THRIDGAMEBALANCEUPDATESTATE = 2271; + // 创建竞技馆私人房 PACKET_CS_CREATEPRIVATEROOM = 2272; PACKET_SC_CREATEPRIVATEROOM = 2273; + // 查询竞技馆私人房列表 PACKET_CS_GETPRIVATEROOMLIST = 2274; PACKET_SC_GETPRIVATEROOMLIST = 2275; - PACKET_CS_GETPRIVATEROOMHISTORY = 2276; - PACKET_SC_GETPRIVATEROOMHISTORY = 2277; - PACKET_CS_DESTROYPRIVATEROOM = 2278; - PACKET_SC_DESTROYPRIVATEROOM = 2279; + + // 查询自由桌房间列表 PACKET_CS_QUERYROOMINFO = 2280; - PACKET_SC_QUERYROOMINFO = 2281; - PACKET_SC_GAMESUBLIST = 2283; - PACKET_CS_GAMEOBSERVE = 2284; + // 同步房间下注状态 PACKET_SC_GAMESTATE = 2285; - PACKET_SC_SYNCGAMEFREE = 2286; - PACKET_SC_LOTTERYSYNC = 2287; - PACKET_CS_LOTTERYLOG = 2288; - PACKET_SC_LOTTERYLOG = 2289; - PACKET_SC_LOTTERYBILL = 2290; - - PACKET_CS_UPLOADLOC = 2291; - PACKET_SC_UPLOADLOC = 2292; + // 观众进入房间 + PACKET_CS_AUDIENCE_ENTERROOM = 2208; + // 观众坐下 PACKET_CS_AUDIENCESIT = 2293; PACKET_SC_AUDIENCESIT = 2294; + // 公告 PACKET_CS_COMNOTICE = 2295; PACKET_SC_COMNOTICE = 2296; - PACKET_SC_CHANGEENTRYSWITCH = 2297;//界面入口开关 - PACKET_SC_NoticeChange = 2298; // 公告更新 + // 界面入口开关 + PACKET_SC_CHANGEENTRYSWITCH = 2297; + // 公告更新 + PACKET_SC_NoticeChange = 2298; + // 保持更新 + PACKET_CSTouchType = 2299; + // 竞技馆房间信息 + PACKET_CSRoomConfig = 2300; + PACKET_SCRoomConfig = 2301; + + // client -> gamesrv 协议 + // 消息id 8000~8099 + // 离开房间 PACKET_CS_LEAVEROOM = 8001; PACKET_SC_LEAVEROOM = 8002; + // 解散房间 PACKET_CS_DESTROYROOM = 8003; PACKET_SC_DESTROYROOM = 8004; + // 强制开始 PACKET_CS_FORCESTART = 8005; PACKET_SC_FORCESTART = 8006; + // 观众离开房间 PACKET_CS_AUDIENCE_LEAVEROOM = 8007; + // 玩家切换标志,暂离状态 PACKET_CS_PLAYER_SWITCHFLAG = 8008; - PACKET_CSRoomEvent = 8009; // 房间事件 - PACKET_SCRoomEvent = 8010; // 房间事件 -} -//进入游戏大厅 -//PACKET_CS_ENTERHALL -message CSEnterHall{ - int32 HallId = 1; //厅id(详见:DB_GameFree.xlxs中的id) -} - -//PACKET_SC_ENTERHALL -message SCEnterHall{ - int32 HallId = 1; //厅id(详见:DB_GameFree.xlxs中的id) - OpResultCode_Game OpRetCode = 2; //结果 -} - -//离开游戏大厅 -//PACKET_CS_LEAVEHALL -message CSLeaveHall{ -} - -//PACKET_SC_LEAVEHALL -message SCLeaveHall{ - int32 HallId = 1; -} - -//房间内玩家信息 -message RoomPlayerInfo{ - int32 SnId = 1; //数字账号 - int32 Head = 2; //头像 - int32 Sex = 3; //性别 - string Name = 4; //名字 - int32 Pos = 5; //位置 - int32 Flag = 6; //状态 - int32 HeadOutLine = 7; //头像框 - int32 VIP = 8; -} - -//房间信息 -message RoomInfo{ - int32 RoomId = 1; //房号 - bool Starting = 7; //牌局是否开始 - repeated RoomPlayerInfo Players = 5; -} - -//PACKET_CS_HALLROOMLIST -message CSHallRoomList{ - int32 HallId = 1; //厅id(详见:DB_GameFree.xlxs中的id) -} - -//大厅人数 -message HallInfo{ - int32 SceneType = 1; //场 - int32 PlayerNum = 2; //人数 -} - -//PACKET_SC_HALLPLAYERNUM -message HallPlayerNum{ - repeated HallInfo HallData = 1; //大厅人数 -} -//PACKET_SC_HALLROOMLIST -message SCHallRoomList{ - int32 HallId = 1; //厅id - int32 GameId = 2; //游戏id - int32 GameMode = 3; //游戏模式 - bool IsAdd = 4; //是否新增 - repeated int32 Params = 5; //游戏规则参数 - repeated RoomInfo Rooms = 6; //房间列表 - repeated HallInfo HallData = 7; //大厅人数 -} - -//PACKET_SC_ROOMPLAYERENTER -message SCRoomPlayerEnter{ - int32 RoomId = 1; - RoomPlayerInfo Player = 2; -} - -//PACKET_SC_ROOMPLAYERLEAVE -message SCRoomPlayerLeave{ - int32 RoomId = 1; - int32 Pos = 2; -} - -//PACKET_SC_ROOMSTATECHANG -message SCRoomStateChange{ - int32 RoomId = 1; - bool Starting = 2; - int32 State = 3; + // 房间事件,互动表情 + PACKET_CSRoomEvent = 8009; + PACKET_SCRoomEvent = 8010; } //PACKET_CS_CREATEROOM @@ -259,7 +143,6 @@ message CSCreateRoom{ repeated int32 Params = 5; int32 Id = 6; // gamefreeid } - //PACKET_SC_CREATEROOM message SCCreateRoom{ int32 GameId = 1; //游戏模式 @@ -270,48 +153,24 @@ message SCCreateRoom{ OpResultCode_Game OpRetCode = 6; //结果 } -//PACKET_CS_DESTROYROOM -message CSDestroyRoom{ -} -//PACKET_SC_DESTROYROOM -message SCDestroyRoom{ - int32 RoomId = 1; //房间编号 - OpResultCode_Game OpRetCode = 2; //结果 - int32 IsForce = 3; //是否强制销毁 -} - //PACKET_CS_ENTERROOM //PACKET_CS_AUDIENCE_ENTERROOM //玩家请求进入游戏 message CSEnterRoom{ int32 RoomId = 1; //房间编号 int32 GameId = 2; //游戏编号 + string Password = 3; //房间密码 } - //PACKET_SC_ENTERROOM message SCEnterRoom{ int32 GameId = 1; //游戏ID - int32 ModeType = 2; //场类型 + int32 ModeType = 2; //游戏模式(玩法,已经不用了) repeated int32 Params = 3; //场参数 int32 RoomId = 4; //房间编号 int32 HallId = 5; //厅id OpResultCode_Game OpRetCode = 6; //结果 int32 ClubId = 7; -} - -//PACKET_CS_LEAVEROOM -//PACKET_CS_AUDIENCE_LEAVEROOM -//玩家离开房间,返回大厅 -message CSLeaveRoom{ - int32 Mode = 1; //离开方式 0:退出 1:暂离(占着座位,返回大厅) -} - -//PACKET_SC_LEAVEROOM -message SCLeaveRoom{ - OpResultCode_Game OpRetCode = 1; //结果 - int32 Reason = 2;//原因 0:主动退出 1:被踢出 - int32 RoomId = 3;//房间ID - int32 Mode = 4; + int32 GameFreeId = 8; //游戏场次id } //PACKET_CS_RETURNROOM @@ -322,7 +181,6 @@ message CSReturnRoom{ int32 RoomId = 4; //int32 LogicId = 5; //这个字段是冗余的 } - //PACKET_SC_RETURNROOM message SCReturnRoom{ OpResultCode_Game OpRetCode = 1; //结果 @@ -339,419 +197,6 @@ message SCReturnRoom{ int32 ClubId = 12; } - - -//获取游戏记录 -//PACKET_CS_GETGAMEREC -message CSGetGameRec{ - int32 Ver = 1; - int32 GameId = 2; -} - -message PlayerGameRec{ - int32 Id = 1; - string Name = 2; - int32 Head = 3; - int64 Coin = 4; - int32 Pos = 5; - repeated int32 OtherParams = 6; -} - -message GameRec{ - int32 RecId = 1; - repeated PlayerGameRec Datas = 2; - int64 Ts = 3; - int32 RoomId = 4; - int32 GameMode = 5; - int32 SceneType = 6; - int32 GameId = 7; - int32 TotalOfGames = 8; - int32 NumOfGames = 9; - int32 RoomFeeMode = 10; - int32 RoomCardCnt = 11; - repeated int32 Params = 12; - int32 GameTime = 13; -} - -//PACKET_SC_GETGAMEREC -message SCGetGameRec{ - repeated GameRec Recs = 1; - int32 Ver = 2; - int32 GameId = 3; -} - -//PACKET_CS_SHARESUC -message CSShareSuc{ - int32 ShareType = 1; //分享类型 1:微信好友 2:朋友圈 -} - -//PACKET_SC_SHARESUC -message SCShareSuc{ - OpResultCode_Game OpRetCode = 1; //结果 -} - -//PACKET_CS_FORCESTART -message CSForceStart{ -} - -//PACKET_SC_FORCESTART -message SCForceStart{ - OpResultCode_Game OpRetCode = 1; //结果 -} - -//PACKET_CS_INVITEROBOT -message CSInviteRobot{ - int32 GameId = 1; - bool IsAgent = 2; //0:自己玩 1:机器人代替我 -} - -//玩家设置标记 -//PACKET_CS_PLAYER_SWITCHFLAG -message CSPlayerSwithFlag{ - int32 Flag = 1; - int32 Mark = 2; //1:设置 0:取消 -} - -//玩家商城购买 -//PACKET_CS_SHOPBUY -message CSShopBuy{ - int32 Id = 1; //商品ID - int32 Count = 2; //数量 -} - -//PACKET_SC_SHOPBUY -message SCShopBuy{ - int32 Id = 1; - OpResultCode_Game OpRetCode = 2; //结果 - int32 CostType = 3; //消耗类型 - int32 CostNum = 4; //消耗数量 - int32 GainType = 5; //获得类型 - int32 GainNum = 6; //获得数量 -} - -//CS_JOINGAME -//请求的通知 -message CSJoinGame{ - int32 MsgType = 1;//0.请求信息1.确认信息 - int32 SnId = 2;//type=1发送,为服务器下发的数据,原数据发送 - int32 Pos = 3;//type=0时发送,为申请坐下的位置,索引0开始 - bool Agree = 4;//type=1时发送,true为同意,false为拒绝 -} -//SC_TJOINGAME -//请求的通知 -message SCJoinGame{ - int32 MsgType = 1;//0.请求信息1.确认信息 - string Name = 2;//type=0为申请者的昵称,和snid同步发送,广播范围是房间内用户 - int32 SnId = 3;//type=0申请者ID - OpResultCode_Game OpRetCode = 4;//type=1时,为申请的结果,为0成功,其他的为错误代码 1 座位已满 2 观战人数已满 -} -//PACKET_CS_ENTERDGGAME -message CSEnterDgGame{ - int32 LoginType = 1;//0.试玩登录1.正常登录 - int32 DgGameId = 2;//游戏ID - string Domains = 3;//sdk - -} -message SCEnterDgGame{ - OpResultCode_Game OpRetCode = 1; //结果 - string LoginUrl = 2; - string Token = 3; - int32 DgGameId = 4;//游戏ID - int32 CodeId = 5; - string Domains = 6; - repeated string List = 7; -} -//PACKET_CS_LEAVEDGGAME -message CSLeaveDgGame{ -} -message SCLeaveDgGame{ - OpResultCode_Game OpRetCode = 1; //结果 -} - -//第三方个人账户信息统计 -message CSThridAccountStatistic{ - int32 ReqId = 1; //-1返回全部平台信息,0为系统平台 -} -message ThridAccount{ - int32 ThridPlatformId = 1; - string Name = 2; - int32 Status = 3; //200正常,403异常 - int64 Balance = 4; -} -message SCThridAccountStatistic{ - int32 ReqId = 1; - repeated ThridAccount Accounts = 2; -} - -//第三方个人账户余额转入转出 -message CSThridAccountTransfer{ - int32 FromId = 1; - int32 ToId = 2; - int64 Amount = 3; -} -message SCThridAccountTransfer{ - OpResultCode_Game OpRetCode = 1; //结果 - repeated ThridAccount Accounts = 2; //OpRetCode为0时,两条数据 分别是from to -} - -message CSEnterThridGame{ - int32 ThridGameId = 2;//第三方游戏ID -} -message SCEnterThridGame{ - OpResultCode_Game OpRetCode = 1; //结果 - string EnterUrl = 2; - int32 ScreenOrientationType = 3; - int32 ThridGameId = 4;//第三方游戏ID -} - -message CSLeaveThridGame{ -} -message SCLeaveThridGame{ - OpResultCode_Game OpRetCode = 1; //结果 -} - -message CSThridGameList{ -} - -message ThridGameDatas{ - string ThridGameId = 1;//第三方游戏ID - string ThridGameName = 2;//游戏名 -} - -message ThridGamePlatforms{ - int32 ThridPlatformId = 1; - string ThridPlatformName = 2;//平台名 - repeated ThridGameDatas GameDatas = 3; -} - -message SCThridGameList{ - OpResultCode_Game OpRetCode = 1; //结果 - repeated ThridGamePlatforms GamePlatforms = 2; -} - -message CSThridGameBalanceUpdate{ -} -message SCThridGameBalanceUpdate{ - OpResultCode_Game OpRetCode = 1; //结果 - int64 Coin = 2;//玩家的余额 -} -message SCThridGameBalanceUpdateState{ - OpResultCode_Game OpRetCode = 1; //结果 -} - -//创建私人房间 -//PACKET_CS_CREATEPRIVATEROOM -message CSCreatePrivateRoom{ - int32 GameFreeId = 1; //游戏id - repeated int32 Params = 2; //场参数 1:局数索引(从1开始) 2:中途加入 3:同IP -} - -//创建私人房间 -//PACKET_SC_CREATEPRIVATEROOM -message SCCreatePrivateRoom{ - //游戏ID - int32 GameFreeId = 1; //游戏id - repeated int32 Params = 2; //场参数 1:局数索引(从1开始) 2:中途加入 3:同IP - int32 RoomId = 3; //房间编号 - OpResultCode_Game OpRetCode = 4; //结果 -} - -//个人创建的房间信息 -message PrivateRoomInfo{ - int32 GameFreeId = 1; //游戏id - int32 RoomId = 2; //房间编号 - int32 CurrRound = 3; //当前第几轮 - int32 MaxRound = 4; //最多多少轮 - int32 CurrNum = 5; //当前人数 - int32 MaxPlayer = 6; //最大人数 - int32 CreateTs = 7; //创建时间戳 -} - -//获取代开的房间列表 -//PACKET_CS_GETPRIVATEROOMLIST -message CSGetPrivateRoomList{ -} - -//PACKET_SC_GETPRIVATEROOMLIST -message SCGetPrivateRoomList{ - repeated PrivateRoomInfo Datas = 1; //房间列表 -} - -//获取代开的房间历史记录 -//PACKET_CS_GETPRIVATEROOMHISTORY -message CSGetPrivateRoomHistory{ - int32 QueryTime = 1; //查询日期 YYYYMMDD -} - -//已开房间历史记录 -message PrivateRoomHistory{ - int32 GameFreeId = 1; //游戏id - int32 RoomId = 2; //房间编号 - int32 CreateTime = 3; //创建时间,时间戳 - int32 DestroyTime = 4; //结束时间,时间戳 - int32 CreateFee = 5; //房费 -} - -//PACKET_SC_GETPRIVATEROOMHISTORY -message SCGetPrivateRoomHistory{ - int32 QueryTime = 1; //查询日期 - repeated PrivateRoomHistory Datas = 2; //历史开房记录 -} - -//PACKET_CS_DESTROYPRIVATEROOM -message CSDestroyPrivateRoom{ - int32 RoomId = 1; -} - -//PACKET_SC_DESTROYPRIVATEROOM -message SCDestroyPrivateRoom{ - int32 RoomId = 1; //房间编号 - OpResultCode_Game OpRetCode = 2; //结果 - int32 State = 3; //状态 0:删除中 1:已删除 -} - -//PACKET_CS_QUERYROOMINFO -message CSQueryRoomInfo{ - repeated int32 GameIds = 1; - int32 GameSite = 2; //1.初级 2.中级 3.高级 - repeated int32 Id = 3; //gamefreeid - int32 SceneMode = 4; // 0公共房 2私人房 -} - -//个人创建的房间信息 -message QRoomInfo{ - int32 GameFreeId = 1; //游戏id - int32 GameId = 2; - int32 RoomId = 3; //房间编号 - int64 BaseCoin = 4; - int64 LimitCoin = 5; - int32 CurrNum = 6; //当前人数 - int32 MaxPlayer = 7; //最大人数 - int32 Creator = 8; - int32 CreateTs = 9; //创建时间戳 - repeated int32 Params = 10; // 建房参数 -} - -//PACKET_SC_QUERYROOMINFO -message SCQueryRoomInfo{ - repeated int32 GameIds = 1; - int32 GameSite = 2; //1.初级 2.中级 3.高级 - repeated QRoomInfo RoomInfo = 3; //房间列表 - OpResultCode_Game OpRetCode = 4; //结果 -} -//注册观察者,用于推送游戏的状态信息 -//PACKET_CS_GAMEOBSERVE -message CSGameObserve{ - int32 GameId = 1; //游戏ID - bool StartOrEnd = 2; //打开或者关闭 -} -//PACKET_SC_GAMESUBLIST -message GameSubRecord { - int32 GameFreeId = 1; - int32 LogCnt = 2; - int32 NewLog = 3; //新结果 - repeated int32 TotleLog = 4; //最近几局的中奖结果 -} -message SCGameSubList { - repeated GameSubRecord List = 1; -} -//游戏中的状态 -message GameState { - int32 GameFreeId = 1; - int64 Ts = 2; - int32 Sec = 3; -} -message SCGameState { - repeated GameState List = 1; -} - -//奖金池数据 -message LotteryData { - int32 GameFreeId = 1; - int64 Value = 2; -} -//奖金池同步 PACKET_SC_LOTTERYSYNC -message SCLotterySync { - repeated LotteryData Datas = 1; -} - -//PACKET_CS_LOTTERYLOG = 2288; -message CSLotteryLog { - int32 GameFreeId = 1; -} - -//奖池中奖记录 -message LotteryLog { - int32 Time = 1; - string NickName = 2; - repeated int32 Card = 3; - int32 Kind = 4; - int32 Coin = 5; -} - -//PACKET_SC_LOTTERYLOG = 2289; -message SCLotteryLog { - int32 GameFreeId = 1; - repeated LotteryLog Logs = 2; -} - -//PACKET_SC_LOTTERYBILL = 2290 -message SCLotteryBill { - int32 GameFreeId = 1; - int32 SnId = 2; - string Name = 3; - int32 Kind = 4; - repeated int32 Card = 5; - int64 Value = 6; -} - -message GameConfig1{ - int32 LogicId = 1; //对应DB_GameFree.xlsx中的id - int64 LimitCoin = 2; //进房下限 - int64 MaxCoinLimit = 3;//入场上限 - int32 BaseScore = 4; //底分 - repeated int64 OtherIntParams = 5; //其他参数 - int32 BetScore = 6; //押注限制 - repeated int32 MaxBetCoin = 7; //多门押注限制 - int32 MatchMode = 8;//0:默认1:队列 - int64 LotteryCoin = 9;//彩金池 - string LotteryCfg = 10;//彩金池配置 - bool Status = 11; //游戏开关 全局开关&&平台开关 - int32 SceneType = 12; // 场次类型 - repeated int32 ChessGradeLimit =13; // 入场象棋积分限制区间 - int32 RankType = 14; // 段位类型 - int32 SceneAdd = 15; // 场次加成 -} -//PACKET_CS_GETGAMECONFIG = 2231 -message CSGetGameConfig { - string Platform = 1; //平台 - string Channel = 2; //渠道号 - int32 GameId = 3; //游戏id -} - -message ChessRankInfo { - int32 Score = 1; // 积分 - string Name = 2; // 段位名称 -} - -//PACKET_SC_GETGAMECONFIG = 2232 -message SCGetGameConfig { - repeated GameConfig1 GameCfg = 1;//指定游戏的配置信息 - int32 GameId = 2; //游戏Id - repeated ChessRankInfo ChessRanks = 3; //段位表 -} - -//PACKET_SC_CHANGEGAMESTATUS == 2233 -message SCChangeGameStatus { - repeated GameConfig1 GameCfg = 1; //全局游戏状态发生变动,且自身平台游戏转台处于开启 -} - -//PACKET_SC_CHANGEENTRYSWITCH -message SCChangeEntrySwitch { - int32 Index = 1; // 游戏id - repeated bool Switch = 2; // 0:游戏入口开关 1:hot开关 2:new开关 -} - //PACKET_CS_ENTERGAME message CSEnterGame { int32 Id = 1; //游戏id @@ -770,6 +215,7 @@ message SCEnterGame { int32 MinResVer = 6; //最低资源版本号 int32 LatestResVer = 7; //最新资源版本号 } + //PACKET_CS_QUITGAME message CSQuitGame { int32 Id = 1; //游戏id @@ -781,19 +227,157 @@ message SCQuitGame { int32 Id = 2; int32 Reason = 3;//原因 } -//PACKET_CS_UPLOADLOC -message CSUploadLoc{ - int32 Longitude = 1; //经度 - int32 Latitude = 2; //纬度 - string City = 3; //城市 例:中国-河南省-郑州市 + +message GameConfig1{ + int32 LogicId = 1; //对应DB_GameFree.xlsx中的id + int64 LimitCoin = 2; //进房下限 + int64 MaxCoinLimit = 3;//入场上限 + int32 BaseScore = 4; //底分 + repeated int64 OtherIntParams = 5; //其他参数 + int32 BetScore = 6; //押注限制 + repeated int32 MaxBetCoin = 7; //多门押注限制 + int32 MatchMode = 8;//0:默认1:队列 + int64 LotteryCoin = 9;//彩金池 + string LotteryCfg = 10;//彩金池配置 + bool Status = 11; //游戏开关 全局开关&&平台开关 + int32 SceneType = 12; // 场次类型 + repeated int32 ChessGradeLimit =13; // 入场象棋积分限制区间 + int32 RankType = 14; // 段位类型 + int32 SceneAdd = 15; // 场次加成 } -//PACKET_SC_UPLOADLOC -message SCUploadLoc{ - int32 Pos = 1; - int32 Longitude = 2; //经度 - int32 Latitude = 3; //纬度 - string City = 4; //城市 例:中国-河南省-郑州市 +//PACKET_CS_GETGAMECONFIG +message CSGetGameConfig { + string Platform = 1; //平台 + string Channel = 2; //渠道号 + int32 GameId = 3; //游戏id +} + +message ChessRankInfo { + int32 Score = 1; // 积分 + string Name = 2; // 段位名称 +} + +//PACKET_SC_GETGAMECONFIG +message SCGetGameConfig { + repeated GameConfig1 GameCfg = 1;//指定游戏的配置信息 + int32 GameId = 2; //游戏Id + repeated ChessRankInfo ChessRanks = 3; //段位表 +} + +//PACKET_SC_CHANGEGAMESTATUS == 2233 +message SCChangeGameStatus { + repeated GameConfig1 GameCfg = 1; //全局游戏状态发生变动,且自身平台游戏转台处于开启 +} + +//PACKET_SC_CHANGEENTRYSWITCH +message SCChangeEntrySwitch { + int32 Index = 1; // 游戏id + repeated bool Switch = 2; // 0:游戏入口开关 1:hot开关 2:new开关 +} + +//创建竞技馆私人房间 +//PACKET_CS_CREATEPRIVATEROOM +message CSCreatePrivateRoom{ + int32 GameFreeId = 1; //游戏id + int32 RoomTypeId = 2; //房间类型id + int32 RoomConfigId = 3; //房间配置id + int32 Round = 4; //局数 + int32 PlayerNum = 5; //人数 + int32 NeedPassword = 6; //是否需要密码 1需要 + int32 CostType = 7; // 房卡支付方式 1AA 2房主 + int32 Voice = 8; //是否开启语音 1开启 +} +//PACKET_SC_CREATEPRIVATEROOM +message SCCreatePrivateRoom{ + OpResultCode_Game OpRetCode = 1; //结果 + int32 GameFreeId = 2; //游戏id + int32 RoomTypeId = 3; //房间类型id + int32 RoomConfigId = 4; //房间配置id + int32 Round = 5; //局数 + int32 PlayerNum = 6; //人数 + int32 NeedPassword = 7; //是否需要密码 1需要 + int32 CostType = 8; //房卡支付方式 1AA 2房主 + int32 Voice = 9; //是否开启语音 1开启 + int32 RoomId = 10; //房间id + string Password = 11; //房间密码 +} + +//PACKET_CS_GETPRIVATEROOMLIST +message CSGetPrivateRoomList{ + int32 RoomConfigId = 1; //房间配置id + int32 GameFreeId = 2; // 场次id + int32 RoomId = 3; // 房间id + int32 RoomTypeId = 4; // 玩法类型id +} + +message PrivatePlayerInfo{ + int32 SnId = 1; // 玩家id + string Name = 2; // 玩家昵称 + int32 UseRoleId = 3;//使用的人物模型id +} + +//个人创建的房间信息 +message PrivateRoomInfo{ + int32 GameFreeId = 1; //场次id + int32 GameId = 2; //游戏id + int32 RoomTypeId = 3; //玩法类型id + int32 RoomConfigId = 4; //房间配置id + int32 RoomId = 5; //房间号 + int32 NeedPassword = 6; //是否需要密码 1是 + int32 CurrRound = 7; //当前第几轮 + int32 MaxRound = 8; //最大轮数 + int32 CurrNum = 9; //当前人数 + int32 MaxPlayer = 10; //最大人数 + int64 CreateTs = 11; //创建时间戳 + int32 State = 12; //房间状态 0等待中 1进行中 2已结束 + repeated PrivatePlayerInfo Players = 13; //玩家列表 +} + +//PACKET_SC_GETPRIVATEROOMLIST +message SCGetPrivateRoomList{ + int32 Tp = 1; // 0所有配置 1更新 2新增 3删除 + repeated PrivateRoomInfo Datas = 2; //房间列表 +} + +//PACKET_CS_QUERYROOMINFO +message CSQueryRoomInfo{ + repeated int32 GameIds = 1; + int32 GameSite = 2; //1.初级 2.中级 3.高级 + repeated int32 Id = 3; //gamefreeid + int32 SceneMode = 4; // 0公共房 2私人房 +} + +//自由桌房间信息 +message QRoomInfo{ + int32 GameFreeId = 1; //游戏id + int32 GameId = 2; + int32 RoomId = 3; //房间编号 + int64 BaseCoin = 4; + int64 LimitCoin = 5; + int32 CurrNum = 6; //当前人数 + int32 MaxPlayer = 7; //最大人数 + int32 Creator = 8; + int32 CreateTs = 9; //创建时间戳 + repeated int32 Params = 10; // 建房参数 +} + +//PACKET_SC_QUERYROOMINFO +message SCQueryRoomInfo{ + repeated int32 GameIds = 1; + int32 GameSite = 2; //1.初级 2.中级 3.高级 + repeated QRoomInfo RoomInfo = 3; //房间列表 + OpResultCode_Game OpRetCode = 4; //结果 +} + +message GameState { + int32 GameFreeId = 1; + int64 Ts = 2; + int32 Sec = 3; +} +//PACKET_SC_GAMESTATE +message SCGameState { + repeated GameState List = 1; } //PACKET_CS_AUDIENCESIT @@ -850,6 +434,46 @@ message SCRecordAndNotice{ // PACKET_SC_NoticeChange message SCNoticeChange{} + +//PACKET_CS_DESTROYROOM +message CSDestroyRoom{ +} +//PACKET_SC_DESTROYROOM +message SCDestroyRoom{ + int32 RoomId = 1; //房间编号 + OpResultCode_Game OpRetCode = 2; //结果 + int32 IsForce = 3; //是否强制销毁 +} + +//PACKET_CS_LEAVEROOM +//PACKET_CS_AUDIENCE_LEAVEROOM +//玩家离开房间,返回大厅 +message CSLeaveRoom{ + int32 Mode = 1; //离开方式 0:退出 1:暂离(占着座位,返回大厅) +} +//PACKET_SC_LEAVEROOM +message SCLeaveRoom{ + OpResultCode_Game OpRetCode = 1; //结果 + int32 Reason = 2;//原因 0:主动退出 1:被踢出 + int32 RoomId = 3;//房间ID + int32 Mode = 4; +} + +//PACKET_CS_FORCESTART +message CSForceStart{ +} +//PACKET_SC_FORCESTART +message SCForceStart{ + OpResultCode_Game OpRetCode = 1; //结果 +} + +//玩家设置标记 +//PACKET_CS_PLAYER_SWITCHFLAG +message CSPlayerSwithFlag{ + int32 Flag = 1; + int32 Mark = 2; //1:设置 0:取消 +} + // PACKET_CSRoomEvent message CSRoomEvent{ int32 Tp = 1; // 事件类型 1普通消息 2互动表情 @@ -863,4 +487,57 @@ message SCRoomEvent{ string Content = 4; // 内容 repeated int32 Param= 5; // 参数 int64 Ts = 6; // 时间戳 +} + +message ItemInfo{ + int32 Id = 1; // id + int32 Num = 2; // 数量 +} + +enum DataType{ + Zero = 0; + PrivateRoomList = 1; // 竞技馆房间列表 返回消息 PACKET_SC_GETPRIVATEROOMLIST +} + +// PACKET_CSTouchType +// 每10秒发送一次,保持更新 +message CSTouchType{ + DataType Tp = 1; // 保持更新类型 + // Tp: Params + // 1: 房间配置id + repeated int32 Params = 3; +} + +message RoomConfigInfo{ + int32 Id = 2; // 配置id + string Name = 3; // 配置名称 + int32 RoomType = 4; // 房间类型id, RoomTypeInfo.Id + int32 On = 5; // 开关 1开启 2关闭 + int32 SortId = 6; // 排序ID + repeated ItemInfo Cost = 7; // 进入房间消耗 + repeated ItemInfo Reward = 8; // 进入房间奖励 + repeated string OnChannelName = 9; // 开启的渠道名称 + repeated int32 GameFreeId = 10; // 场次id + repeated int32 Round = 11; // 局数 + repeated int32 PlayerNum = 12; // 人数 + int32 NeedPassword = 13; // 是否需要密码 1是 2否 3自定义 + int32 CostType = 14; // 消耗类型 1AA 2房主 3自定义 + int32 Voice = 15; // 是否开启语音 1是 2否 3自定义 + string ImageURI = 16; // 奖励图片 +} + +message RoomTypeInfo{ + int32 Id = 1; // id + string Name = 2; // 类型名称 + int32 On = 3; // 开关 1开启 2关闭 + int32 SortId = 4; // 排序ID + repeated RoomConfigInfo List = 5; // 房间配置列表 +} + +// PACKET_CSRoomConfig +message CSRoomConfig{} + +// PACKET_SCRoomConfig 竞技馆房间配置 +message SCRoomConfig{ + repeated RoomTypeInfo List = 1; } \ No newline at end of file diff --git a/protocol/gamehall/gamehall.js b/protocol/gamehall/gamehall.js deleted file mode 100644 index a20c8d6..0000000 --- a/protocol/gamehall/gamehall.js +++ /dev/null @@ -1,46999 +0,0 @@ -/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/ -"use strict"; - -var $protobuf = require("protobufjs/minimal.js"); - -// Common aliases -var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util; - -// Exported root namespace -var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {}); - -$root.gamehall = (function() { - - /** - * Namespace gamehall. - * @exports gamehall - * @namespace - */ - var gamehall = {}; - - /** - * OpResultCode enum. - * @name gamehall.OpResultCode - * @enum {number} - * @property {number} OPRC_Sucess=0 OPRC_Sucess value - * @property {number} OPRC_Error=1 OPRC_Error value - * @property {number} OPRC_RoomIsFull=1019 OPRC_RoomIsFull value - * @property {number} OPRC_RoomHadClosed=1053 OPRC_RoomHadClosed value - * @property {number} OPRC_SceneServerMaintain=1054 OPRC_SceneServerMaintain value - * @property {number} OPRC_CoinNotEnough=1056 OPRC_CoinNotEnough value - * @property {number} OPRC_CoinTooMore=1058 OPRC_CoinTooMore value - * @property {number} OPRC_CoinSceneYouAreGaming=1059 OPRC_CoinSceneYouAreGaming value - * @property {number} OPRC_NoFindDownTiceRoom=1079 OPRC_NoFindDownTiceRoom value - * @property {number} OPRC_ChangeRoomTooOften=1080 OPRC_ChangeRoomTooOften value - * @property {number} OPRC_NoOtherDownTiceRoom=1081 OPRC_NoOtherDownTiceRoom value - * @property {number} OPRC_OpYield=1082 OPRC_OpYield value - * @property {number} OPRC_RoomGameTimes=1103 OPRC_RoomGameTimes value - * @property {number} OPRC_CoinSceneEnterQueueSucc=1105 OPRC_CoinSceneEnterQueueSucc value - * @property {number} OPRC_CoinSceneEnterQueueFail=1106 OPRC_CoinSceneEnterQueueFail value - * @property {number} OPRC_CoinSceneEnterQueueOverTime=1107 OPRC_CoinSceneEnterQueueOverTime value - * @property {number} OPRC_MustBindPromoter=1113 OPRC_MustBindPromoter value - * @property {number} OPRC_YourAreGamingCannotLeave=1078 OPRC_YourAreGamingCannotLeave value - */ - gamehall.OpResultCode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPRC_Sucess"] = 0; - values[valuesById[1] = "OPRC_Error"] = 1; - values[valuesById[1019] = "OPRC_RoomIsFull"] = 1019; - values[valuesById[1053] = "OPRC_RoomHadClosed"] = 1053; - values[valuesById[1054] = "OPRC_SceneServerMaintain"] = 1054; - values[valuesById[1056] = "OPRC_CoinNotEnough"] = 1056; - values[valuesById[1058] = "OPRC_CoinTooMore"] = 1058; - values[valuesById[1059] = "OPRC_CoinSceneYouAreGaming"] = 1059; - values[valuesById[1079] = "OPRC_NoFindDownTiceRoom"] = 1079; - values[valuesById[1080] = "OPRC_ChangeRoomTooOften"] = 1080; - values[valuesById[1081] = "OPRC_NoOtherDownTiceRoom"] = 1081; - values[valuesById[1082] = "OPRC_OpYield"] = 1082; - values[valuesById[1103] = "OPRC_RoomGameTimes"] = 1103; - values[valuesById[1105] = "OPRC_CoinSceneEnterQueueSucc"] = 1105; - values[valuesById[1106] = "OPRC_CoinSceneEnterQueueFail"] = 1106; - values[valuesById[1107] = "OPRC_CoinSceneEnterQueueOverTime"] = 1107; - values[valuesById[1113] = "OPRC_MustBindPromoter"] = 1113; - values[valuesById[1078] = "OPRC_YourAreGamingCannotLeave"] = 1078; - return values; - })(); - - /** - * CoinSceneGamePacketID enum. - * @name gamehall.CoinSceneGamePacketID - * @enum {number} - * @property {number} PACKET_CoinSceneGame_ZERO=0 PACKET_CoinSceneGame_ZERO value - * @property {number} PACKET_CS_COINSCENE_GETPLAYERNUM=2320 PACKET_CS_COINSCENE_GETPLAYERNUM value - * @property {number} PACKET_SC_COINSCENE_GETPLAYERNUM=2321 PACKET_SC_COINSCENE_GETPLAYERNUM value - * @property {number} PACKET_CS_COINSCENE_OP=2322 PACKET_CS_COINSCENE_OP value - * @property {number} PACKET_SC_COINSCENE_OP=2323 PACKET_SC_COINSCENE_OP value - * @property {number} PACKET_CS_COINSCENE_LISTROOM=2324 PACKET_CS_COINSCENE_LISTROOM value - * @property {number} PACKET_SC_COINSCENE_LISTROOM=2325 PACKET_SC_COINSCENE_LISTROOM value - * @property {number} PACKET_SC_COINSCENE_QUEUESTATE=2326 PACKET_SC_COINSCENE_QUEUESTATE value - */ - gamehall.CoinSceneGamePacketID = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "PACKET_CoinSceneGame_ZERO"] = 0; - values[valuesById[2320] = "PACKET_CS_COINSCENE_GETPLAYERNUM"] = 2320; - values[valuesById[2321] = "PACKET_SC_COINSCENE_GETPLAYERNUM"] = 2321; - values[valuesById[2322] = "PACKET_CS_COINSCENE_OP"] = 2322; - values[valuesById[2323] = "PACKET_SC_COINSCENE_OP"] = 2323; - values[valuesById[2324] = "PACKET_CS_COINSCENE_LISTROOM"] = 2324; - values[valuesById[2325] = "PACKET_SC_COINSCENE_LISTROOM"] = 2325; - values[valuesById[2326] = "PACKET_SC_COINSCENE_QUEUESTATE"] = 2326; - return values; - })(); - - gamehall.CSCoinSceneGetPlayerNum = (function() { - - /** - * Properties of a CSCoinSceneGetPlayerNum. - * @memberof gamehall - * @interface ICSCoinSceneGetPlayerNum - * @property {number|null} [GameId] CSCoinSceneGetPlayerNum GameId - * @property {number|null} [GameModel] CSCoinSceneGetPlayerNum GameModel - */ - - /** - * Constructs a new CSCoinSceneGetPlayerNum. - * @memberof gamehall - * @classdesc Represents a CSCoinSceneGetPlayerNum. - * @implements ICSCoinSceneGetPlayerNum - * @constructor - * @param {gamehall.ICSCoinSceneGetPlayerNum=} [properties] Properties to set - */ - function CSCoinSceneGetPlayerNum(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCoinSceneGetPlayerNum GameId. - * @member {number} GameId - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @instance - */ - CSCoinSceneGetPlayerNum.prototype.GameId = 0; - - /** - * CSCoinSceneGetPlayerNum GameModel. - * @member {number} GameModel - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @instance - */ - CSCoinSceneGetPlayerNum.prototype.GameModel = 0; - - /** - * Creates a new CSCoinSceneGetPlayerNum instance using the specified properties. - * @function create - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {gamehall.ICSCoinSceneGetPlayerNum=} [properties] Properties to set - * @returns {gamehall.CSCoinSceneGetPlayerNum} CSCoinSceneGetPlayerNum instance - */ - CSCoinSceneGetPlayerNum.create = function create(properties) { - return new CSCoinSceneGetPlayerNum(properties); - }; - - /** - * Encodes the specified CSCoinSceneGetPlayerNum message. Does not implicitly {@link gamehall.CSCoinSceneGetPlayerNum.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {gamehall.ICSCoinSceneGetPlayerNum} message CSCoinSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinSceneGetPlayerNum.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.GameModel != null && Object.hasOwnProperty.call(message, "GameModel")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameModel); - return writer; - }; - - /** - * Encodes the specified CSCoinSceneGetPlayerNum message, length delimited. Does not implicitly {@link gamehall.CSCoinSceneGetPlayerNum.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {gamehall.ICSCoinSceneGetPlayerNum} message CSCoinSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinSceneGetPlayerNum.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCoinSceneGetPlayerNum message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCoinSceneGetPlayerNum} CSCoinSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinSceneGetPlayerNum.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCoinSceneGetPlayerNum(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.GameModel = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCoinSceneGetPlayerNum message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCoinSceneGetPlayerNum} CSCoinSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinSceneGetPlayerNum.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCoinSceneGetPlayerNum message. - * @function verify - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCoinSceneGetPlayerNum.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.GameModel != null && message.hasOwnProperty("GameModel")) - if (!$util.isInteger(message.GameModel)) - return "GameModel: integer expected"; - return null; - }; - - /** - * Creates a CSCoinSceneGetPlayerNum message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCoinSceneGetPlayerNum} CSCoinSceneGetPlayerNum - */ - CSCoinSceneGetPlayerNum.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCoinSceneGetPlayerNum) - return object; - var message = new $root.gamehall.CSCoinSceneGetPlayerNum(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.GameModel != null) - message.GameModel = object.GameModel | 0; - return message; - }; - - /** - * Creates a plain object from a CSCoinSceneGetPlayerNum message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {gamehall.CSCoinSceneGetPlayerNum} message CSCoinSceneGetPlayerNum - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCoinSceneGetPlayerNum.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameId = 0; - object.GameModel = 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.GameModel != null && message.hasOwnProperty("GameModel")) - object.GameModel = message.GameModel; - return object; - }; - - /** - * Converts this CSCoinSceneGetPlayerNum to JSON. - * @function toJSON - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @instance - * @returns {Object.} JSON object - */ - CSCoinSceneGetPlayerNum.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCoinSceneGetPlayerNum - * @function getTypeUrl - * @memberof gamehall.CSCoinSceneGetPlayerNum - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCoinSceneGetPlayerNum.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCoinSceneGetPlayerNum"; - }; - - return CSCoinSceneGetPlayerNum; - })(); - - gamehall.SCCoinSceneGetPlayerNum = (function() { - - /** - * Properties of a SCCoinSceneGetPlayerNum. - * @memberof gamehall - * @interface ISCCoinSceneGetPlayerNum - * @property {Array.|null} [Nums] SCCoinSceneGetPlayerNum Nums - */ - - /** - * Constructs a new SCCoinSceneGetPlayerNum. - * @memberof gamehall - * @classdesc Represents a SCCoinSceneGetPlayerNum. - * @implements ISCCoinSceneGetPlayerNum - * @constructor - * @param {gamehall.ISCCoinSceneGetPlayerNum=} [properties] Properties to set - */ - function SCCoinSceneGetPlayerNum(properties) { - this.Nums = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCoinSceneGetPlayerNum Nums. - * @member {Array.} Nums - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @instance - */ - SCCoinSceneGetPlayerNum.prototype.Nums = $util.emptyArray; - - /** - * Creates a new SCCoinSceneGetPlayerNum instance using the specified properties. - * @function create - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {gamehall.ISCCoinSceneGetPlayerNum=} [properties] Properties to set - * @returns {gamehall.SCCoinSceneGetPlayerNum} SCCoinSceneGetPlayerNum instance - */ - SCCoinSceneGetPlayerNum.create = function create(properties) { - return new SCCoinSceneGetPlayerNum(properties); - }; - - /** - * Encodes the specified SCCoinSceneGetPlayerNum message. Does not implicitly {@link gamehall.SCCoinSceneGetPlayerNum.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {gamehall.ISCCoinSceneGetPlayerNum} message SCCoinSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneGetPlayerNum.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Nums != null && message.Nums.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.Nums.length; ++i) - writer.int32(message.Nums[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCCoinSceneGetPlayerNum message, length delimited. Does not implicitly {@link gamehall.SCCoinSceneGetPlayerNum.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {gamehall.ISCCoinSceneGetPlayerNum} message SCCoinSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneGetPlayerNum.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCoinSceneGetPlayerNum message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCoinSceneGetPlayerNum} SCCoinSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneGetPlayerNum.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCoinSceneGetPlayerNum(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.Nums && message.Nums.length)) - message.Nums = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Nums.push(reader.int32()); - } else - message.Nums.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCoinSceneGetPlayerNum message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCoinSceneGetPlayerNum} SCCoinSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneGetPlayerNum.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCoinSceneGetPlayerNum message. - * @function verify - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCoinSceneGetPlayerNum.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Nums != null && message.hasOwnProperty("Nums")) { - if (!Array.isArray(message.Nums)) - return "Nums: array expected"; - for (var i = 0; i < message.Nums.length; ++i) - if (!$util.isInteger(message.Nums[i])) - return "Nums: integer[] expected"; - } - return null; - }; - - /** - * Creates a SCCoinSceneGetPlayerNum message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCoinSceneGetPlayerNum} SCCoinSceneGetPlayerNum - */ - SCCoinSceneGetPlayerNum.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCoinSceneGetPlayerNum) - return object; - var message = new $root.gamehall.SCCoinSceneGetPlayerNum(); - if (object.Nums) { - if (!Array.isArray(object.Nums)) - throw TypeError(".gamehall.SCCoinSceneGetPlayerNum.Nums: array expected"); - message.Nums = []; - for (var i = 0; i < object.Nums.length; ++i) - message.Nums[i] = object.Nums[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a SCCoinSceneGetPlayerNum message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {gamehall.SCCoinSceneGetPlayerNum} message SCCoinSceneGetPlayerNum - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCoinSceneGetPlayerNum.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Nums = []; - if (message.Nums && message.Nums.length) { - object.Nums = []; - for (var j = 0; j < message.Nums.length; ++j) - object.Nums[j] = message.Nums[j]; - } - return object; - }; - - /** - * Converts this SCCoinSceneGetPlayerNum to JSON. - * @function toJSON - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @instance - * @returns {Object.} JSON object - */ - SCCoinSceneGetPlayerNum.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCoinSceneGetPlayerNum - * @function getTypeUrl - * @memberof gamehall.SCCoinSceneGetPlayerNum - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCoinSceneGetPlayerNum.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCoinSceneGetPlayerNum"; - }; - - return SCCoinSceneGetPlayerNum; - })(); - - gamehall.CSCoinSceneOp = (function() { - - /** - * Properties of a CSCoinSceneOp. - * @memberof gamehall - * @interface ICSCoinSceneOp - * @property {number|null} [Id] CSCoinSceneOp Id - * @property {number|null} [OpType] CSCoinSceneOp OpType - * @property {Array.|null} [OpParams] CSCoinSceneOp OpParams - * @property {string|null} [Platform] CSCoinSceneOp Platform - */ - - /** - * Constructs a new CSCoinSceneOp. - * @memberof gamehall - * @classdesc Represents a CSCoinSceneOp. - * @implements ICSCoinSceneOp - * @constructor - * @param {gamehall.ICSCoinSceneOp=} [properties] Properties to set - */ - function CSCoinSceneOp(properties) { - this.OpParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCoinSceneOp Id. - * @member {number} Id - * @memberof gamehall.CSCoinSceneOp - * @instance - */ - CSCoinSceneOp.prototype.Id = 0; - - /** - * CSCoinSceneOp OpType. - * @member {number} OpType - * @memberof gamehall.CSCoinSceneOp - * @instance - */ - CSCoinSceneOp.prototype.OpType = 0; - - /** - * CSCoinSceneOp OpParams. - * @member {Array.} OpParams - * @memberof gamehall.CSCoinSceneOp - * @instance - */ - CSCoinSceneOp.prototype.OpParams = $util.emptyArray; - - /** - * CSCoinSceneOp Platform. - * @member {string} Platform - * @memberof gamehall.CSCoinSceneOp - * @instance - */ - CSCoinSceneOp.prototype.Platform = ""; - - /** - * Creates a new CSCoinSceneOp instance using the specified properties. - * @function create - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {gamehall.ICSCoinSceneOp=} [properties] Properties to set - * @returns {gamehall.CSCoinSceneOp} CSCoinSceneOp instance - */ - CSCoinSceneOp.create = function create(properties) { - return new CSCoinSceneOp(properties); - }; - - /** - * Encodes the specified CSCoinSceneOp message. Does not implicitly {@link gamehall.CSCoinSceneOp.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {gamehall.ICSCoinSceneOp} message CSCoinSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinSceneOp.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.OpType != null && Object.hasOwnProperty.call(message, "OpType")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpType); - if (message.OpParams != null && message.OpParams.length) { - writer.uint32(/* id 3, wireType 2 =*/26).fork(); - for (var i = 0; i < message.OpParams.length; ++i) - writer.int32(message.OpParams[i]); - writer.ldelim(); - } - if (message.Platform != null && Object.hasOwnProperty.call(message, "Platform")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.Platform); - return writer; - }; - - /** - * Encodes the specified CSCoinSceneOp message, length delimited. Does not implicitly {@link gamehall.CSCoinSceneOp.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {gamehall.ICSCoinSceneOp} message CSCoinSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinSceneOp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCoinSceneOp message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCoinSceneOp} CSCoinSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinSceneOp.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCoinSceneOp(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.OpType = reader.int32(); - break; - } - case 3: { - if (!(message.OpParams && message.OpParams.length)) - message.OpParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OpParams.push(reader.int32()); - } else - message.OpParams.push(reader.int32()); - break; - } - case 4: { - message.Platform = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCoinSceneOp message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCoinSceneOp} CSCoinSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinSceneOp.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCoinSceneOp message. - * @function verify - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCoinSceneOp.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpType != null && message.hasOwnProperty("OpType")) - if (!$util.isInteger(message.OpType)) - return "OpType: integer expected"; - if (message.OpParams != null && message.hasOwnProperty("OpParams")) { - if (!Array.isArray(message.OpParams)) - return "OpParams: array expected"; - for (var i = 0; i < message.OpParams.length; ++i) - if (!$util.isInteger(message.OpParams[i])) - return "OpParams: integer[] expected"; - } - if (message.Platform != null && message.hasOwnProperty("Platform")) - if (!$util.isString(message.Platform)) - return "Platform: string expected"; - return null; - }; - - /** - * Creates a CSCoinSceneOp message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCoinSceneOp} CSCoinSceneOp - */ - CSCoinSceneOp.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCoinSceneOp) - return object; - var message = new $root.gamehall.CSCoinSceneOp(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.OpType != null) - message.OpType = object.OpType | 0; - if (object.OpParams) { - if (!Array.isArray(object.OpParams)) - throw TypeError(".gamehall.CSCoinSceneOp.OpParams: array expected"); - message.OpParams = []; - for (var i = 0; i < object.OpParams.length; ++i) - message.OpParams[i] = object.OpParams[i] | 0; - } - if (object.Platform != null) - message.Platform = String(object.Platform); - return message; - }; - - /** - * Creates a plain object from a CSCoinSceneOp message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {gamehall.CSCoinSceneOp} message CSCoinSceneOp - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCoinSceneOp.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OpParams = []; - if (options.defaults) { - object.Id = 0; - object.OpType = 0; - object.Platform = ""; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpType != null && message.hasOwnProperty("OpType")) - object.OpType = message.OpType; - if (message.OpParams && message.OpParams.length) { - object.OpParams = []; - for (var j = 0; j < message.OpParams.length; ++j) - object.OpParams[j] = message.OpParams[j]; - } - if (message.Platform != null && message.hasOwnProperty("Platform")) - object.Platform = message.Platform; - return object; - }; - - /** - * Converts this CSCoinSceneOp to JSON. - * @function toJSON - * @memberof gamehall.CSCoinSceneOp - * @instance - * @returns {Object.} JSON object - */ - CSCoinSceneOp.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCoinSceneOp - * @function getTypeUrl - * @memberof gamehall.CSCoinSceneOp - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCoinSceneOp.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCoinSceneOp"; - }; - - return CSCoinSceneOp; - })(); - - gamehall.SCCoinSceneOp = (function() { - - /** - * Properties of a SCCoinSceneOp. - * @memberof gamehall - * @interface ISCCoinSceneOp - * @property {gamehall.OpResultCode|null} [OpCode] SCCoinSceneOp OpCode - * @property {number|null} [Id] SCCoinSceneOp Id - * @property {number|null} [OpType] SCCoinSceneOp OpType - * @property {Array.|null} [OpParams] SCCoinSceneOp OpParams - */ - - /** - * Constructs a new SCCoinSceneOp. - * @memberof gamehall - * @classdesc Represents a SCCoinSceneOp. - * @implements ISCCoinSceneOp - * @constructor - * @param {gamehall.ISCCoinSceneOp=} [properties] Properties to set - */ - function SCCoinSceneOp(properties) { - this.OpParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCoinSceneOp OpCode. - * @member {gamehall.OpResultCode} OpCode - * @memberof gamehall.SCCoinSceneOp - * @instance - */ - SCCoinSceneOp.prototype.OpCode = 0; - - /** - * SCCoinSceneOp Id. - * @member {number} Id - * @memberof gamehall.SCCoinSceneOp - * @instance - */ - SCCoinSceneOp.prototype.Id = 0; - - /** - * SCCoinSceneOp OpType. - * @member {number} OpType - * @memberof gamehall.SCCoinSceneOp - * @instance - */ - SCCoinSceneOp.prototype.OpType = 0; - - /** - * SCCoinSceneOp OpParams. - * @member {Array.} OpParams - * @memberof gamehall.SCCoinSceneOp - * @instance - */ - SCCoinSceneOp.prototype.OpParams = $util.emptyArray; - - /** - * Creates a new SCCoinSceneOp instance using the specified properties. - * @function create - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {gamehall.ISCCoinSceneOp=} [properties] Properties to set - * @returns {gamehall.SCCoinSceneOp} SCCoinSceneOp instance - */ - SCCoinSceneOp.create = function create(properties) { - return new SCCoinSceneOp(properties); - }; - - /** - * Encodes the specified SCCoinSceneOp message. Does not implicitly {@link gamehall.SCCoinSceneOp.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {gamehall.ISCCoinSceneOp} message SCCoinSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneOp.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpCode); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Id); - if (message.OpType != null && Object.hasOwnProperty.call(message, "OpType")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.OpType); - if (message.OpParams != null && message.OpParams.length) { - writer.uint32(/* id 4, wireType 2 =*/34).fork(); - for (var i = 0; i < message.OpParams.length; ++i) - writer.int32(message.OpParams[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCCoinSceneOp message, length delimited. Does not implicitly {@link gamehall.SCCoinSceneOp.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {gamehall.ISCCoinSceneOp} message SCCoinSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneOp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCoinSceneOp message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCoinSceneOp} SCCoinSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneOp.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCoinSceneOp(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpCode = reader.int32(); - break; - } - case 2: { - message.Id = reader.int32(); - break; - } - case 3: { - message.OpType = reader.int32(); - break; - } - case 4: { - if (!(message.OpParams && message.OpParams.length)) - message.OpParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OpParams.push(reader.int32()); - } else - message.OpParams.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCoinSceneOp message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCoinSceneOp} SCCoinSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneOp.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCoinSceneOp message. - * @function verify - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCoinSceneOp.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - switch (message.OpCode) { - default: - return "OpCode: enum value expected"; - case 0: - case 1: - case 1019: - case 1053: - case 1054: - case 1056: - case 1058: - case 1059: - case 1079: - case 1080: - case 1081: - case 1082: - case 1103: - case 1105: - case 1106: - case 1107: - case 1113: - case 1078: - break; - } - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpType != null && message.hasOwnProperty("OpType")) - if (!$util.isInteger(message.OpType)) - return "OpType: integer expected"; - if (message.OpParams != null && message.hasOwnProperty("OpParams")) { - if (!Array.isArray(message.OpParams)) - return "OpParams: array expected"; - for (var i = 0; i < message.OpParams.length; ++i) - if (!$util.isInteger(message.OpParams[i])) - return "OpParams: integer[] expected"; - } - return null; - }; - - /** - * Creates a SCCoinSceneOp message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCoinSceneOp} SCCoinSceneOp - */ - SCCoinSceneOp.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCoinSceneOp) - return object; - var message = new $root.gamehall.SCCoinSceneOp(); - switch (object.OpCode) { - default: - if (typeof object.OpCode === "number") { - message.OpCode = object.OpCode; - break; - } - break; - case "OPRC_Sucess": - case 0: - message.OpCode = 0; - break; - case "OPRC_Error": - case 1: - message.OpCode = 1; - break; - case "OPRC_RoomIsFull": - case 1019: - message.OpCode = 1019; - break; - case "OPRC_RoomHadClosed": - case 1053: - message.OpCode = 1053; - break; - case "OPRC_SceneServerMaintain": - case 1054: - message.OpCode = 1054; - break; - case "OPRC_CoinNotEnough": - case 1056: - message.OpCode = 1056; - break; - case "OPRC_CoinTooMore": - case 1058: - message.OpCode = 1058; - break; - case "OPRC_CoinSceneYouAreGaming": - case 1059: - message.OpCode = 1059; - break; - case "OPRC_NoFindDownTiceRoom": - case 1079: - message.OpCode = 1079; - break; - case "OPRC_ChangeRoomTooOften": - case 1080: - message.OpCode = 1080; - break; - case "OPRC_NoOtherDownTiceRoom": - case 1081: - message.OpCode = 1081; - break; - case "OPRC_OpYield": - case 1082: - message.OpCode = 1082; - break; - case "OPRC_RoomGameTimes": - case 1103: - message.OpCode = 1103; - break; - case "OPRC_CoinSceneEnterQueueSucc": - case 1105: - message.OpCode = 1105; - break; - case "OPRC_CoinSceneEnterQueueFail": - case 1106: - message.OpCode = 1106; - break; - case "OPRC_CoinSceneEnterQueueOverTime": - case 1107: - message.OpCode = 1107; - break; - case "OPRC_MustBindPromoter": - case 1113: - message.OpCode = 1113; - break; - case "OPRC_YourAreGamingCannotLeave": - case 1078: - message.OpCode = 1078; - break; - } - if (object.Id != null) - message.Id = object.Id | 0; - if (object.OpType != null) - message.OpType = object.OpType | 0; - if (object.OpParams) { - if (!Array.isArray(object.OpParams)) - throw TypeError(".gamehall.SCCoinSceneOp.OpParams: array expected"); - message.OpParams = []; - for (var i = 0; i < object.OpParams.length; ++i) - message.OpParams[i] = object.OpParams[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a SCCoinSceneOp message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {gamehall.SCCoinSceneOp} message SCCoinSceneOp - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCoinSceneOp.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OpParams = []; - if (options.defaults) { - object.OpCode = options.enums === String ? "OPRC_Sucess" : 0; - object.Id = 0; - object.OpType = 0; - } - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - object.OpCode = options.enums === String ? $root.gamehall.OpResultCode[message.OpCode] === undefined ? message.OpCode : $root.gamehall.OpResultCode[message.OpCode] : message.OpCode; - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpType != null && message.hasOwnProperty("OpType")) - object.OpType = message.OpType; - if (message.OpParams && message.OpParams.length) { - object.OpParams = []; - for (var j = 0; j < message.OpParams.length; ++j) - object.OpParams[j] = message.OpParams[j]; - } - return object; - }; - - /** - * Converts this SCCoinSceneOp to JSON. - * @function toJSON - * @memberof gamehall.SCCoinSceneOp - * @instance - * @returns {Object.} JSON object - */ - SCCoinSceneOp.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCoinSceneOp - * @function getTypeUrl - * @memberof gamehall.SCCoinSceneOp - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCoinSceneOp.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCoinSceneOp"; - }; - - return SCCoinSceneOp; - })(); - - gamehall.CSCoinSceneListRoom = (function() { - - /** - * Properties of a CSCoinSceneListRoom. - * @memberof gamehall - * @interface ICSCoinSceneListRoom - * @property {number|null} [Id] CSCoinSceneListRoom Id - */ - - /** - * Constructs a new CSCoinSceneListRoom. - * @memberof gamehall - * @classdesc Represents a CSCoinSceneListRoom. - * @implements ICSCoinSceneListRoom - * @constructor - * @param {gamehall.ICSCoinSceneListRoom=} [properties] Properties to set - */ - function CSCoinSceneListRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCoinSceneListRoom Id. - * @member {number} Id - * @memberof gamehall.CSCoinSceneListRoom - * @instance - */ - CSCoinSceneListRoom.prototype.Id = 0; - - /** - * Creates a new CSCoinSceneListRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {gamehall.ICSCoinSceneListRoom=} [properties] Properties to set - * @returns {gamehall.CSCoinSceneListRoom} CSCoinSceneListRoom instance - */ - CSCoinSceneListRoom.create = function create(properties) { - return new CSCoinSceneListRoom(properties); - }; - - /** - * Encodes the specified CSCoinSceneListRoom message. Does not implicitly {@link gamehall.CSCoinSceneListRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {gamehall.ICSCoinSceneListRoom} message CSCoinSceneListRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinSceneListRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - return writer; - }; - - /** - * Encodes the specified CSCoinSceneListRoom message, length delimited. Does not implicitly {@link gamehall.CSCoinSceneListRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {gamehall.ICSCoinSceneListRoom} message CSCoinSceneListRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinSceneListRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCoinSceneListRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCoinSceneListRoom} CSCoinSceneListRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinSceneListRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCoinSceneListRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCoinSceneListRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCoinSceneListRoom} CSCoinSceneListRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinSceneListRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCoinSceneListRoom message. - * @function verify - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCoinSceneListRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - return null; - }; - - /** - * Creates a CSCoinSceneListRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCoinSceneListRoom} CSCoinSceneListRoom - */ - CSCoinSceneListRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCoinSceneListRoom) - return object; - var message = new $root.gamehall.CSCoinSceneListRoom(); - if (object.Id != null) - message.Id = object.Id | 0; - return message; - }; - - /** - * Creates a plain object from a CSCoinSceneListRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {gamehall.CSCoinSceneListRoom} message CSCoinSceneListRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCoinSceneListRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.Id = 0; - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - return object; - }; - - /** - * Converts this CSCoinSceneListRoom to JSON. - * @function toJSON - * @memberof gamehall.CSCoinSceneListRoom - * @instance - * @returns {Object.} JSON object - */ - CSCoinSceneListRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCoinSceneListRoom - * @function getTypeUrl - * @memberof gamehall.CSCoinSceneListRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCoinSceneListRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCoinSceneListRoom"; - }; - - return CSCoinSceneListRoom; - })(); - - gamehall.CoinSceneInfo = (function() { - - /** - * Properties of a CoinSceneInfo. - * @memberof gamehall - * @interface ICoinSceneInfo - * @property {number|null} [SceneId] CoinSceneInfo SceneId - * @property {number|null} [PlayerNum] CoinSceneInfo PlayerNum - */ - - /** - * Constructs a new CoinSceneInfo. - * @memberof gamehall - * @classdesc Represents a CoinSceneInfo. - * @implements ICoinSceneInfo - * @constructor - * @param {gamehall.ICoinSceneInfo=} [properties] Properties to set - */ - function CoinSceneInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CoinSceneInfo SceneId. - * @member {number} SceneId - * @memberof gamehall.CoinSceneInfo - * @instance - */ - CoinSceneInfo.prototype.SceneId = 0; - - /** - * CoinSceneInfo PlayerNum. - * @member {number} PlayerNum - * @memberof gamehall.CoinSceneInfo - * @instance - */ - CoinSceneInfo.prototype.PlayerNum = 0; - - /** - * Creates a new CoinSceneInfo instance using the specified properties. - * @function create - * @memberof gamehall.CoinSceneInfo - * @static - * @param {gamehall.ICoinSceneInfo=} [properties] Properties to set - * @returns {gamehall.CoinSceneInfo} CoinSceneInfo instance - */ - CoinSceneInfo.create = function create(properties) { - return new CoinSceneInfo(properties); - }; - - /** - * Encodes the specified CoinSceneInfo message. Does not implicitly {@link gamehall.CoinSceneInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.CoinSceneInfo - * @static - * @param {gamehall.ICoinSceneInfo} message CoinSceneInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CoinSceneInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.SceneId != null && Object.hasOwnProperty.call(message, "SceneId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.SceneId); - if (message.PlayerNum != null && Object.hasOwnProperty.call(message, "PlayerNum")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.PlayerNum); - return writer; - }; - - /** - * Encodes the specified CoinSceneInfo message, length delimited. Does not implicitly {@link gamehall.CoinSceneInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CoinSceneInfo - * @static - * @param {gamehall.ICoinSceneInfo} message CoinSceneInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CoinSceneInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CoinSceneInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CoinSceneInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CoinSceneInfo} CoinSceneInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CoinSceneInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CoinSceneInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.SceneId = reader.int32(); - break; - } - case 2: { - message.PlayerNum = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CoinSceneInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CoinSceneInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CoinSceneInfo} CoinSceneInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CoinSceneInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CoinSceneInfo message. - * @function verify - * @memberof gamehall.CoinSceneInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CoinSceneInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.SceneId != null && message.hasOwnProperty("SceneId")) - if (!$util.isInteger(message.SceneId)) - return "SceneId: integer expected"; - if (message.PlayerNum != null && message.hasOwnProperty("PlayerNum")) - if (!$util.isInteger(message.PlayerNum)) - return "PlayerNum: integer expected"; - return null; - }; - - /** - * Creates a CoinSceneInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CoinSceneInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CoinSceneInfo} CoinSceneInfo - */ - CoinSceneInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CoinSceneInfo) - return object; - var message = new $root.gamehall.CoinSceneInfo(); - if (object.SceneId != null) - message.SceneId = object.SceneId | 0; - if (object.PlayerNum != null) - message.PlayerNum = object.PlayerNum | 0; - return message; - }; - - /** - * Creates a plain object from a CoinSceneInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CoinSceneInfo - * @static - * @param {gamehall.CoinSceneInfo} message CoinSceneInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CoinSceneInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.SceneId = 0; - object.PlayerNum = 0; - } - if (message.SceneId != null && message.hasOwnProperty("SceneId")) - object.SceneId = message.SceneId; - if (message.PlayerNum != null && message.hasOwnProperty("PlayerNum")) - object.PlayerNum = message.PlayerNum; - return object; - }; - - /** - * Converts this CoinSceneInfo to JSON. - * @function toJSON - * @memberof gamehall.CoinSceneInfo - * @instance - * @returns {Object.} JSON object - */ - CoinSceneInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CoinSceneInfo - * @function getTypeUrl - * @memberof gamehall.CoinSceneInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CoinSceneInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CoinSceneInfo"; - }; - - return CoinSceneInfo; - })(); - - gamehall.SCCoinSceneListRoom = (function() { - - /** - * Properties of a SCCoinSceneListRoom. - * @memberof gamehall - * @interface ISCCoinSceneListRoom - * @property {number|null} [Id] SCCoinSceneListRoom Id - * @property {number|null} [LimitCoin] SCCoinSceneListRoom LimitCoin - * @property {number|null} [MaxCoinLimit] SCCoinSceneListRoom MaxCoinLimit - * @property {number|null} [BaseScore] SCCoinSceneListRoom BaseScore - * @property {number|null} [MaxScore] SCCoinSceneListRoom MaxScore - * @property {number|null} [MaxPlayerNum] SCCoinSceneListRoom MaxPlayerNum - * @property {Array.|null} [OtherIntParams] SCCoinSceneListRoom OtherIntParams - * @property {Array.|null} [Datas] SCCoinSceneListRoom Datas - */ - - /** - * Constructs a new SCCoinSceneListRoom. - * @memberof gamehall - * @classdesc Represents a SCCoinSceneListRoom. - * @implements ISCCoinSceneListRoom - * @constructor - * @param {gamehall.ISCCoinSceneListRoom=} [properties] Properties to set - */ - function SCCoinSceneListRoom(properties) { - this.OtherIntParams = []; - this.Datas = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCoinSceneListRoom Id. - * @member {number} Id - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.Id = 0; - - /** - * SCCoinSceneListRoom LimitCoin. - * @member {number} LimitCoin - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.LimitCoin = 0; - - /** - * SCCoinSceneListRoom MaxCoinLimit. - * @member {number} MaxCoinLimit - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.MaxCoinLimit = 0; - - /** - * SCCoinSceneListRoom BaseScore. - * @member {number} BaseScore - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.BaseScore = 0; - - /** - * SCCoinSceneListRoom MaxScore. - * @member {number} MaxScore - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.MaxScore = 0; - - /** - * SCCoinSceneListRoom MaxPlayerNum. - * @member {number} MaxPlayerNum - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.MaxPlayerNum = 0; - - /** - * SCCoinSceneListRoom OtherIntParams. - * @member {Array.} OtherIntParams - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.OtherIntParams = $util.emptyArray; - - /** - * SCCoinSceneListRoom Datas. - * @member {Array.} Datas - * @memberof gamehall.SCCoinSceneListRoom - * @instance - */ - SCCoinSceneListRoom.prototype.Datas = $util.emptyArray; - - /** - * Creates a new SCCoinSceneListRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {gamehall.ISCCoinSceneListRoom=} [properties] Properties to set - * @returns {gamehall.SCCoinSceneListRoom} SCCoinSceneListRoom instance - */ - SCCoinSceneListRoom.create = function create(properties) { - return new SCCoinSceneListRoom(properties); - }; - - /** - * Encodes the specified SCCoinSceneListRoom message. Does not implicitly {@link gamehall.SCCoinSceneListRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {gamehall.ISCCoinSceneListRoom} message SCCoinSceneListRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneListRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.LimitCoin != null && Object.hasOwnProperty.call(message, "LimitCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.LimitCoin); - if (message.MaxCoinLimit != null && Object.hasOwnProperty.call(message, "MaxCoinLimit")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.MaxCoinLimit); - if (message.BaseScore != null && Object.hasOwnProperty.call(message, "BaseScore")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.BaseScore); - if (message.MaxScore != null && Object.hasOwnProperty.call(message, "MaxScore")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.MaxScore); - if (message.MaxPlayerNum != null && Object.hasOwnProperty.call(message, "MaxPlayerNum")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.MaxPlayerNum); - if (message.OtherIntParams != null && message.OtherIntParams.length) { - writer.uint32(/* id 7, wireType 2 =*/58).fork(); - for (var i = 0; i < message.OtherIntParams.length; ++i) - writer.int32(message.OtherIntParams[i]); - writer.ldelim(); - } - if (message.Datas != null && message.Datas.length) - for (var i = 0; i < message.Datas.length; ++i) - $root.gamehall.CoinSceneInfo.encode(message.Datas[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCCoinSceneListRoom message, length delimited. Does not implicitly {@link gamehall.SCCoinSceneListRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {gamehall.ISCCoinSceneListRoom} message SCCoinSceneListRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneListRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCoinSceneListRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCoinSceneListRoom} SCCoinSceneListRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneListRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCoinSceneListRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.LimitCoin = reader.int32(); - break; - } - case 3: { - message.MaxCoinLimit = reader.int32(); - break; - } - case 4: { - message.BaseScore = reader.int32(); - break; - } - case 5: { - message.MaxScore = reader.int32(); - break; - } - case 6: { - message.MaxPlayerNum = reader.int32(); - break; - } - case 7: { - if (!(message.OtherIntParams && message.OtherIntParams.length)) - message.OtherIntParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OtherIntParams.push(reader.int32()); - } else - message.OtherIntParams.push(reader.int32()); - break; - } - case 8: { - if (!(message.Datas && message.Datas.length)) - message.Datas = []; - message.Datas.push($root.gamehall.CoinSceneInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCoinSceneListRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCoinSceneListRoom} SCCoinSceneListRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneListRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCoinSceneListRoom message. - * @function verify - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCoinSceneListRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.LimitCoin != null && message.hasOwnProperty("LimitCoin")) - if (!$util.isInteger(message.LimitCoin)) - return "LimitCoin: integer expected"; - if (message.MaxCoinLimit != null && message.hasOwnProperty("MaxCoinLimit")) - if (!$util.isInteger(message.MaxCoinLimit)) - return "MaxCoinLimit: integer expected"; - if (message.BaseScore != null && message.hasOwnProperty("BaseScore")) - if (!$util.isInteger(message.BaseScore)) - return "BaseScore: integer expected"; - if (message.MaxScore != null && message.hasOwnProperty("MaxScore")) - if (!$util.isInteger(message.MaxScore)) - return "MaxScore: integer expected"; - if (message.MaxPlayerNum != null && message.hasOwnProperty("MaxPlayerNum")) - if (!$util.isInteger(message.MaxPlayerNum)) - return "MaxPlayerNum: integer expected"; - if (message.OtherIntParams != null && message.hasOwnProperty("OtherIntParams")) { - if (!Array.isArray(message.OtherIntParams)) - return "OtherIntParams: array expected"; - for (var i = 0; i < message.OtherIntParams.length; ++i) - if (!$util.isInteger(message.OtherIntParams[i])) - return "OtherIntParams: integer[] expected"; - } - if (message.Datas != null && message.hasOwnProperty("Datas")) { - if (!Array.isArray(message.Datas)) - return "Datas: array expected"; - for (var i = 0; i < message.Datas.length; ++i) { - var error = $root.gamehall.CoinSceneInfo.verify(message.Datas[i]); - if (error) - return "Datas." + error; - } - } - return null; - }; - - /** - * Creates a SCCoinSceneListRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCoinSceneListRoom} SCCoinSceneListRoom - */ - SCCoinSceneListRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCoinSceneListRoom) - return object; - var message = new $root.gamehall.SCCoinSceneListRoom(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.LimitCoin != null) - message.LimitCoin = object.LimitCoin | 0; - if (object.MaxCoinLimit != null) - message.MaxCoinLimit = object.MaxCoinLimit | 0; - if (object.BaseScore != null) - message.BaseScore = object.BaseScore | 0; - if (object.MaxScore != null) - message.MaxScore = object.MaxScore | 0; - if (object.MaxPlayerNum != null) - message.MaxPlayerNum = object.MaxPlayerNum | 0; - if (object.OtherIntParams) { - if (!Array.isArray(object.OtherIntParams)) - throw TypeError(".gamehall.SCCoinSceneListRoom.OtherIntParams: array expected"); - message.OtherIntParams = []; - for (var i = 0; i < object.OtherIntParams.length; ++i) - message.OtherIntParams[i] = object.OtherIntParams[i] | 0; - } - if (object.Datas) { - if (!Array.isArray(object.Datas)) - throw TypeError(".gamehall.SCCoinSceneListRoom.Datas: array expected"); - message.Datas = []; - for (var i = 0; i < object.Datas.length; ++i) { - if (typeof object.Datas[i] !== "object") - throw TypeError(".gamehall.SCCoinSceneListRoom.Datas: object expected"); - message.Datas[i] = $root.gamehall.CoinSceneInfo.fromObject(object.Datas[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCCoinSceneListRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {gamehall.SCCoinSceneListRoom} message SCCoinSceneListRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCoinSceneListRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.OtherIntParams = []; - object.Datas = []; - } - if (options.defaults) { - object.Id = 0; - object.LimitCoin = 0; - object.MaxCoinLimit = 0; - object.BaseScore = 0; - object.MaxScore = 0; - object.MaxPlayerNum = 0; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.LimitCoin != null && message.hasOwnProperty("LimitCoin")) - object.LimitCoin = message.LimitCoin; - if (message.MaxCoinLimit != null && message.hasOwnProperty("MaxCoinLimit")) - object.MaxCoinLimit = message.MaxCoinLimit; - if (message.BaseScore != null && message.hasOwnProperty("BaseScore")) - object.BaseScore = message.BaseScore; - if (message.MaxScore != null && message.hasOwnProperty("MaxScore")) - object.MaxScore = message.MaxScore; - if (message.MaxPlayerNum != null && message.hasOwnProperty("MaxPlayerNum")) - object.MaxPlayerNum = message.MaxPlayerNum; - if (message.OtherIntParams && message.OtherIntParams.length) { - object.OtherIntParams = []; - for (var j = 0; j < message.OtherIntParams.length; ++j) - object.OtherIntParams[j] = message.OtherIntParams[j]; - } - if (message.Datas && message.Datas.length) { - object.Datas = []; - for (var j = 0; j < message.Datas.length; ++j) - object.Datas[j] = $root.gamehall.CoinSceneInfo.toObject(message.Datas[j], options); - } - return object; - }; - - /** - * Converts this SCCoinSceneListRoom to JSON. - * @function toJSON - * @memberof gamehall.SCCoinSceneListRoom - * @instance - * @returns {Object.} JSON object - */ - SCCoinSceneListRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCoinSceneListRoom - * @function getTypeUrl - * @memberof gamehall.SCCoinSceneListRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCoinSceneListRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCoinSceneListRoom"; - }; - - return SCCoinSceneListRoom; - })(); - - gamehall.SCCoinSceneQueueState = (function() { - - /** - * Properties of a SCCoinSceneQueueState. - * @memberof gamehall - * @interface ISCCoinSceneQueueState - * @property {number|null} [GameFreeId] SCCoinSceneQueueState GameFreeId - * @property {number|null} [Count] SCCoinSceneQueueState Count - * @property {number|Long|null} [Ts] SCCoinSceneQueueState Ts - */ - - /** - * Constructs a new SCCoinSceneQueueState. - * @memberof gamehall - * @classdesc Represents a SCCoinSceneQueueState. - * @implements ISCCoinSceneQueueState - * @constructor - * @param {gamehall.ISCCoinSceneQueueState=} [properties] Properties to set - */ - function SCCoinSceneQueueState(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCoinSceneQueueState GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.SCCoinSceneQueueState - * @instance - */ - SCCoinSceneQueueState.prototype.GameFreeId = 0; - - /** - * SCCoinSceneQueueState Count. - * @member {number} Count - * @memberof gamehall.SCCoinSceneQueueState - * @instance - */ - SCCoinSceneQueueState.prototype.Count = 0; - - /** - * SCCoinSceneQueueState Ts. - * @member {number|Long} Ts - * @memberof gamehall.SCCoinSceneQueueState - * @instance - */ - SCCoinSceneQueueState.prototype.Ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCCoinSceneQueueState instance using the specified properties. - * @function create - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {gamehall.ISCCoinSceneQueueState=} [properties] Properties to set - * @returns {gamehall.SCCoinSceneQueueState} SCCoinSceneQueueState instance - */ - SCCoinSceneQueueState.create = function create(properties) { - return new SCCoinSceneQueueState(properties); - }; - - /** - * Encodes the specified SCCoinSceneQueueState message. Does not implicitly {@link gamehall.SCCoinSceneQueueState.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {gamehall.ISCCoinSceneQueueState} message SCCoinSceneQueueState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneQueueState.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.Count != null && Object.hasOwnProperty.call(message, "Count")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Count); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Ts); - return writer; - }; - - /** - * Encodes the specified SCCoinSceneQueueState message, length delimited. Does not implicitly {@link gamehall.SCCoinSceneQueueState.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {gamehall.ISCCoinSceneQueueState} message SCCoinSceneQueueState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinSceneQueueState.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCoinSceneQueueState message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCoinSceneQueueState} SCCoinSceneQueueState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneQueueState.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCoinSceneQueueState(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.Count = reader.int32(); - break; - } - case 3: { - message.Ts = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCoinSceneQueueState message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCoinSceneQueueState} SCCoinSceneQueueState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinSceneQueueState.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCoinSceneQueueState message. - * @function verify - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCoinSceneQueueState.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.Count != null && message.hasOwnProperty("Count")) - if (!$util.isInteger(message.Count)) - return "Count: integer expected"; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts) && !(message.Ts && $util.isInteger(message.Ts.low) && $util.isInteger(message.Ts.high))) - return "Ts: integer|Long expected"; - return null; - }; - - /** - * Creates a SCCoinSceneQueueState message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCoinSceneQueueState} SCCoinSceneQueueState - */ - SCCoinSceneQueueState.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCoinSceneQueueState) - return object; - var message = new $root.gamehall.SCCoinSceneQueueState(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.Count != null) - message.Count = object.Count | 0; - if (object.Ts != null) - if ($util.Long) - (message.Ts = $util.Long.fromValue(object.Ts)).unsigned = false; - else if (typeof object.Ts === "string") - message.Ts = parseInt(object.Ts, 10); - else if (typeof object.Ts === "number") - message.Ts = object.Ts; - else if (typeof object.Ts === "object") - message.Ts = new $util.LongBits(object.Ts.low >>> 0, object.Ts.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCCoinSceneQueueState message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {gamehall.SCCoinSceneQueueState} message SCCoinSceneQueueState - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCoinSceneQueueState.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - object.Count = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Ts = options.longs === String ? "0" : 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.Count != null && message.hasOwnProperty("Count")) - object.Count = message.Count; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (typeof message.Ts === "number") - object.Ts = options.longs === String ? String(message.Ts) : message.Ts; - else - object.Ts = options.longs === String ? $util.Long.prototype.toString.call(message.Ts) : options.longs === Number ? new $util.LongBits(message.Ts.low >>> 0, message.Ts.high >>> 0).toNumber() : message.Ts; - return object; - }; - - /** - * Converts this SCCoinSceneQueueState to JSON. - * @function toJSON - * @memberof gamehall.SCCoinSceneQueueState - * @instance - * @returns {Object.} JSON object - */ - SCCoinSceneQueueState.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCoinSceneQueueState - * @function getTypeUrl - * @memberof gamehall.SCCoinSceneQueueState - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCoinSceneQueueState.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCoinSceneQueueState"; - }; - - return SCCoinSceneQueueState; - })(); - - /** - * OpResultCode_Game enum. - * @name gamehall.OpResultCode_Game - * @enum {number} - * @property {number} OPRC_Sucess_Game=0 OPRC_Sucess_Game value - * @property {number} OPRC_Error_Game=1 OPRC_Error_Game value - * @property {number} OPRC_RoomNotExist_Game=1016 OPRC_RoomNotExist_Game value - * @property {number} OPRC_GameNotExist_Game=1017 OPRC_GameNotExist_Game value - * @property {number} OPRC_GameHadClosed=1018 OPRC_GameHadClosed value - * @property {number} OPRC_RoomIsFull_Game=1019 OPRC_RoomIsFull_Game value - * @property {number} OPRC_RoomHadExist_Game=1020 OPRC_RoomHadExist_Game value - * @property {number} OPRC_GameStarting_Game=1022 OPRC_GameStarting_Game value - * @property {number} OPRC_CannotWatchReasonInOther_Game=1024 OPRC_CannotWatchReasonInOther_Game value - * @property {number} OPRC_MoneyNotEnough_Game=1040 OPRC_MoneyNotEnough_Game value - * @property {number} OPRC_CannotWatchReasonRoomNotStart_Game=1042 OPRC_CannotWatchReasonRoomNotStart_Game value - * @property {number} OPRC_OnlyAllowClubMemberEnter_Game=1043 OPRC_OnlyAllowClubMemberEnter_Game value - * @property {number} OPRC_YourResVerIsLow_Game=1044 OPRC_YourResVerIsLow_Game value - * @property {number} OPRC_YourAppVerIsLow_Game=1045 OPRC_YourAppVerIsLow_Game value - * @property {number} OPRC_ScenePosFull_Game=1048 OPRC_ScenePosFull_Game value - * @property {number} OPRC_SceneEnterForWatcher_Game=1050 OPRC_SceneEnterForWatcher_Game value - * @property {number} OPRC_RoomHadClosed_Game=1053 OPRC_RoomHadClosed_Game value - * @property {number} OPRC_SceneServerMaintain_Game=1054 OPRC_SceneServerMaintain_Game value - * @property {number} OPRC_SameIpForbid_Game=1055 OPRC_SameIpForbid_Game value - * @property {number} OPRC_CoinNotEnough_Game=1056 OPRC_CoinNotEnough_Game value - * @property {number} OPRC_CoinTooMore_Game=1058 OPRC_CoinTooMore_Game value - * @property {number} OPRC_InOtherGameIng_Game=1059 OPRC_InOtherGameIng_Game value - * @property {number} OPRC_OpYield_Game=1082 OPRC_OpYield_Game value - * @property {number} OPRC_AllocRoomIdFailed_Game=1097 OPRC_AllocRoomIdFailed_Game value - * @property {number} OPRC_PrivateRoomCountLimit_Game=1098 OPRC_PrivateRoomCountLimit_Game value - * @property {number} OPRC_LowerRice_ScenceMax_Game=1075 OPRC_LowerRice_ScenceMax_Game value - * @property {number} OPRC_LowerRice_PlayerMax_Game=1076 OPRC_LowerRice_PlayerMax_Game value - * @property {number} OPRC_LowerRice_PlayerDownMax_Game=1077 OPRC_LowerRice_PlayerDownMax_Game value - * @property {number} OPRC_YourAreGamingCannotLeave_Game=1078 OPRC_YourAreGamingCannotLeave_Game value - * @property {number} OPRC_ThirdPltProcessing_Game=1096 OPRC_ThirdPltProcessing_Game value - * @property {number} OPRC_RoomGameTimes_Game=1103 OPRC_RoomGameTimes_Game value - * @property {number} OPRC_MustBindPromoter_Game=1113 OPRC_MustBindPromoter_Game value - * @property {number} Oprc_Club_ClubIsClose_Game=5023 Oprc_Club_ClubIsClose_Game value - * @property {number} OPRC_Dg_RegistErr_Game=9000 OPRC_Dg_RegistErr_Game value - * @property {number} OPRC_Dg_LoginErr_Game=9001 OPRC_Dg_LoginErr_Game value - * @property {number} OPRC_Dg_PlatErr_Game=9002 OPRC_Dg_PlatErr_Game value - * @property {number} OPRC_Dg_QuotaNotEnough_Game=9003 OPRC_Dg_QuotaNotEnough_Game value - * @property {number} OPRC_Thr_GameClose_Game=9010 OPRC_Thr_GameClose_Game value - */ - gamehall.OpResultCode_Game = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPRC_Sucess_Game"] = 0; - values[valuesById[1] = "OPRC_Error_Game"] = 1; - values[valuesById[1016] = "OPRC_RoomNotExist_Game"] = 1016; - values[valuesById[1017] = "OPRC_GameNotExist_Game"] = 1017; - values[valuesById[1018] = "OPRC_GameHadClosed"] = 1018; - values[valuesById[1019] = "OPRC_RoomIsFull_Game"] = 1019; - values[valuesById[1020] = "OPRC_RoomHadExist_Game"] = 1020; - values[valuesById[1022] = "OPRC_GameStarting_Game"] = 1022; - values[valuesById[1024] = "OPRC_CannotWatchReasonInOther_Game"] = 1024; - values[valuesById[1040] = "OPRC_MoneyNotEnough_Game"] = 1040; - values[valuesById[1042] = "OPRC_CannotWatchReasonRoomNotStart_Game"] = 1042; - values[valuesById[1043] = "OPRC_OnlyAllowClubMemberEnter_Game"] = 1043; - values[valuesById[1044] = "OPRC_YourResVerIsLow_Game"] = 1044; - values[valuesById[1045] = "OPRC_YourAppVerIsLow_Game"] = 1045; - values[valuesById[1048] = "OPRC_ScenePosFull_Game"] = 1048; - values[valuesById[1050] = "OPRC_SceneEnterForWatcher_Game"] = 1050; - values[valuesById[1053] = "OPRC_RoomHadClosed_Game"] = 1053; - values[valuesById[1054] = "OPRC_SceneServerMaintain_Game"] = 1054; - values[valuesById[1055] = "OPRC_SameIpForbid_Game"] = 1055; - values[valuesById[1056] = "OPRC_CoinNotEnough_Game"] = 1056; - values[valuesById[1058] = "OPRC_CoinTooMore_Game"] = 1058; - values[valuesById[1059] = "OPRC_InOtherGameIng_Game"] = 1059; - values[valuesById[1082] = "OPRC_OpYield_Game"] = 1082; - values[valuesById[1097] = "OPRC_AllocRoomIdFailed_Game"] = 1097; - values[valuesById[1098] = "OPRC_PrivateRoomCountLimit_Game"] = 1098; - values[valuesById[1075] = "OPRC_LowerRice_ScenceMax_Game"] = 1075; - values[valuesById[1076] = "OPRC_LowerRice_PlayerMax_Game"] = 1076; - values[valuesById[1077] = "OPRC_LowerRice_PlayerDownMax_Game"] = 1077; - values[valuesById[1078] = "OPRC_YourAreGamingCannotLeave_Game"] = 1078; - values[valuesById[1096] = "OPRC_ThirdPltProcessing_Game"] = 1096; - values[valuesById[1103] = "OPRC_RoomGameTimes_Game"] = 1103; - values[valuesById[1113] = "OPRC_MustBindPromoter_Game"] = 1113; - values[valuesById[5023] = "Oprc_Club_ClubIsClose_Game"] = 5023; - values[valuesById[9000] = "OPRC_Dg_RegistErr_Game"] = 9000; - values[valuesById[9001] = "OPRC_Dg_LoginErr_Game"] = 9001; - values[valuesById[9002] = "OPRC_Dg_PlatErr_Game"] = 9002; - values[valuesById[9003] = "OPRC_Dg_QuotaNotEnough_Game"] = 9003; - values[valuesById[9010] = "OPRC_Thr_GameClose_Game"] = 9010; - return values; - })(); - - /** - * GameHallPacketID enum. - * @name gamehall.GameHallPacketID - * @enum {number} - * @property {number} PACKET_GameHall_ZERO=0 PACKET_GameHall_ZERO value - * @property {number} PACKET_CS_JOINGAME=2200 PACKET_CS_JOINGAME value - * @property {number} PACKET_SC_JOINGAME=2201 PACKET_SC_JOINGAME value - * @property {number} PACKET_CS_CREATEROOM=2202 PACKET_CS_CREATEROOM value - * @property {number} PACKET_SC_CREATEROOM=2203 PACKET_SC_CREATEROOM value - * @property {number} PACKET_CS_ENTERROOM=2204 PACKET_CS_ENTERROOM value - * @property {number} PACKET_SC_ENTERROOM=2205 PACKET_SC_ENTERROOM value - * @property {number} PACKET_CS_RETURNROOM=2206 PACKET_CS_RETURNROOM value - * @property {number} PACKET_SC_RETURNROOM=2207 PACKET_SC_RETURNROOM value - * @property {number} PACKET_CS_AUDIENCE_ENTERROOM=2208 PACKET_CS_AUDIENCE_ENTERROOM value - * @property {number} PACKET_CS_ENTERGAME=2209 PACKET_CS_ENTERGAME value - * @property {number} PACKET_SC_ENTERGAME=2210 PACKET_SC_ENTERGAME value - * @property {number} PACKET_CS_QUITGAME=2211 PACKET_CS_QUITGAME value - * @property {number} PACKET_SC_QUITGAME=2212 PACKET_SC_QUITGAME value - * @property {number} PACKET_SC_CARDGAINWAY=2213 PACKET_SC_CARDGAINWAY value - * @property {number} PACKET_CS_TASKLIST=2214 PACKET_CS_TASKLIST value - * @property {number} PACKET_SC_TASKLIST=2215 PACKET_SC_TASKLIST value - * @property {number} PACKET_SC_TASKCHG=2216 PACKET_SC_TASKCHG value - * @property {number} PACKET_SC_TACKCOMPLETE=2217 PACKET_SC_TACKCOMPLETE value - * @property {number} PACKET_SC_TASKDEL=2218 PACKET_SC_TASKDEL value - * @property {number} PACKET_CS_TACKDRAWPRIZE=2219 PACKET_CS_TACKDRAWPRIZE value - * @property {number} PACKET_SC_TACKDRAWPRIZE=2220 PACKET_SC_TACKDRAWPRIZE value - * @property {number} PACKET_CS_GETAGENTGAMEREC=2223 PACKET_CS_GETAGENTGAMEREC value - * @property {number} PACKET_SC_GETAGENTGAMEREC=2224 PACKET_SC_GETAGENTGAMEREC value - * @property {number} PACKET_CS_DELAGENTGAMEREC=2225 PACKET_CS_DELAGENTGAMEREC value - * @property {number} PACKET_CS_SHOPBUY=2226 PACKET_CS_SHOPBUY value - * @property {number} PACKET_SC_SHOPBUY=2227 PACKET_SC_SHOPBUY value - * @property {number} PACKET_SC_LIMITLIST=2228 PACKET_SC_LIMITLIST value - * @property {number} PACKET_CS_GETLATELYGAMEIDS=2229 PACKET_CS_GETLATELYGAMEIDS value - * @property {number} PACKET_SC_GETLATELYGAMEIDS=2230 PACKET_SC_GETLATELYGAMEIDS value - * @property {number} PACKET_CS_GETGAMECONFIG=2231 PACKET_CS_GETGAMECONFIG value - * @property {number} PACKET_SC_GETGAMECONFIG=2232 PACKET_SC_GETGAMECONFIG value - * @property {number} PACKET_SC_CHANGEGAMESTATUS=2233 PACKET_SC_CHANGEGAMESTATUS value - * @property {number} PACKET_CS_ENTERHALL=2240 PACKET_CS_ENTERHALL value - * @property {number} PACKET_SC_ENTERHALL=2241 PACKET_SC_ENTERHALL value - * @property {number} PACKET_CS_LEAVEHALL=2242 PACKET_CS_LEAVEHALL value - * @property {number} PACKET_SC_LEAVEHALL=2243 PACKET_SC_LEAVEHALL value - * @property {number} PACKET_CS_HALLROOMLIST=2244 PACKET_CS_HALLROOMLIST value - * @property {number} PACKET_SC_HALLROOMLIST=2245 PACKET_SC_HALLROOMLIST value - * @property {number} PACKET_SC_ROOMPLAYERENTER=2246 PACKET_SC_ROOMPLAYERENTER value - * @property {number} PACKET_SC_ROOMPLAYERLEAVE=2247 PACKET_SC_ROOMPLAYERLEAVE value - * @property {number} PACKET_SC_ROOMSTATECHANG=2248 PACKET_SC_ROOMSTATECHANG value - * @property {number} PACKET_SC_HALLPLAYERNUM=2249 PACKET_SC_HALLPLAYERNUM value - * @property {number} PACKET_SC_BULLETIONINFO=2250 PACKET_SC_BULLETIONINFO value - * @property {number} PACKET_CS_BULLETIONINFO=2251 PACKET_CS_BULLETIONINFO value - * @property {number} PACKET_CS_CUSTOMERINFOLIST=2252 PACKET_CS_CUSTOMERINFOLIST value - * @property {number} PACKET_SC_CUSTOMERINFOLIST=2253 PACKET_SC_CUSTOMERINFOLIST value - * @property {number} PACKET_CS_ENTERDGGAME=2254 PACKET_CS_ENTERDGGAME value - * @property {number} PACKET_SC_ENTERDGGAME=2255 PACKET_SC_ENTERDGGAME value - * @property {number} PACKET_CS_LEAVEDGGAME=2256 PACKET_CS_LEAVEDGGAME value - * @property {number} PACKET_SC_LEAVEDGGAME=2257 PACKET_SC_LEAVEDGGAME value - * @property {number} PACKET_SC_PLAYERRECHARGEANSWER=2258 PACKET_SC_PLAYERRECHARGEANSWER value - * @property {number} PACKET_CS_THRIDACCOUNTSTATICSTIC=2259 PACKET_CS_THRIDACCOUNTSTATICSTIC value - * @property {number} PACKET_SC_THRIDACCOUNTSTATICSTIC=2260 PACKET_SC_THRIDACCOUNTSTATICSTIC value - * @property {number} PACKET_CS_THRIDACCOUNTTRANSFER=2261 PACKET_CS_THRIDACCOUNTTRANSFER value - * @property {number} PACKET_SC_THRIDACCOUNTTRANSFER=2262 PACKET_SC_THRIDACCOUNTTRANSFER value - * @property {number} PACKET_CS_ENTERTHRIDGAME=2263 PACKET_CS_ENTERTHRIDGAME value - * @property {number} PACKET_SC_ENTERTHRIDGAME=2264 PACKET_SC_ENTERTHRIDGAME value - * @property {number} PACKET_CS_LEAVETHRIDGAME=2265 PACKET_CS_LEAVETHRIDGAME value - * @property {number} PACKET_SC_LEAVETHRIDGAME=2266 PACKET_SC_LEAVETHRIDGAME value - * @property {number} PACKET_CS_THRIDGAMELIST=2267 PACKET_CS_THRIDGAMELIST value - * @property {number} PACKET_SC_THRIDGAMELIST=2268 PACKET_SC_THRIDGAMELIST value - * @property {number} PACKET_CS_THRIDGAMEBALANCEUPDATE=2269 PACKET_CS_THRIDGAMEBALANCEUPDATE value - * @property {number} PACKET_SC_THRIDGAMEBALANCEUPDATE=2270 PACKET_SC_THRIDGAMEBALANCEUPDATE value - * @property {number} PACKET_SC_THRIDGAMEBALANCEUPDATESTATE=2271 PACKET_SC_THRIDGAMEBALANCEUPDATESTATE value - * @property {number} PACKET_CS_CREATEPRIVATEROOM=2272 PACKET_CS_CREATEPRIVATEROOM value - * @property {number} PACKET_SC_CREATEPRIVATEROOM=2273 PACKET_SC_CREATEPRIVATEROOM value - * @property {number} PACKET_CS_GETPRIVATEROOMLIST=2274 PACKET_CS_GETPRIVATEROOMLIST value - * @property {number} PACKET_SC_GETPRIVATEROOMLIST=2275 PACKET_SC_GETPRIVATEROOMLIST value - * @property {number} PACKET_CS_GETPRIVATEROOMHISTORY=2276 PACKET_CS_GETPRIVATEROOMHISTORY value - * @property {number} PACKET_SC_GETPRIVATEROOMHISTORY=2277 PACKET_SC_GETPRIVATEROOMHISTORY value - * @property {number} PACKET_CS_DESTROYPRIVATEROOM=2278 PACKET_CS_DESTROYPRIVATEROOM value - * @property {number} PACKET_SC_DESTROYPRIVATEROOM=2279 PACKET_SC_DESTROYPRIVATEROOM value - * @property {number} PACKET_CS_QUERYROOMINFO=2280 PACKET_CS_QUERYROOMINFO value - * @property {number} PACKET_SC_QUERYROOMINFO=2281 PACKET_SC_QUERYROOMINFO value - * @property {number} PACKET_SC_GAMESUBLIST=2283 PACKET_SC_GAMESUBLIST value - * @property {number} PACKET_CS_GAMEOBSERVE=2284 PACKET_CS_GAMEOBSERVE value - * @property {number} PACKET_SC_GAMESTATE=2285 PACKET_SC_GAMESTATE value - * @property {number} PACKET_SC_SYNCGAMEFREE=2286 PACKET_SC_SYNCGAMEFREE value - * @property {number} PACKET_SC_LOTTERYSYNC=2287 PACKET_SC_LOTTERYSYNC value - * @property {number} PACKET_CS_LOTTERYLOG=2288 PACKET_CS_LOTTERYLOG value - * @property {number} PACKET_SC_LOTTERYLOG=2289 PACKET_SC_LOTTERYLOG value - * @property {number} PACKET_SC_LOTTERYBILL=2290 PACKET_SC_LOTTERYBILL value - * @property {number} PACKET_CS_UPLOADLOC=2291 PACKET_CS_UPLOADLOC value - * @property {number} PACKET_SC_UPLOADLOC=2292 PACKET_SC_UPLOADLOC value - * @property {number} PACKET_CS_AUDIENCESIT=2293 PACKET_CS_AUDIENCESIT value - * @property {number} PACKET_SC_AUDIENCESIT=2294 PACKET_SC_AUDIENCESIT value - * @property {number} PACKET_CS_COMNOTICE=2295 PACKET_CS_COMNOTICE value - * @property {number} PACKET_SC_COMNOTICE=2296 PACKET_SC_COMNOTICE value - * @property {number} PACKET_SC_CHANGEENTRYSWITCH=2297 PACKET_SC_CHANGEENTRYSWITCH value - * @property {number} PACKET_CS_LEAVEROOM=8001 PACKET_CS_LEAVEROOM value - * @property {number} PACKET_SC_LEAVEROOM=8002 PACKET_SC_LEAVEROOM value - * @property {number} PACKET_CS_DESTROYROOM=8003 PACKET_CS_DESTROYROOM value - * @property {number} PACKET_SC_DESTROYROOM=8004 PACKET_SC_DESTROYROOM value - * @property {number} PACKET_CS_FORCESTART=8005 PACKET_CS_FORCESTART value - * @property {number} PACKET_SC_FORCESTART=8006 PACKET_SC_FORCESTART value - * @property {number} PACKET_CS_AUDIENCE_LEAVEROOM=8007 PACKET_CS_AUDIENCE_LEAVEROOM value - * @property {number} PACKET_CS_PLAYER_SWITCHFLAG=8008 PACKET_CS_PLAYER_SWITCHFLAG value - */ - gamehall.GameHallPacketID = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "PACKET_GameHall_ZERO"] = 0; - values[valuesById[2200] = "PACKET_CS_JOINGAME"] = 2200; - values[valuesById[2201] = "PACKET_SC_JOINGAME"] = 2201; - values[valuesById[2202] = "PACKET_CS_CREATEROOM"] = 2202; - values[valuesById[2203] = "PACKET_SC_CREATEROOM"] = 2203; - values[valuesById[2204] = "PACKET_CS_ENTERROOM"] = 2204; - values[valuesById[2205] = "PACKET_SC_ENTERROOM"] = 2205; - values[valuesById[2206] = "PACKET_CS_RETURNROOM"] = 2206; - values[valuesById[2207] = "PACKET_SC_RETURNROOM"] = 2207; - values[valuesById[2208] = "PACKET_CS_AUDIENCE_ENTERROOM"] = 2208; - values[valuesById[2209] = "PACKET_CS_ENTERGAME"] = 2209; - values[valuesById[2210] = "PACKET_SC_ENTERGAME"] = 2210; - values[valuesById[2211] = "PACKET_CS_QUITGAME"] = 2211; - values[valuesById[2212] = "PACKET_SC_QUITGAME"] = 2212; - values[valuesById[2213] = "PACKET_SC_CARDGAINWAY"] = 2213; - values[valuesById[2214] = "PACKET_CS_TASKLIST"] = 2214; - values[valuesById[2215] = "PACKET_SC_TASKLIST"] = 2215; - values[valuesById[2216] = "PACKET_SC_TASKCHG"] = 2216; - values[valuesById[2217] = "PACKET_SC_TACKCOMPLETE"] = 2217; - values[valuesById[2218] = "PACKET_SC_TASKDEL"] = 2218; - values[valuesById[2219] = "PACKET_CS_TACKDRAWPRIZE"] = 2219; - values[valuesById[2220] = "PACKET_SC_TACKDRAWPRIZE"] = 2220; - values[valuesById[2223] = "PACKET_CS_GETAGENTGAMEREC"] = 2223; - values[valuesById[2224] = "PACKET_SC_GETAGENTGAMEREC"] = 2224; - values[valuesById[2225] = "PACKET_CS_DELAGENTGAMEREC"] = 2225; - values[valuesById[2226] = "PACKET_CS_SHOPBUY"] = 2226; - values[valuesById[2227] = "PACKET_SC_SHOPBUY"] = 2227; - values[valuesById[2228] = "PACKET_SC_LIMITLIST"] = 2228; - values[valuesById[2229] = "PACKET_CS_GETLATELYGAMEIDS"] = 2229; - values[valuesById[2230] = "PACKET_SC_GETLATELYGAMEIDS"] = 2230; - values[valuesById[2231] = "PACKET_CS_GETGAMECONFIG"] = 2231; - values[valuesById[2232] = "PACKET_SC_GETGAMECONFIG"] = 2232; - values[valuesById[2233] = "PACKET_SC_CHANGEGAMESTATUS"] = 2233; - values[valuesById[2240] = "PACKET_CS_ENTERHALL"] = 2240; - values[valuesById[2241] = "PACKET_SC_ENTERHALL"] = 2241; - values[valuesById[2242] = "PACKET_CS_LEAVEHALL"] = 2242; - values[valuesById[2243] = "PACKET_SC_LEAVEHALL"] = 2243; - values[valuesById[2244] = "PACKET_CS_HALLROOMLIST"] = 2244; - values[valuesById[2245] = "PACKET_SC_HALLROOMLIST"] = 2245; - values[valuesById[2246] = "PACKET_SC_ROOMPLAYERENTER"] = 2246; - values[valuesById[2247] = "PACKET_SC_ROOMPLAYERLEAVE"] = 2247; - values[valuesById[2248] = "PACKET_SC_ROOMSTATECHANG"] = 2248; - values[valuesById[2249] = "PACKET_SC_HALLPLAYERNUM"] = 2249; - values[valuesById[2250] = "PACKET_SC_BULLETIONINFO"] = 2250; - values[valuesById[2251] = "PACKET_CS_BULLETIONINFO"] = 2251; - values[valuesById[2252] = "PACKET_CS_CUSTOMERINFOLIST"] = 2252; - values[valuesById[2253] = "PACKET_SC_CUSTOMERINFOLIST"] = 2253; - values[valuesById[2254] = "PACKET_CS_ENTERDGGAME"] = 2254; - values[valuesById[2255] = "PACKET_SC_ENTERDGGAME"] = 2255; - values[valuesById[2256] = "PACKET_CS_LEAVEDGGAME"] = 2256; - values[valuesById[2257] = "PACKET_SC_LEAVEDGGAME"] = 2257; - values[valuesById[2258] = "PACKET_SC_PLAYERRECHARGEANSWER"] = 2258; - values[valuesById[2259] = "PACKET_CS_THRIDACCOUNTSTATICSTIC"] = 2259; - values[valuesById[2260] = "PACKET_SC_THRIDACCOUNTSTATICSTIC"] = 2260; - values[valuesById[2261] = "PACKET_CS_THRIDACCOUNTTRANSFER"] = 2261; - values[valuesById[2262] = "PACKET_SC_THRIDACCOUNTTRANSFER"] = 2262; - values[valuesById[2263] = "PACKET_CS_ENTERTHRIDGAME"] = 2263; - values[valuesById[2264] = "PACKET_SC_ENTERTHRIDGAME"] = 2264; - values[valuesById[2265] = "PACKET_CS_LEAVETHRIDGAME"] = 2265; - values[valuesById[2266] = "PACKET_SC_LEAVETHRIDGAME"] = 2266; - values[valuesById[2267] = "PACKET_CS_THRIDGAMELIST"] = 2267; - values[valuesById[2268] = "PACKET_SC_THRIDGAMELIST"] = 2268; - values[valuesById[2269] = "PACKET_CS_THRIDGAMEBALANCEUPDATE"] = 2269; - values[valuesById[2270] = "PACKET_SC_THRIDGAMEBALANCEUPDATE"] = 2270; - values[valuesById[2271] = "PACKET_SC_THRIDGAMEBALANCEUPDATESTATE"] = 2271; - values[valuesById[2272] = "PACKET_CS_CREATEPRIVATEROOM"] = 2272; - values[valuesById[2273] = "PACKET_SC_CREATEPRIVATEROOM"] = 2273; - values[valuesById[2274] = "PACKET_CS_GETPRIVATEROOMLIST"] = 2274; - values[valuesById[2275] = "PACKET_SC_GETPRIVATEROOMLIST"] = 2275; - values[valuesById[2276] = "PACKET_CS_GETPRIVATEROOMHISTORY"] = 2276; - values[valuesById[2277] = "PACKET_SC_GETPRIVATEROOMHISTORY"] = 2277; - values[valuesById[2278] = "PACKET_CS_DESTROYPRIVATEROOM"] = 2278; - values[valuesById[2279] = "PACKET_SC_DESTROYPRIVATEROOM"] = 2279; - values[valuesById[2280] = "PACKET_CS_QUERYROOMINFO"] = 2280; - values[valuesById[2281] = "PACKET_SC_QUERYROOMINFO"] = 2281; - values[valuesById[2283] = "PACKET_SC_GAMESUBLIST"] = 2283; - values[valuesById[2284] = "PACKET_CS_GAMEOBSERVE"] = 2284; - values[valuesById[2285] = "PACKET_SC_GAMESTATE"] = 2285; - values[valuesById[2286] = "PACKET_SC_SYNCGAMEFREE"] = 2286; - values[valuesById[2287] = "PACKET_SC_LOTTERYSYNC"] = 2287; - values[valuesById[2288] = "PACKET_CS_LOTTERYLOG"] = 2288; - values[valuesById[2289] = "PACKET_SC_LOTTERYLOG"] = 2289; - values[valuesById[2290] = "PACKET_SC_LOTTERYBILL"] = 2290; - values[valuesById[2291] = "PACKET_CS_UPLOADLOC"] = 2291; - values[valuesById[2292] = "PACKET_SC_UPLOADLOC"] = 2292; - values[valuesById[2293] = "PACKET_CS_AUDIENCESIT"] = 2293; - values[valuesById[2294] = "PACKET_SC_AUDIENCESIT"] = 2294; - values[valuesById[2295] = "PACKET_CS_COMNOTICE"] = 2295; - values[valuesById[2296] = "PACKET_SC_COMNOTICE"] = 2296; - values[valuesById[2297] = "PACKET_SC_CHANGEENTRYSWITCH"] = 2297; - values[valuesById[8001] = "PACKET_CS_LEAVEROOM"] = 8001; - values[valuesById[8002] = "PACKET_SC_LEAVEROOM"] = 8002; - values[valuesById[8003] = "PACKET_CS_DESTROYROOM"] = 8003; - values[valuesById[8004] = "PACKET_SC_DESTROYROOM"] = 8004; - values[valuesById[8005] = "PACKET_CS_FORCESTART"] = 8005; - values[valuesById[8006] = "PACKET_SC_FORCESTART"] = 8006; - values[valuesById[8007] = "PACKET_CS_AUDIENCE_LEAVEROOM"] = 8007; - values[valuesById[8008] = "PACKET_CS_PLAYER_SWITCHFLAG"] = 8008; - return values; - })(); - - gamehall.CSEnterHall = (function() { - - /** - * Properties of a CSEnterHall. - * @memberof gamehall - * @interface ICSEnterHall - * @property {number|null} [HallId] CSEnterHall HallId - */ - - /** - * Constructs a new CSEnterHall. - * @memberof gamehall - * @classdesc Represents a CSEnterHall. - * @implements ICSEnterHall - * @constructor - * @param {gamehall.ICSEnterHall=} [properties] Properties to set - */ - function CSEnterHall(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSEnterHall HallId. - * @member {number} HallId - * @memberof gamehall.CSEnterHall - * @instance - */ - CSEnterHall.prototype.HallId = 0; - - /** - * Creates a new CSEnterHall instance using the specified properties. - * @function create - * @memberof gamehall.CSEnterHall - * @static - * @param {gamehall.ICSEnterHall=} [properties] Properties to set - * @returns {gamehall.CSEnterHall} CSEnterHall instance - */ - CSEnterHall.create = function create(properties) { - return new CSEnterHall(properties); - }; - - /** - * Encodes the specified CSEnterHall message. Does not implicitly {@link gamehall.CSEnterHall.verify|verify} messages. - * @function encode - * @memberof gamehall.CSEnterHall - * @static - * @param {gamehall.ICSEnterHall} message CSEnterHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterHall.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.HallId); - return writer; - }; - - /** - * Encodes the specified CSEnterHall message, length delimited. Does not implicitly {@link gamehall.CSEnterHall.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSEnterHall - * @static - * @param {gamehall.ICSEnterHall} message CSEnterHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterHall.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSEnterHall message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSEnterHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSEnterHall} CSEnterHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterHall.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSEnterHall(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.HallId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSEnterHall message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSEnterHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSEnterHall} CSEnterHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterHall.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSEnterHall message. - * @function verify - * @memberof gamehall.CSEnterHall - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSEnterHall.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - return null; - }; - - /** - * Creates a CSEnterHall message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSEnterHall - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSEnterHall} CSEnterHall - */ - CSEnterHall.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSEnterHall) - return object; - var message = new $root.gamehall.CSEnterHall(); - if (object.HallId != null) - message.HallId = object.HallId | 0; - return message; - }; - - /** - * Creates a plain object from a CSEnterHall message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSEnterHall - * @static - * @param {gamehall.CSEnterHall} message CSEnterHall - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSEnterHall.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.HallId = 0; - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - return object; - }; - - /** - * Converts this CSEnterHall to JSON. - * @function toJSON - * @memberof gamehall.CSEnterHall - * @instance - * @returns {Object.} JSON object - */ - CSEnterHall.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSEnterHall - * @function getTypeUrl - * @memberof gamehall.CSEnterHall - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSEnterHall.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSEnterHall"; - }; - - return CSEnterHall; - })(); - - gamehall.SCEnterHall = (function() { - - /** - * Properties of a SCEnterHall. - * @memberof gamehall - * @interface ISCEnterHall - * @property {number|null} [HallId] SCEnterHall HallId - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCEnterHall OpRetCode - */ - - /** - * Constructs a new SCEnterHall. - * @memberof gamehall - * @classdesc Represents a SCEnterHall. - * @implements ISCEnterHall - * @constructor - * @param {gamehall.ISCEnterHall=} [properties] Properties to set - */ - function SCEnterHall(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCEnterHall HallId. - * @member {number} HallId - * @memberof gamehall.SCEnterHall - * @instance - */ - SCEnterHall.prototype.HallId = 0; - - /** - * SCEnterHall OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCEnterHall - * @instance - */ - SCEnterHall.prototype.OpRetCode = 0; - - /** - * Creates a new SCEnterHall instance using the specified properties. - * @function create - * @memberof gamehall.SCEnterHall - * @static - * @param {gamehall.ISCEnterHall=} [properties] Properties to set - * @returns {gamehall.SCEnterHall} SCEnterHall instance - */ - SCEnterHall.create = function create(properties) { - return new SCEnterHall(properties); - }; - - /** - * Encodes the specified SCEnterHall message. Does not implicitly {@link gamehall.SCEnterHall.verify|verify} messages. - * @function encode - * @memberof gamehall.SCEnterHall - * @static - * @param {gamehall.ISCEnterHall} message SCEnterHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterHall.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.HallId); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCEnterHall message, length delimited. Does not implicitly {@link gamehall.SCEnterHall.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCEnterHall - * @static - * @param {gamehall.ISCEnterHall} message SCEnterHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterHall.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCEnterHall message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCEnterHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCEnterHall} SCEnterHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterHall.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCEnterHall(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.HallId = reader.int32(); - break; - } - case 2: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCEnterHall message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCEnterHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCEnterHall} SCEnterHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterHall.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCEnterHall message. - * @function verify - * @memberof gamehall.SCEnterHall - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCEnterHall.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCEnterHall message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCEnterHall - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCEnterHall} SCEnterHall - */ - SCEnterHall.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCEnterHall) - return object; - var message = new $root.gamehall.SCEnterHall(); - if (object.HallId != null) - message.HallId = object.HallId | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCEnterHall message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCEnterHall - * @static - * @param {gamehall.SCEnterHall} message SCEnterHall - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCEnterHall.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.HallId = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - } - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCEnterHall to JSON. - * @function toJSON - * @memberof gamehall.SCEnterHall - * @instance - * @returns {Object.} JSON object - */ - SCEnterHall.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCEnterHall - * @function getTypeUrl - * @memberof gamehall.SCEnterHall - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCEnterHall.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCEnterHall"; - }; - - return SCEnterHall; - })(); - - gamehall.CSLeaveHall = (function() { - - /** - * Properties of a CSLeaveHall. - * @memberof gamehall - * @interface ICSLeaveHall - */ - - /** - * Constructs a new CSLeaveHall. - * @memberof gamehall - * @classdesc Represents a CSLeaveHall. - * @implements ICSLeaveHall - * @constructor - * @param {gamehall.ICSLeaveHall=} [properties] Properties to set - */ - function CSLeaveHall(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSLeaveHall instance using the specified properties. - * @function create - * @memberof gamehall.CSLeaveHall - * @static - * @param {gamehall.ICSLeaveHall=} [properties] Properties to set - * @returns {gamehall.CSLeaveHall} CSLeaveHall instance - */ - CSLeaveHall.create = function create(properties) { - return new CSLeaveHall(properties); - }; - - /** - * Encodes the specified CSLeaveHall message. Does not implicitly {@link gamehall.CSLeaveHall.verify|verify} messages. - * @function encode - * @memberof gamehall.CSLeaveHall - * @static - * @param {gamehall.ICSLeaveHall} message CSLeaveHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveHall.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSLeaveHall message, length delimited. Does not implicitly {@link gamehall.CSLeaveHall.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSLeaveHall - * @static - * @param {gamehall.ICSLeaveHall} message CSLeaveHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveHall.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSLeaveHall message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSLeaveHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSLeaveHall} CSLeaveHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveHall.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSLeaveHall(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSLeaveHall message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSLeaveHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSLeaveHall} CSLeaveHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveHall.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSLeaveHall message. - * @function verify - * @memberof gamehall.CSLeaveHall - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSLeaveHall.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSLeaveHall message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSLeaveHall - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSLeaveHall} CSLeaveHall - */ - CSLeaveHall.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSLeaveHall) - return object; - return new $root.gamehall.CSLeaveHall(); - }; - - /** - * Creates a plain object from a CSLeaveHall message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSLeaveHall - * @static - * @param {gamehall.CSLeaveHall} message CSLeaveHall - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSLeaveHall.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSLeaveHall to JSON. - * @function toJSON - * @memberof gamehall.CSLeaveHall - * @instance - * @returns {Object.} JSON object - */ - CSLeaveHall.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSLeaveHall - * @function getTypeUrl - * @memberof gamehall.CSLeaveHall - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSLeaveHall.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSLeaveHall"; - }; - - return CSLeaveHall; - })(); - - gamehall.SCLeaveHall = (function() { - - /** - * Properties of a SCLeaveHall. - * @memberof gamehall - * @interface ISCLeaveHall - * @property {number|null} [HallId] SCLeaveHall HallId - */ - - /** - * Constructs a new SCLeaveHall. - * @memberof gamehall - * @classdesc Represents a SCLeaveHall. - * @implements ISCLeaveHall - * @constructor - * @param {gamehall.ISCLeaveHall=} [properties] Properties to set - */ - function SCLeaveHall(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLeaveHall HallId. - * @member {number} HallId - * @memberof gamehall.SCLeaveHall - * @instance - */ - SCLeaveHall.prototype.HallId = 0; - - /** - * Creates a new SCLeaveHall instance using the specified properties. - * @function create - * @memberof gamehall.SCLeaveHall - * @static - * @param {gamehall.ISCLeaveHall=} [properties] Properties to set - * @returns {gamehall.SCLeaveHall} SCLeaveHall instance - */ - SCLeaveHall.create = function create(properties) { - return new SCLeaveHall(properties); - }; - - /** - * Encodes the specified SCLeaveHall message. Does not implicitly {@link gamehall.SCLeaveHall.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLeaveHall - * @static - * @param {gamehall.ISCLeaveHall} message SCLeaveHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveHall.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.HallId); - return writer; - }; - - /** - * Encodes the specified SCLeaveHall message, length delimited. Does not implicitly {@link gamehall.SCLeaveHall.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLeaveHall - * @static - * @param {gamehall.ISCLeaveHall} message SCLeaveHall message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveHall.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLeaveHall message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLeaveHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLeaveHall} SCLeaveHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveHall.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLeaveHall(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.HallId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLeaveHall message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLeaveHall - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLeaveHall} SCLeaveHall - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveHall.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLeaveHall message. - * @function verify - * @memberof gamehall.SCLeaveHall - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLeaveHall.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - return null; - }; - - /** - * Creates a SCLeaveHall message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLeaveHall - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLeaveHall} SCLeaveHall - */ - SCLeaveHall.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLeaveHall) - return object; - var message = new $root.gamehall.SCLeaveHall(); - if (object.HallId != null) - message.HallId = object.HallId | 0; - return message; - }; - - /** - * Creates a plain object from a SCLeaveHall message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLeaveHall - * @static - * @param {gamehall.SCLeaveHall} message SCLeaveHall - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLeaveHall.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.HallId = 0; - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - return object; - }; - - /** - * Converts this SCLeaveHall to JSON. - * @function toJSON - * @memberof gamehall.SCLeaveHall - * @instance - * @returns {Object.} JSON object - */ - SCLeaveHall.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLeaveHall - * @function getTypeUrl - * @memberof gamehall.SCLeaveHall - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLeaveHall.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLeaveHall"; - }; - - return SCLeaveHall; - })(); - - gamehall.RoomPlayerInfo = (function() { - - /** - * Properties of a RoomPlayerInfo. - * @memberof gamehall - * @interface IRoomPlayerInfo - * @property {number|null} [SnId] RoomPlayerInfo SnId - * @property {number|null} [Head] RoomPlayerInfo Head - * @property {number|null} [Sex] RoomPlayerInfo Sex - * @property {string|null} [Name] RoomPlayerInfo Name - * @property {number|null} [Pos] RoomPlayerInfo Pos - * @property {number|null} [Flag] RoomPlayerInfo Flag - * @property {number|null} [HeadOutLine] RoomPlayerInfo HeadOutLine - * @property {number|null} [VIP] RoomPlayerInfo VIP - */ - - /** - * Constructs a new RoomPlayerInfo. - * @memberof gamehall - * @classdesc Represents a RoomPlayerInfo. - * @implements IRoomPlayerInfo - * @constructor - * @param {gamehall.IRoomPlayerInfo=} [properties] Properties to set - */ - function RoomPlayerInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * RoomPlayerInfo SnId. - * @member {number} SnId - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.SnId = 0; - - /** - * RoomPlayerInfo Head. - * @member {number} Head - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.Head = 0; - - /** - * RoomPlayerInfo Sex. - * @member {number} Sex - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.Sex = 0; - - /** - * RoomPlayerInfo Name. - * @member {string} Name - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.Name = ""; - - /** - * RoomPlayerInfo Pos. - * @member {number} Pos - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.Pos = 0; - - /** - * RoomPlayerInfo Flag. - * @member {number} Flag - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.Flag = 0; - - /** - * RoomPlayerInfo HeadOutLine. - * @member {number} HeadOutLine - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.HeadOutLine = 0; - - /** - * RoomPlayerInfo VIP. - * @member {number} VIP - * @memberof gamehall.RoomPlayerInfo - * @instance - */ - RoomPlayerInfo.prototype.VIP = 0; - - /** - * Creates a new RoomPlayerInfo instance using the specified properties. - * @function create - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {gamehall.IRoomPlayerInfo=} [properties] Properties to set - * @returns {gamehall.RoomPlayerInfo} RoomPlayerInfo instance - */ - RoomPlayerInfo.create = function create(properties) { - return new RoomPlayerInfo(properties); - }; - - /** - * Encodes the specified RoomPlayerInfo message. Does not implicitly {@link gamehall.RoomPlayerInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {gamehall.IRoomPlayerInfo} message RoomPlayerInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RoomPlayerInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.SnId != null && Object.hasOwnProperty.call(message, "SnId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.SnId); - if (message.Head != null && Object.hasOwnProperty.call(message, "Head")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Head); - if (message.Sex != null && Object.hasOwnProperty.call(message, "Sex")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Sex); - if (message.Name != null && Object.hasOwnProperty.call(message, "Name")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.Name); - if (message.Pos != null && Object.hasOwnProperty.call(message, "Pos")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.Pos); - if (message.Flag != null && Object.hasOwnProperty.call(message, "Flag")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.Flag); - if (message.HeadOutLine != null && Object.hasOwnProperty.call(message, "HeadOutLine")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.HeadOutLine); - if (message.VIP != null && Object.hasOwnProperty.call(message, "VIP")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.VIP); - return writer; - }; - - /** - * Encodes the specified RoomPlayerInfo message, length delimited. Does not implicitly {@link gamehall.RoomPlayerInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {gamehall.IRoomPlayerInfo} message RoomPlayerInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RoomPlayerInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a RoomPlayerInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.RoomPlayerInfo} RoomPlayerInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RoomPlayerInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.RoomPlayerInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.SnId = reader.int32(); - break; - } - case 2: { - message.Head = reader.int32(); - break; - } - case 3: { - message.Sex = reader.int32(); - break; - } - case 4: { - message.Name = reader.string(); - break; - } - case 5: { - message.Pos = reader.int32(); - break; - } - case 6: { - message.Flag = reader.int32(); - break; - } - case 7: { - message.HeadOutLine = reader.int32(); - break; - } - case 8: { - message.VIP = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a RoomPlayerInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.RoomPlayerInfo} RoomPlayerInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RoomPlayerInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a RoomPlayerInfo message. - * @function verify - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RoomPlayerInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.SnId != null && message.hasOwnProperty("SnId")) - if (!$util.isInteger(message.SnId)) - return "SnId: integer expected"; - if (message.Head != null && message.hasOwnProperty("Head")) - if (!$util.isInteger(message.Head)) - return "Head: integer expected"; - if (message.Sex != null && message.hasOwnProperty("Sex")) - if (!$util.isInteger(message.Sex)) - return "Sex: integer expected"; - if (message.Name != null && message.hasOwnProperty("Name")) - if (!$util.isString(message.Name)) - return "Name: string expected"; - if (message.Pos != null && message.hasOwnProperty("Pos")) - if (!$util.isInteger(message.Pos)) - return "Pos: integer expected"; - if (message.Flag != null && message.hasOwnProperty("Flag")) - if (!$util.isInteger(message.Flag)) - return "Flag: integer expected"; - if (message.HeadOutLine != null && message.hasOwnProperty("HeadOutLine")) - if (!$util.isInteger(message.HeadOutLine)) - return "HeadOutLine: integer expected"; - if (message.VIP != null && message.hasOwnProperty("VIP")) - if (!$util.isInteger(message.VIP)) - return "VIP: integer expected"; - return null; - }; - - /** - * Creates a RoomPlayerInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.RoomPlayerInfo} RoomPlayerInfo - */ - RoomPlayerInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.RoomPlayerInfo) - return object; - var message = new $root.gamehall.RoomPlayerInfo(); - if (object.SnId != null) - message.SnId = object.SnId | 0; - if (object.Head != null) - message.Head = object.Head | 0; - if (object.Sex != null) - message.Sex = object.Sex | 0; - if (object.Name != null) - message.Name = String(object.Name); - if (object.Pos != null) - message.Pos = object.Pos | 0; - if (object.Flag != null) - message.Flag = object.Flag | 0; - if (object.HeadOutLine != null) - message.HeadOutLine = object.HeadOutLine | 0; - if (object.VIP != null) - message.VIP = object.VIP | 0; - return message; - }; - - /** - * Creates a plain object from a RoomPlayerInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {gamehall.RoomPlayerInfo} message RoomPlayerInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RoomPlayerInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.SnId = 0; - object.Head = 0; - object.Sex = 0; - object.Name = ""; - object.Pos = 0; - object.Flag = 0; - object.HeadOutLine = 0; - object.VIP = 0; - } - if (message.SnId != null && message.hasOwnProperty("SnId")) - object.SnId = message.SnId; - if (message.Head != null && message.hasOwnProperty("Head")) - object.Head = message.Head; - if (message.Sex != null && message.hasOwnProperty("Sex")) - object.Sex = message.Sex; - if (message.Name != null && message.hasOwnProperty("Name")) - object.Name = message.Name; - if (message.Pos != null && message.hasOwnProperty("Pos")) - object.Pos = message.Pos; - if (message.Flag != null && message.hasOwnProperty("Flag")) - object.Flag = message.Flag; - if (message.HeadOutLine != null && message.hasOwnProperty("HeadOutLine")) - object.HeadOutLine = message.HeadOutLine; - if (message.VIP != null && message.hasOwnProperty("VIP")) - object.VIP = message.VIP; - return object; - }; - - /** - * Converts this RoomPlayerInfo to JSON. - * @function toJSON - * @memberof gamehall.RoomPlayerInfo - * @instance - * @returns {Object.} JSON object - */ - RoomPlayerInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for RoomPlayerInfo - * @function getTypeUrl - * @memberof gamehall.RoomPlayerInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RoomPlayerInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.RoomPlayerInfo"; - }; - - return RoomPlayerInfo; - })(); - - gamehall.RoomInfo = (function() { - - /** - * Properties of a RoomInfo. - * @memberof gamehall - * @interface IRoomInfo - * @property {number|null} [RoomId] RoomInfo RoomId - * @property {boolean|null} [Starting] RoomInfo Starting - * @property {Array.|null} [Players] RoomInfo Players - */ - - /** - * Constructs a new RoomInfo. - * @memberof gamehall - * @classdesc Represents a RoomInfo. - * @implements IRoomInfo - * @constructor - * @param {gamehall.IRoomInfo=} [properties] Properties to set - */ - function RoomInfo(properties) { - this.Players = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * RoomInfo RoomId. - * @member {number} RoomId - * @memberof gamehall.RoomInfo - * @instance - */ - RoomInfo.prototype.RoomId = 0; - - /** - * RoomInfo Starting. - * @member {boolean} Starting - * @memberof gamehall.RoomInfo - * @instance - */ - RoomInfo.prototype.Starting = false; - - /** - * RoomInfo Players. - * @member {Array.} Players - * @memberof gamehall.RoomInfo - * @instance - */ - RoomInfo.prototype.Players = $util.emptyArray; - - /** - * Creates a new RoomInfo instance using the specified properties. - * @function create - * @memberof gamehall.RoomInfo - * @static - * @param {gamehall.IRoomInfo=} [properties] Properties to set - * @returns {gamehall.RoomInfo} RoomInfo instance - */ - RoomInfo.create = function create(properties) { - return new RoomInfo(properties); - }; - - /** - * Encodes the specified RoomInfo message. Does not implicitly {@link gamehall.RoomInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.RoomInfo - * @static - * @param {gamehall.IRoomInfo} message RoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RoomInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.Players != null && message.Players.length) - for (var i = 0; i < message.Players.length; ++i) - $root.gamehall.RoomPlayerInfo.encode(message.Players[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.Starting != null && Object.hasOwnProperty.call(message, "Starting")) - writer.uint32(/* id 7, wireType 0 =*/56).bool(message.Starting); - return writer; - }; - - /** - * Encodes the specified RoomInfo message, length delimited. Does not implicitly {@link gamehall.RoomInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.RoomInfo - * @static - * @param {gamehall.IRoomInfo} message RoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RoomInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a RoomInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.RoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.RoomInfo} RoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RoomInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.RoomInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 7: { - message.Starting = reader.bool(); - break; - } - case 5: { - if (!(message.Players && message.Players.length)) - message.Players = []; - message.Players.push($root.gamehall.RoomPlayerInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a RoomInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.RoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.RoomInfo} RoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RoomInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a RoomInfo message. - * @function verify - * @memberof gamehall.RoomInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RoomInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.Starting != null && message.hasOwnProperty("Starting")) - if (typeof message.Starting !== "boolean") - return "Starting: boolean expected"; - if (message.Players != null && message.hasOwnProperty("Players")) { - if (!Array.isArray(message.Players)) - return "Players: array expected"; - for (var i = 0; i < message.Players.length; ++i) { - var error = $root.gamehall.RoomPlayerInfo.verify(message.Players[i]); - if (error) - return "Players." + error; - } - } - return null; - }; - - /** - * Creates a RoomInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.RoomInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.RoomInfo} RoomInfo - */ - RoomInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.RoomInfo) - return object; - var message = new $root.gamehall.RoomInfo(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.Starting != null) - message.Starting = Boolean(object.Starting); - if (object.Players) { - if (!Array.isArray(object.Players)) - throw TypeError(".gamehall.RoomInfo.Players: array expected"); - message.Players = []; - for (var i = 0; i < object.Players.length; ++i) { - if (typeof object.Players[i] !== "object") - throw TypeError(".gamehall.RoomInfo.Players: object expected"); - message.Players[i] = $root.gamehall.RoomPlayerInfo.fromObject(object.Players[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a RoomInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.RoomInfo - * @static - * @param {gamehall.RoomInfo} message RoomInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RoomInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Players = []; - if (options.defaults) { - object.RoomId = 0; - object.Starting = false; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.Players && message.Players.length) { - object.Players = []; - for (var j = 0; j < message.Players.length; ++j) - object.Players[j] = $root.gamehall.RoomPlayerInfo.toObject(message.Players[j], options); - } - if (message.Starting != null && message.hasOwnProperty("Starting")) - object.Starting = message.Starting; - return object; - }; - - /** - * Converts this RoomInfo to JSON. - * @function toJSON - * @memberof gamehall.RoomInfo - * @instance - * @returns {Object.} JSON object - */ - RoomInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for RoomInfo - * @function getTypeUrl - * @memberof gamehall.RoomInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RoomInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.RoomInfo"; - }; - - return RoomInfo; - })(); - - gamehall.CSHallRoomList = (function() { - - /** - * Properties of a CSHallRoomList. - * @memberof gamehall - * @interface ICSHallRoomList - * @property {number|null} [HallId] CSHallRoomList HallId - */ - - /** - * Constructs a new CSHallRoomList. - * @memberof gamehall - * @classdesc Represents a CSHallRoomList. - * @implements ICSHallRoomList - * @constructor - * @param {gamehall.ICSHallRoomList=} [properties] Properties to set - */ - function CSHallRoomList(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSHallRoomList HallId. - * @member {number} HallId - * @memberof gamehall.CSHallRoomList - * @instance - */ - CSHallRoomList.prototype.HallId = 0; - - /** - * Creates a new CSHallRoomList instance using the specified properties. - * @function create - * @memberof gamehall.CSHallRoomList - * @static - * @param {gamehall.ICSHallRoomList=} [properties] Properties to set - * @returns {gamehall.CSHallRoomList} CSHallRoomList instance - */ - CSHallRoomList.create = function create(properties) { - return new CSHallRoomList(properties); - }; - - /** - * Encodes the specified CSHallRoomList message. Does not implicitly {@link gamehall.CSHallRoomList.verify|verify} messages. - * @function encode - * @memberof gamehall.CSHallRoomList - * @static - * @param {gamehall.ICSHallRoomList} message CSHallRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHallRoomList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.HallId); - return writer; - }; - - /** - * Encodes the specified CSHallRoomList message, length delimited. Does not implicitly {@link gamehall.CSHallRoomList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSHallRoomList - * @static - * @param {gamehall.ICSHallRoomList} message CSHallRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHallRoomList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSHallRoomList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSHallRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSHallRoomList} CSHallRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHallRoomList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSHallRoomList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.HallId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSHallRoomList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSHallRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSHallRoomList} CSHallRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHallRoomList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSHallRoomList message. - * @function verify - * @memberof gamehall.CSHallRoomList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSHallRoomList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - return null; - }; - - /** - * Creates a CSHallRoomList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSHallRoomList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSHallRoomList} CSHallRoomList - */ - CSHallRoomList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSHallRoomList) - return object; - var message = new $root.gamehall.CSHallRoomList(); - if (object.HallId != null) - message.HallId = object.HallId | 0; - return message; - }; - - /** - * Creates a plain object from a CSHallRoomList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSHallRoomList - * @static - * @param {gamehall.CSHallRoomList} message CSHallRoomList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSHallRoomList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.HallId = 0; - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - return object; - }; - - /** - * Converts this CSHallRoomList to JSON. - * @function toJSON - * @memberof gamehall.CSHallRoomList - * @instance - * @returns {Object.} JSON object - */ - CSHallRoomList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSHallRoomList - * @function getTypeUrl - * @memberof gamehall.CSHallRoomList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSHallRoomList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSHallRoomList"; - }; - - return CSHallRoomList; - })(); - - gamehall.HallInfo = (function() { - - /** - * Properties of a HallInfo. - * @memberof gamehall - * @interface IHallInfo - * @property {number|null} [SceneType] HallInfo SceneType - * @property {number|null} [PlayerNum] HallInfo PlayerNum - */ - - /** - * Constructs a new HallInfo. - * @memberof gamehall - * @classdesc Represents a HallInfo. - * @implements IHallInfo - * @constructor - * @param {gamehall.IHallInfo=} [properties] Properties to set - */ - function HallInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * HallInfo SceneType. - * @member {number} SceneType - * @memberof gamehall.HallInfo - * @instance - */ - HallInfo.prototype.SceneType = 0; - - /** - * HallInfo PlayerNum. - * @member {number} PlayerNum - * @memberof gamehall.HallInfo - * @instance - */ - HallInfo.prototype.PlayerNum = 0; - - /** - * Creates a new HallInfo instance using the specified properties. - * @function create - * @memberof gamehall.HallInfo - * @static - * @param {gamehall.IHallInfo=} [properties] Properties to set - * @returns {gamehall.HallInfo} HallInfo instance - */ - HallInfo.create = function create(properties) { - return new HallInfo(properties); - }; - - /** - * Encodes the specified HallInfo message. Does not implicitly {@link gamehall.HallInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.HallInfo - * @static - * @param {gamehall.IHallInfo} message HallInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.SceneType != null && Object.hasOwnProperty.call(message, "SceneType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.SceneType); - if (message.PlayerNum != null && Object.hasOwnProperty.call(message, "PlayerNum")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.PlayerNum); - return writer; - }; - - /** - * Encodes the specified HallInfo message, length delimited. Does not implicitly {@link gamehall.HallInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.HallInfo - * @static - * @param {gamehall.IHallInfo} message HallInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a HallInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.HallInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.HallInfo} HallInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.HallInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.SceneType = reader.int32(); - break; - } - case 2: { - message.PlayerNum = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a HallInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.HallInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.HallInfo} HallInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a HallInfo message. - * @function verify - * @memberof gamehall.HallInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - HallInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.SceneType != null && message.hasOwnProperty("SceneType")) - if (!$util.isInteger(message.SceneType)) - return "SceneType: integer expected"; - if (message.PlayerNum != null && message.hasOwnProperty("PlayerNum")) - if (!$util.isInteger(message.PlayerNum)) - return "PlayerNum: integer expected"; - return null; - }; - - /** - * Creates a HallInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.HallInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.HallInfo} HallInfo - */ - HallInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.HallInfo) - return object; - var message = new $root.gamehall.HallInfo(); - if (object.SceneType != null) - message.SceneType = object.SceneType | 0; - if (object.PlayerNum != null) - message.PlayerNum = object.PlayerNum | 0; - return message; - }; - - /** - * Creates a plain object from a HallInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.HallInfo - * @static - * @param {gamehall.HallInfo} message HallInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - HallInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.SceneType = 0; - object.PlayerNum = 0; - } - if (message.SceneType != null && message.hasOwnProperty("SceneType")) - object.SceneType = message.SceneType; - if (message.PlayerNum != null && message.hasOwnProperty("PlayerNum")) - object.PlayerNum = message.PlayerNum; - return object; - }; - - /** - * Converts this HallInfo to JSON. - * @function toJSON - * @memberof gamehall.HallInfo - * @instance - * @returns {Object.} JSON object - */ - HallInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for HallInfo - * @function getTypeUrl - * @memberof gamehall.HallInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - HallInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.HallInfo"; - }; - - return HallInfo; - })(); - - gamehall.HallPlayerNum = (function() { - - /** - * Properties of a HallPlayerNum. - * @memberof gamehall - * @interface IHallPlayerNum - * @property {Array.|null} [HallData] HallPlayerNum HallData - */ - - /** - * Constructs a new HallPlayerNum. - * @memberof gamehall - * @classdesc Represents a HallPlayerNum. - * @implements IHallPlayerNum - * @constructor - * @param {gamehall.IHallPlayerNum=} [properties] Properties to set - */ - function HallPlayerNum(properties) { - this.HallData = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * HallPlayerNum HallData. - * @member {Array.} HallData - * @memberof gamehall.HallPlayerNum - * @instance - */ - HallPlayerNum.prototype.HallData = $util.emptyArray; - - /** - * Creates a new HallPlayerNum instance using the specified properties. - * @function create - * @memberof gamehall.HallPlayerNum - * @static - * @param {gamehall.IHallPlayerNum=} [properties] Properties to set - * @returns {gamehall.HallPlayerNum} HallPlayerNum instance - */ - HallPlayerNum.create = function create(properties) { - return new HallPlayerNum(properties); - }; - - /** - * Encodes the specified HallPlayerNum message. Does not implicitly {@link gamehall.HallPlayerNum.verify|verify} messages. - * @function encode - * @memberof gamehall.HallPlayerNum - * @static - * @param {gamehall.IHallPlayerNum} message HallPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallPlayerNum.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HallData != null && message.HallData.length) - for (var i = 0; i < message.HallData.length; ++i) - $root.gamehall.HallInfo.encode(message.HallData[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified HallPlayerNum message, length delimited. Does not implicitly {@link gamehall.HallPlayerNum.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.HallPlayerNum - * @static - * @param {gamehall.IHallPlayerNum} message HallPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallPlayerNum.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a HallPlayerNum message from the specified reader or buffer. - * @function decode - * @memberof gamehall.HallPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.HallPlayerNum} HallPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallPlayerNum.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.HallPlayerNum(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.HallData && message.HallData.length)) - message.HallData = []; - message.HallData.push($root.gamehall.HallInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a HallPlayerNum message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.HallPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.HallPlayerNum} HallPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallPlayerNum.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a HallPlayerNum message. - * @function verify - * @memberof gamehall.HallPlayerNum - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - HallPlayerNum.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HallData != null && message.hasOwnProperty("HallData")) { - if (!Array.isArray(message.HallData)) - return "HallData: array expected"; - for (var i = 0; i < message.HallData.length; ++i) { - var error = $root.gamehall.HallInfo.verify(message.HallData[i]); - if (error) - return "HallData." + error; - } - } - return null; - }; - - /** - * Creates a HallPlayerNum message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.HallPlayerNum - * @static - * @param {Object.} object Plain object - * @returns {gamehall.HallPlayerNum} HallPlayerNum - */ - HallPlayerNum.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.HallPlayerNum) - return object; - var message = new $root.gamehall.HallPlayerNum(); - if (object.HallData) { - if (!Array.isArray(object.HallData)) - throw TypeError(".gamehall.HallPlayerNum.HallData: array expected"); - message.HallData = []; - for (var i = 0; i < object.HallData.length; ++i) { - if (typeof object.HallData[i] !== "object") - throw TypeError(".gamehall.HallPlayerNum.HallData: object expected"); - message.HallData[i] = $root.gamehall.HallInfo.fromObject(object.HallData[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a HallPlayerNum message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.HallPlayerNum - * @static - * @param {gamehall.HallPlayerNum} message HallPlayerNum - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - HallPlayerNum.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.HallData = []; - if (message.HallData && message.HallData.length) { - object.HallData = []; - for (var j = 0; j < message.HallData.length; ++j) - object.HallData[j] = $root.gamehall.HallInfo.toObject(message.HallData[j], options); - } - return object; - }; - - /** - * Converts this HallPlayerNum to JSON. - * @function toJSON - * @memberof gamehall.HallPlayerNum - * @instance - * @returns {Object.} JSON object - */ - HallPlayerNum.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for HallPlayerNum - * @function getTypeUrl - * @memberof gamehall.HallPlayerNum - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - HallPlayerNum.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.HallPlayerNum"; - }; - - return HallPlayerNum; - })(); - - gamehall.SCHallRoomList = (function() { - - /** - * Properties of a SCHallRoomList. - * @memberof gamehall - * @interface ISCHallRoomList - * @property {number|null} [HallId] SCHallRoomList HallId - * @property {number|null} [GameId] SCHallRoomList GameId - * @property {number|null} [GameMode] SCHallRoomList GameMode - * @property {boolean|null} [IsAdd] SCHallRoomList IsAdd - * @property {Array.|null} [Params] SCHallRoomList Params - * @property {Array.|null} [Rooms] SCHallRoomList Rooms - * @property {Array.|null} [HallData] SCHallRoomList HallData - */ - - /** - * Constructs a new SCHallRoomList. - * @memberof gamehall - * @classdesc Represents a SCHallRoomList. - * @implements ISCHallRoomList - * @constructor - * @param {gamehall.ISCHallRoomList=} [properties] Properties to set - */ - function SCHallRoomList(properties) { - this.Params = []; - this.Rooms = []; - this.HallData = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCHallRoomList HallId. - * @member {number} HallId - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.HallId = 0; - - /** - * SCHallRoomList GameId. - * @member {number} GameId - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.GameId = 0; - - /** - * SCHallRoomList GameMode. - * @member {number} GameMode - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.GameMode = 0; - - /** - * SCHallRoomList IsAdd. - * @member {boolean} IsAdd - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.IsAdd = false; - - /** - * SCHallRoomList Params. - * @member {Array.} Params - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.Params = $util.emptyArray; - - /** - * SCHallRoomList Rooms. - * @member {Array.} Rooms - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.Rooms = $util.emptyArray; - - /** - * SCHallRoomList HallData. - * @member {Array.} HallData - * @memberof gamehall.SCHallRoomList - * @instance - */ - SCHallRoomList.prototype.HallData = $util.emptyArray; - - /** - * Creates a new SCHallRoomList instance using the specified properties. - * @function create - * @memberof gamehall.SCHallRoomList - * @static - * @param {gamehall.ISCHallRoomList=} [properties] Properties to set - * @returns {gamehall.SCHallRoomList} SCHallRoomList instance - */ - SCHallRoomList.create = function create(properties) { - return new SCHallRoomList(properties); - }; - - /** - * Encodes the specified SCHallRoomList message. Does not implicitly {@link gamehall.SCHallRoomList.verify|verify} messages. - * @function encode - * @memberof gamehall.SCHallRoomList - * @static - * @param {gamehall.ISCHallRoomList} message SCHallRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHallRoomList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.HallId); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameId); - if (message.GameMode != null && Object.hasOwnProperty.call(message, "GameMode")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.GameMode); - if (message.IsAdd != null && Object.hasOwnProperty.call(message, "IsAdd")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.IsAdd); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 5, wireType 2 =*/42).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - if (message.Rooms != null && message.Rooms.length) - for (var i = 0; i < message.Rooms.length; ++i) - $root.gamehall.RoomInfo.encode(message.Rooms[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.HallData != null && message.HallData.length) - for (var i = 0; i < message.HallData.length; ++i) - $root.gamehall.HallInfo.encode(message.HallData[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCHallRoomList message, length delimited. Does not implicitly {@link gamehall.SCHallRoomList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCHallRoomList - * @static - * @param {gamehall.ISCHallRoomList} message SCHallRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHallRoomList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCHallRoomList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCHallRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCHallRoomList} SCHallRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHallRoomList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCHallRoomList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.HallId = reader.int32(); - break; - } - case 2: { - message.GameId = reader.int32(); - break; - } - case 3: { - message.GameMode = reader.int32(); - break; - } - case 4: { - message.IsAdd = reader.bool(); - break; - } - case 5: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - case 6: { - if (!(message.Rooms && message.Rooms.length)) - message.Rooms = []; - message.Rooms.push($root.gamehall.RoomInfo.decode(reader, reader.uint32())); - break; - } - case 7: { - if (!(message.HallData && message.HallData.length)) - message.HallData = []; - message.HallData.push($root.gamehall.HallInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCHallRoomList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCHallRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCHallRoomList} SCHallRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHallRoomList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCHallRoomList message. - * @function verify - * @memberof gamehall.SCHallRoomList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCHallRoomList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.GameMode != null && message.hasOwnProperty("GameMode")) - if (!$util.isInteger(message.GameMode)) - return "GameMode: integer expected"; - if (message.IsAdd != null && message.hasOwnProperty("IsAdd")) - if (typeof message.IsAdd !== "boolean") - return "IsAdd: boolean expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - if (message.Rooms != null && message.hasOwnProperty("Rooms")) { - if (!Array.isArray(message.Rooms)) - return "Rooms: array expected"; - for (var i = 0; i < message.Rooms.length; ++i) { - var error = $root.gamehall.RoomInfo.verify(message.Rooms[i]); - if (error) - return "Rooms." + error; - } - } - if (message.HallData != null && message.hasOwnProperty("HallData")) { - if (!Array.isArray(message.HallData)) - return "HallData: array expected"; - for (var i = 0; i < message.HallData.length; ++i) { - var error = $root.gamehall.HallInfo.verify(message.HallData[i]); - if (error) - return "HallData." + error; - } - } - return null; - }; - - /** - * Creates a SCHallRoomList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCHallRoomList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCHallRoomList} SCHallRoomList - */ - SCHallRoomList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCHallRoomList) - return object; - var message = new $root.gamehall.SCHallRoomList(); - if (object.HallId != null) - message.HallId = object.HallId | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.GameMode != null) - message.GameMode = object.GameMode | 0; - if (object.IsAdd != null) - message.IsAdd = Boolean(object.IsAdd); - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.SCHallRoomList.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - if (object.Rooms) { - if (!Array.isArray(object.Rooms)) - throw TypeError(".gamehall.SCHallRoomList.Rooms: array expected"); - message.Rooms = []; - for (var i = 0; i < object.Rooms.length; ++i) { - if (typeof object.Rooms[i] !== "object") - throw TypeError(".gamehall.SCHallRoomList.Rooms: object expected"); - message.Rooms[i] = $root.gamehall.RoomInfo.fromObject(object.Rooms[i]); - } - } - if (object.HallData) { - if (!Array.isArray(object.HallData)) - throw TypeError(".gamehall.SCHallRoomList.HallData: array expected"); - message.HallData = []; - for (var i = 0; i < object.HallData.length; ++i) { - if (typeof object.HallData[i] !== "object") - throw TypeError(".gamehall.SCHallRoomList.HallData: object expected"); - message.HallData[i] = $root.gamehall.HallInfo.fromObject(object.HallData[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCHallRoomList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCHallRoomList - * @static - * @param {gamehall.SCHallRoomList} message SCHallRoomList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCHallRoomList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.Params = []; - object.Rooms = []; - object.HallData = []; - } - if (options.defaults) { - object.HallId = 0; - object.GameId = 0; - object.GameMode = 0; - object.IsAdd = false; - } - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.GameMode != null && message.hasOwnProperty("GameMode")) - object.GameMode = message.GameMode; - if (message.IsAdd != null && message.hasOwnProperty("IsAdd")) - object.IsAdd = message.IsAdd; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - if (message.Rooms && message.Rooms.length) { - object.Rooms = []; - for (var j = 0; j < message.Rooms.length; ++j) - object.Rooms[j] = $root.gamehall.RoomInfo.toObject(message.Rooms[j], options); - } - if (message.HallData && message.HallData.length) { - object.HallData = []; - for (var j = 0; j < message.HallData.length; ++j) - object.HallData[j] = $root.gamehall.HallInfo.toObject(message.HallData[j], options); - } - return object; - }; - - /** - * Converts this SCHallRoomList to JSON. - * @function toJSON - * @memberof gamehall.SCHallRoomList - * @instance - * @returns {Object.} JSON object - */ - SCHallRoomList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCHallRoomList - * @function getTypeUrl - * @memberof gamehall.SCHallRoomList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCHallRoomList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCHallRoomList"; - }; - - return SCHallRoomList; - })(); - - gamehall.SCRoomPlayerEnter = (function() { - - /** - * Properties of a SCRoomPlayerEnter. - * @memberof gamehall - * @interface ISCRoomPlayerEnter - * @property {number|null} [RoomId] SCRoomPlayerEnter RoomId - * @property {gamehall.IRoomPlayerInfo|null} [Player] SCRoomPlayerEnter Player - */ - - /** - * Constructs a new SCRoomPlayerEnter. - * @memberof gamehall - * @classdesc Represents a SCRoomPlayerEnter. - * @implements ISCRoomPlayerEnter - * @constructor - * @param {gamehall.ISCRoomPlayerEnter=} [properties] Properties to set - */ - function SCRoomPlayerEnter(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRoomPlayerEnter RoomId. - * @member {number} RoomId - * @memberof gamehall.SCRoomPlayerEnter - * @instance - */ - SCRoomPlayerEnter.prototype.RoomId = 0; - - /** - * SCRoomPlayerEnter Player. - * @member {gamehall.IRoomPlayerInfo|null|undefined} Player - * @memberof gamehall.SCRoomPlayerEnter - * @instance - */ - SCRoomPlayerEnter.prototype.Player = null; - - /** - * Creates a new SCRoomPlayerEnter instance using the specified properties. - * @function create - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {gamehall.ISCRoomPlayerEnter=} [properties] Properties to set - * @returns {gamehall.SCRoomPlayerEnter} SCRoomPlayerEnter instance - */ - SCRoomPlayerEnter.create = function create(properties) { - return new SCRoomPlayerEnter(properties); - }; - - /** - * Encodes the specified SCRoomPlayerEnter message. Does not implicitly {@link gamehall.SCRoomPlayerEnter.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {gamehall.ISCRoomPlayerEnter} message SCRoomPlayerEnter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRoomPlayerEnter.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.Player != null && Object.hasOwnProperty.call(message, "Player")) - $root.gamehall.RoomPlayerInfo.encode(message.Player, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCRoomPlayerEnter message, length delimited. Does not implicitly {@link gamehall.SCRoomPlayerEnter.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {gamehall.ISCRoomPlayerEnter} message SCRoomPlayerEnter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRoomPlayerEnter.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRoomPlayerEnter message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRoomPlayerEnter} SCRoomPlayerEnter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRoomPlayerEnter.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRoomPlayerEnter(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.Player = $root.gamehall.RoomPlayerInfo.decode(reader, reader.uint32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRoomPlayerEnter message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRoomPlayerEnter} SCRoomPlayerEnter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRoomPlayerEnter.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRoomPlayerEnter message. - * @function verify - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRoomPlayerEnter.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.Player != null && message.hasOwnProperty("Player")) { - var error = $root.gamehall.RoomPlayerInfo.verify(message.Player); - if (error) - return "Player." + error; - } - return null; - }; - - /** - * Creates a SCRoomPlayerEnter message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRoomPlayerEnter} SCRoomPlayerEnter - */ - SCRoomPlayerEnter.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRoomPlayerEnter) - return object; - var message = new $root.gamehall.SCRoomPlayerEnter(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.Player != null) { - if (typeof object.Player !== "object") - throw TypeError(".gamehall.SCRoomPlayerEnter.Player: object expected"); - message.Player = $root.gamehall.RoomPlayerInfo.fromObject(object.Player); - } - return message; - }; - - /** - * Creates a plain object from a SCRoomPlayerEnter message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {gamehall.SCRoomPlayerEnter} message SCRoomPlayerEnter - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRoomPlayerEnter.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.Player = null; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.Player != null && message.hasOwnProperty("Player")) - object.Player = $root.gamehall.RoomPlayerInfo.toObject(message.Player, options); - return object; - }; - - /** - * Converts this SCRoomPlayerEnter to JSON. - * @function toJSON - * @memberof gamehall.SCRoomPlayerEnter - * @instance - * @returns {Object.} JSON object - */ - SCRoomPlayerEnter.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRoomPlayerEnter - * @function getTypeUrl - * @memberof gamehall.SCRoomPlayerEnter - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRoomPlayerEnter.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRoomPlayerEnter"; - }; - - return SCRoomPlayerEnter; - })(); - - gamehall.SCRoomPlayerLeave = (function() { - - /** - * Properties of a SCRoomPlayerLeave. - * @memberof gamehall - * @interface ISCRoomPlayerLeave - * @property {number|null} [RoomId] SCRoomPlayerLeave RoomId - * @property {number|null} [Pos] SCRoomPlayerLeave Pos - */ - - /** - * Constructs a new SCRoomPlayerLeave. - * @memberof gamehall - * @classdesc Represents a SCRoomPlayerLeave. - * @implements ISCRoomPlayerLeave - * @constructor - * @param {gamehall.ISCRoomPlayerLeave=} [properties] Properties to set - */ - function SCRoomPlayerLeave(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRoomPlayerLeave RoomId. - * @member {number} RoomId - * @memberof gamehall.SCRoomPlayerLeave - * @instance - */ - SCRoomPlayerLeave.prototype.RoomId = 0; - - /** - * SCRoomPlayerLeave Pos. - * @member {number} Pos - * @memberof gamehall.SCRoomPlayerLeave - * @instance - */ - SCRoomPlayerLeave.prototype.Pos = 0; - - /** - * Creates a new SCRoomPlayerLeave instance using the specified properties. - * @function create - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {gamehall.ISCRoomPlayerLeave=} [properties] Properties to set - * @returns {gamehall.SCRoomPlayerLeave} SCRoomPlayerLeave instance - */ - SCRoomPlayerLeave.create = function create(properties) { - return new SCRoomPlayerLeave(properties); - }; - - /** - * Encodes the specified SCRoomPlayerLeave message. Does not implicitly {@link gamehall.SCRoomPlayerLeave.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {gamehall.ISCRoomPlayerLeave} message SCRoomPlayerLeave message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRoomPlayerLeave.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.Pos != null && Object.hasOwnProperty.call(message, "Pos")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Pos); - return writer; - }; - - /** - * Encodes the specified SCRoomPlayerLeave message, length delimited. Does not implicitly {@link gamehall.SCRoomPlayerLeave.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {gamehall.ISCRoomPlayerLeave} message SCRoomPlayerLeave message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRoomPlayerLeave.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRoomPlayerLeave message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRoomPlayerLeave} SCRoomPlayerLeave - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRoomPlayerLeave.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRoomPlayerLeave(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.Pos = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRoomPlayerLeave message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRoomPlayerLeave} SCRoomPlayerLeave - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRoomPlayerLeave.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRoomPlayerLeave message. - * @function verify - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRoomPlayerLeave.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.Pos != null && message.hasOwnProperty("Pos")) - if (!$util.isInteger(message.Pos)) - return "Pos: integer expected"; - return null; - }; - - /** - * Creates a SCRoomPlayerLeave message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRoomPlayerLeave} SCRoomPlayerLeave - */ - SCRoomPlayerLeave.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRoomPlayerLeave) - return object; - var message = new $root.gamehall.SCRoomPlayerLeave(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.Pos != null) - message.Pos = object.Pos | 0; - return message; - }; - - /** - * Creates a plain object from a SCRoomPlayerLeave message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {gamehall.SCRoomPlayerLeave} message SCRoomPlayerLeave - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRoomPlayerLeave.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.Pos = 0; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.Pos != null && message.hasOwnProperty("Pos")) - object.Pos = message.Pos; - return object; - }; - - /** - * Converts this SCRoomPlayerLeave to JSON. - * @function toJSON - * @memberof gamehall.SCRoomPlayerLeave - * @instance - * @returns {Object.} JSON object - */ - SCRoomPlayerLeave.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRoomPlayerLeave - * @function getTypeUrl - * @memberof gamehall.SCRoomPlayerLeave - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRoomPlayerLeave.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRoomPlayerLeave"; - }; - - return SCRoomPlayerLeave; - })(); - - gamehall.SCRoomStateChange = (function() { - - /** - * Properties of a SCRoomStateChange. - * @memberof gamehall - * @interface ISCRoomStateChange - * @property {number|null} [RoomId] SCRoomStateChange RoomId - * @property {boolean|null} [Starting] SCRoomStateChange Starting - * @property {number|null} [State] SCRoomStateChange State - */ - - /** - * Constructs a new SCRoomStateChange. - * @memberof gamehall - * @classdesc Represents a SCRoomStateChange. - * @implements ISCRoomStateChange - * @constructor - * @param {gamehall.ISCRoomStateChange=} [properties] Properties to set - */ - function SCRoomStateChange(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRoomStateChange RoomId. - * @member {number} RoomId - * @memberof gamehall.SCRoomStateChange - * @instance - */ - SCRoomStateChange.prototype.RoomId = 0; - - /** - * SCRoomStateChange Starting. - * @member {boolean} Starting - * @memberof gamehall.SCRoomStateChange - * @instance - */ - SCRoomStateChange.prototype.Starting = false; - - /** - * SCRoomStateChange State. - * @member {number} State - * @memberof gamehall.SCRoomStateChange - * @instance - */ - SCRoomStateChange.prototype.State = 0; - - /** - * Creates a new SCRoomStateChange instance using the specified properties. - * @function create - * @memberof gamehall.SCRoomStateChange - * @static - * @param {gamehall.ISCRoomStateChange=} [properties] Properties to set - * @returns {gamehall.SCRoomStateChange} SCRoomStateChange instance - */ - SCRoomStateChange.create = function create(properties) { - return new SCRoomStateChange(properties); - }; - - /** - * Encodes the specified SCRoomStateChange message. Does not implicitly {@link gamehall.SCRoomStateChange.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRoomStateChange - * @static - * @param {gamehall.ISCRoomStateChange} message SCRoomStateChange message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRoomStateChange.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.Starting != null && Object.hasOwnProperty.call(message, "Starting")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.Starting); - if (message.State != null && Object.hasOwnProperty.call(message, "State")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.State); - return writer; - }; - - /** - * Encodes the specified SCRoomStateChange message, length delimited. Does not implicitly {@link gamehall.SCRoomStateChange.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRoomStateChange - * @static - * @param {gamehall.ISCRoomStateChange} message SCRoomStateChange message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRoomStateChange.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRoomStateChange message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRoomStateChange - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRoomStateChange} SCRoomStateChange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRoomStateChange.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRoomStateChange(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.Starting = reader.bool(); - break; - } - case 3: { - message.State = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRoomStateChange message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRoomStateChange - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRoomStateChange} SCRoomStateChange - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRoomStateChange.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRoomStateChange message. - * @function verify - * @memberof gamehall.SCRoomStateChange - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRoomStateChange.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.Starting != null && message.hasOwnProperty("Starting")) - if (typeof message.Starting !== "boolean") - return "Starting: boolean expected"; - if (message.State != null && message.hasOwnProperty("State")) - if (!$util.isInteger(message.State)) - return "State: integer expected"; - return null; - }; - - /** - * Creates a SCRoomStateChange message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRoomStateChange - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRoomStateChange} SCRoomStateChange - */ - SCRoomStateChange.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRoomStateChange) - return object; - var message = new $root.gamehall.SCRoomStateChange(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.Starting != null) - message.Starting = Boolean(object.Starting); - if (object.State != null) - message.State = object.State | 0; - return message; - }; - - /** - * Creates a plain object from a SCRoomStateChange message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRoomStateChange - * @static - * @param {gamehall.SCRoomStateChange} message SCRoomStateChange - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRoomStateChange.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.Starting = false; - object.State = 0; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.Starting != null && message.hasOwnProperty("Starting")) - object.Starting = message.Starting; - if (message.State != null && message.hasOwnProperty("State")) - object.State = message.State; - return object; - }; - - /** - * Converts this SCRoomStateChange to JSON. - * @function toJSON - * @memberof gamehall.SCRoomStateChange - * @instance - * @returns {Object.} JSON object - */ - SCRoomStateChange.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRoomStateChange - * @function getTypeUrl - * @memberof gamehall.SCRoomStateChange - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRoomStateChange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRoomStateChange"; - }; - - return SCRoomStateChange; - })(); - - gamehall.CSCreateRoom = (function() { - - /** - * Properties of a CSCreateRoom. - * @memberof gamehall - * @interface ICSCreateRoom - * @property {number|null} [GameId] CSCreateRoom GameId - * @property {number|null} [BaseCoin] CSCreateRoom BaseCoin - * @property {number|null} [SceneMode] CSCreateRoom SceneMode - * @property {number|null} [MaxPlayerNum] CSCreateRoom MaxPlayerNum - * @property {Array.|null} [Params] CSCreateRoom Params - */ - - /** - * Constructs a new CSCreateRoom. - * @memberof gamehall - * @classdesc Represents a CSCreateRoom. - * @implements ICSCreateRoom - * @constructor - * @param {gamehall.ICSCreateRoom=} [properties] Properties to set - */ - function CSCreateRoom(properties) { - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCreateRoom GameId. - * @member {number} GameId - * @memberof gamehall.CSCreateRoom - * @instance - */ - CSCreateRoom.prototype.GameId = 0; - - /** - * CSCreateRoom BaseCoin. - * @member {number} BaseCoin - * @memberof gamehall.CSCreateRoom - * @instance - */ - CSCreateRoom.prototype.BaseCoin = 0; - - /** - * CSCreateRoom SceneMode. - * @member {number} SceneMode - * @memberof gamehall.CSCreateRoom - * @instance - */ - CSCreateRoom.prototype.SceneMode = 0; - - /** - * CSCreateRoom MaxPlayerNum. - * @member {number} MaxPlayerNum - * @memberof gamehall.CSCreateRoom - * @instance - */ - CSCreateRoom.prototype.MaxPlayerNum = 0; - - /** - * CSCreateRoom Params. - * @member {Array.} Params - * @memberof gamehall.CSCreateRoom - * @instance - */ - CSCreateRoom.prototype.Params = $util.emptyArray; - - /** - * Creates a new CSCreateRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSCreateRoom - * @static - * @param {gamehall.ICSCreateRoom=} [properties] Properties to set - * @returns {gamehall.CSCreateRoom} CSCreateRoom instance - */ - CSCreateRoom.create = function create(properties) { - return new CSCreateRoom(properties); - }; - - /** - * Encodes the specified CSCreateRoom message. Does not implicitly {@link gamehall.CSCreateRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCreateRoom - * @static - * @param {gamehall.ICSCreateRoom} message CSCreateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCreateRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.BaseCoin != null && Object.hasOwnProperty.call(message, "BaseCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.BaseCoin); - if (message.SceneMode != null && Object.hasOwnProperty.call(message, "SceneMode")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.SceneMode); - if (message.MaxPlayerNum != null && Object.hasOwnProperty.call(message, "MaxPlayerNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.MaxPlayerNum); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 5, wireType 2 =*/42).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified CSCreateRoom message, length delimited. Does not implicitly {@link gamehall.CSCreateRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCreateRoom - * @static - * @param {gamehall.ICSCreateRoom} message CSCreateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCreateRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCreateRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCreateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCreateRoom} CSCreateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCreateRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCreateRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.BaseCoin = reader.int32(); - break; - } - case 3: { - message.SceneMode = reader.int32(); - break; - } - case 4: { - message.MaxPlayerNum = reader.int32(); - break; - } - case 5: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCreateRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCreateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCreateRoom} CSCreateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCreateRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCreateRoom message. - * @function verify - * @memberof gamehall.CSCreateRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCreateRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.BaseCoin != null && message.hasOwnProperty("BaseCoin")) - if (!$util.isInteger(message.BaseCoin)) - return "BaseCoin: integer expected"; - if (message.SceneMode != null && message.hasOwnProperty("SceneMode")) - if (!$util.isInteger(message.SceneMode)) - return "SceneMode: integer expected"; - if (message.MaxPlayerNum != null && message.hasOwnProperty("MaxPlayerNum")) - if (!$util.isInteger(message.MaxPlayerNum)) - return "MaxPlayerNum: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - return null; - }; - - /** - * Creates a CSCreateRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCreateRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCreateRoom} CSCreateRoom - */ - CSCreateRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCreateRoom) - return object; - var message = new $root.gamehall.CSCreateRoom(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.BaseCoin != null) - message.BaseCoin = object.BaseCoin | 0; - if (object.SceneMode != null) - message.SceneMode = object.SceneMode | 0; - if (object.MaxPlayerNum != null) - message.MaxPlayerNum = object.MaxPlayerNum | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.CSCreateRoom.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a CSCreateRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCreateRoom - * @static - * @param {gamehall.CSCreateRoom} message CSCreateRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCreateRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Params = []; - if (options.defaults) { - object.GameId = 0; - object.BaseCoin = 0; - object.SceneMode = 0; - object.MaxPlayerNum = 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.BaseCoin != null && message.hasOwnProperty("BaseCoin")) - object.BaseCoin = message.BaseCoin; - if (message.SceneMode != null && message.hasOwnProperty("SceneMode")) - object.SceneMode = message.SceneMode; - if (message.MaxPlayerNum != null && message.hasOwnProperty("MaxPlayerNum")) - object.MaxPlayerNum = message.MaxPlayerNum; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - return object; - }; - - /** - * Converts this CSCreateRoom to JSON. - * @function toJSON - * @memberof gamehall.CSCreateRoom - * @instance - * @returns {Object.} JSON object - */ - CSCreateRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCreateRoom - * @function getTypeUrl - * @memberof gamehall.CSCreateRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCreateRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCreateRoom"; - }; - - return CSCreateRoom; - })(); - - gamehall.SCCreateRoom = (function() { - - /** - * Properties of a SCCreateRoom. - * @memberof gamehall - * @interface ISCCreateRoom - * @property {number|null} [GameId] SCCreateRoom GameId - * @property {number|null} [BaseCoin] SCCreateRoom BaseCoin - * @property {number|null} [SceneMode] SCCreateRoom SceneMode - * @property {number|null} [MaxPlayerNum] SCCreateRoom MaxPlayerNum - * @property {Array.|null} [Params] SCCreateRoom Params - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCCreateRoom OpRetCode - */ - - /** - * Constructs a new SCCreateRoom. - * @memberof gamehall - * @classdesc Represents a SCCreateRoom. - * @implements ISCCreateRoom - * @constructor - * @param {gamehall.ISCCreateRoom=} [properties] Properties to set - */ - function SCCreateRoom(properties) { - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCreateRoom GameId. - * @member {number} GameId - * @memberof gamehall.SCCreateRoom - * @instance - */ - SCCreateRoom.prototype.GameId = 0; - - /** - * SCCreateRoom BaseCoin. - * @member {number} BaseCoin - * @memberof gamehall.SCCreateRoom - * @instance - */ - SCCreateRoom.prototype.BaseCoin = 0; - - /** - * SCCreateRoom SceneMode. - * @member {number} SceneMode - * @memberof gamehall.SCCreateRoom - * @instance - */ - SCCreateRoom.prototype.SceneMode = 0; - - /** - * SCCreateRoom MaxPlayerNum. - * @member {number} MaxPlayerNum - * @memberof gamehall.SCCreateRoom - * @instance - */ - SCCreateRoom.prototype.MaxPlayerNum = 0; - - /** - * SCCreateRoom Params. - * @member {Array.} Params - * @memberof gamehall.SCCreateRoom - * @instance - */ - SCCreateRoom.prototype.Params = $util.emptyArray; - - /** - * SCCreateRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCCreateRoom - * @instance - */ - SCCreateRoom.prototype.OpRetCode = 0; - - /** - * Creates a new SCCreateRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCCreateRoom - * @static - * @param {gamehall.ISCCreateRoom=} [properties] Properties to set - * @returns {gamehall.SCCreateRoom} SCCreateRoom instance - */ - SCCreateRoom.create = function create(properties) { - return new SCCreateRoom(properties); - }; - - /** - * Encodes the specified SCCreateRoom message. Does not implicitly {@link gamehall.SCCreateRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCreateRoom - * @static - * @param {gamehall.ISCCreateRoom} message SCCreateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCreateRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.BaseCoin != null && Object.hasOwnProperty.call(message, "BaseCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.BaseCoin); - if (message.SceneMode != null && Object.hasOwnProperty.call(message, "SceneMode")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.SceneMode); - if (message.MaxPlayerNum != null && Object.hasOwnProperty.call(message, "MaxPlayerNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.MaxPlayerNum); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 5, wireType 2 =*/42).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCCreateRoom message, length delimited. Does not implicitly {@link gamehall.SCCreateRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCreateRoom - * @static - * @param {gamehall.ISCCreateRoom} message SCCreateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCreateRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCreateRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCreateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCreateRoom} SCCreateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCreateRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCreateRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.BaseCoin = reader.int32(); - break; - } - case 3: { - message.SceneMode = reader.int32(); - break; - } - case 4: { - message.MaxPlayerNum = reader.int32(); - break; - } - case 5: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - case 6: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCreateRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCreateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCreateRoom} SCCreateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCreateRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCreateRoom message. - * @function verify - * @memberof gamehall.SCCreateRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCreateRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.BaseCoin != null && message.hasOwnProperty("BaseCoin")) - if (!$util.isInteger(message.BaseCoin)) - return "BaseCoin: integer expected"; - if (message.SceneMode != null && message.hasOwnProperty("SceneMode")) - if (!$util.isInteger(message.SceneMode)) - return "SceneMode: integer expected"; - if (message.MaxPlayerNum != null && message.hasOwnProperty("MaxPlayerNum")) - if (!$util.isInteger(message.MaxPlayerNum)) - return "MaxPlayerNum: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCCreateRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCreateRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCreateRoom} SCCreateRoom - */ - SCCreateRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCreateRoom) - return object; - var message = new $root.gamehall.SCCreateRoom(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.BaseCoin != null) - message.BaseCoin = object.BaseCoin | 0; - if (object.SceneMode != null) - message.SceneMode = object.SceneMode | 0; - if (object.MaxPlayerNum != null) - message.MaxPlayerNum = object.MaxPlayerNum | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.SCCreateRoom.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCCreateRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCreateRoom - * @static - * @param {gamehall.SCCreateRoom} message SCCreateRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCreateRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Params = []; - if (options.defaults) { - object.GameId = 0; - object.BaseCoin = 0; - object.SceneMode = 0; - object.MaxPlayerNum = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.BaseCoin != null && message.hasOwnProperty("BaseCoin")) - object.BaseCoin = message.BaseCoin; - if (message.SceneMode != null && message.hasOwnProperty("SceneMode")) - object.SceneMode = message.SceneMode; - if (message.MaxPlayerNum != null && message.hasOwnProperty("MaxPlayerNum")) - object.MaxPlayerNum = message.MaxPlayerNum; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCCreateRoom to JSON. - * @function toJSON - * @memberof gamehall.SCCreateRoom - * @instance - * @returns {Object.} JSON object - */ - SCCreateRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCreateRoom - * @function getTypeUrl - * @memberof gamehall.SCCreateRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCreateRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCreateRoom"; - }; - - return SCCreateRoom; - })(); - - gamehall.CSDestroyRoom = (function() { - - /** - * Properties of a CSDestroyRoom. - * @memberof gamehall - * @interface ICSDestroyRoom - */ - - /** - * Constructs a new CSDestroyRoom. - * @memberof gamehall - * @classdesc Represents a CSDestroyRoom. - * @implements ICSDestroyRoom - * @constructor - * @param {gamehall.ICSDestroyRoom=} [properties] Properties to set - */ - function CSDestroyRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSDestroyRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSDestroyRoom - * @static - * @param {gamehall.ICSDestroyRoom=} [properties] Properties to set - * @returns {gamehall.CSDestroyRoom} CSDestroyRoom instance - */ - CSDestroyRoom.create = function create(properties) { - return new CSDestroyRoom(properties); - }; - - /** - * Encodes the specified CSDestroyRoom message. Does not implicitly {@link gamehall.CSDestroyRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSDestroyRoom - * @static - * @param {gamehall.ICSDestroyRoom} message CSDestroyRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSDestroyRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSDestroyRoom message, length delimited. Does not implicitly {@link gamehall.CSDestroyRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSDestroyRoom - * @static - * @param {gamehall.ICSDestroyRoom} message CSDestroyRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSDestroyRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSDestroyRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSDestroyRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSDestroyRoom} CSDestroyRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSDestroyRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSDestroyRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSDestroyRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSDestroyRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSDestroyRoom} CSDestroyRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSDestroyRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSDestroyRoom message. - * @function verify - * @memberof gamehall.CSDestroyRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSDestroyRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSDestroyRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSDestroyRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSDestroyRoom} CSDestroyRoom - */ - CSDestroyRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSDestroyRoom) - return object; - return new $root.gamehall.CSDestroyRoom(); - }; - - /** - * Creates a plain object from a CSDestroyRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSDestroyRoom - * @static - * @param {gamehall.CSDestroyRoom} message CSDestroyRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSDestroyRoom.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSDestroyRoom to JSON. - * @function toJSON - * @memberof gamehall.CSDestroyRoom - * @instance - * @returns {Object.} JSON object - */ - CSDestroyRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSDestroyRoom - * @function getTypeUrl - * @memberof gamehall.CSDestroyRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSDestroyRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSDestroyRoom"; - }; - - return CSDestroyRoom; - })(); - - gamehall.SCDestroyRoom = (function() { - - /** - * Properties of a SCDestroyRoom. - * @memberof gamehall - * @interface ISCDestroyRoom - * @property {number|null} [RoomId] SCDestroyRoom RoomId - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCDestroyRoom OpRetCode - * @property {number|null} [IsForce] SCDestroyRoom IsForce - */ - - /** - * Constructs a new SCDestroyRoom. - * @memberof gamehall - * @classdesc Represents a SCDestroyRoom. - * @implements ISCDestroyRoom - * @constructor - * @param {gamehall.ISCDestroyRoom=} [properties] Properties to set - */ - function SCDestroyRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCDestroyRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.SCDestroyRoom - * @instance - */ - SCDestroyRoom.prototype.RoomId = 0; - - /** - * SCDestroyRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCDestroyRoom - * @instance - */ - SCDestroyRoom.prototype.OpRetCode = 0; - - /** - * SCDestroyRoom IsForce. - * @member {number} IsForce - * @memberof gamehall.SCDestroyRoom - * @instance - */ - SCDestroyRoom.prototype.IsForce = 0; - - /** - * Creates a new SCDestroyRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCDestroyRoom - * @static - * @param {gamehall.ISCDestroyRoom=} [properties] Properties to set - * @returns {gamehall.SCDestroyRoom} SCDestroyRoom instance - */ - SCDestroyRoom.create = function create(properties) { - return new SCDestroyRoom(properties); - }; - - /** - * Encodes the specified SCDestroyRoom message. Does not implicitly {@link gamehall.SCDestroyRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCDestroyRoom - * @static - * @param {gamehall.ISCDestroyRoom} message SCDestroyRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCDestroyRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpRetCode); - if (message.IsForce != null && Object.hasOwnProperty.call(message, "IsForce")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.IsForce); - return writer; - }; - - /** - * Encodes the specified SCDestroyRoom message, length delimited. Does not implicitly {@link gamehall.SCDestroyRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCDestroyRoom - * @static - * @param {gamehall.ISCDestroyRoom} message SCDestroyRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCDestroyRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCDestroyRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCDestroyRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCDestroyRoom} SCDestroyRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCDestroyRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCDestroyRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.OpRetCode = reader.int32(); - break; - } - case 3: { - message.IsForce = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCDestroyRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCDestroyRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCDestroyRoom} SCDestroyRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCDestroyRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCDestroyRoom message. - * @function verify - * @memberof gamehall.SCDestroyRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCDestroyRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.IsForce != null && message.hasOwnProperty("IsForce")) - if (!$util.isInteger(message.IsForce)) - return "IsForce: integer expected"; - return null; - }; - - /** - * Creates a SCDestroyRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCDestroyRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCDestroyRoom} SCDestroyRoom - */ - SCDestroyRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCDestroyRoom) - return object; - var message = new $root.gamehall.SCDestroyRoom(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.IsForce != null) - message.IsForce = object.IsForce | 0; - return message; - }; - - /** - * Creates a plain object from a SCDestroyRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCDestroyRoom - * @static - * @param {gamehall.SCDestroyRoom} message SCDestroyRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCDestroyRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.IsForce = 0; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.IsForce != null && message.hasOwnProperty("IsForce")) - object.IsForce = message.IsForce; - return object; - }; - - /** - * Converts this SCDestroyRoom to JSON. - * @function toJSON - * @memberof gamehall.SCDestroyRoom - * @instance - * @returns {Object.} JSON object - */ - SCDestroyRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCDestroyRoom - * @function getTypeUrl - * @memberof gamehall.SCDestroyRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCDestroyRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCDestroyRoom"; - }; - - return SCDestroyRoom; - })(); - - gamehall.CSEnterRoom = (function() { - - /** - * Properties of a CSEnterRoom. - * @memberof gamehall - * @interface ICSEnterRoom - * @property {number|null} [RoomId] CSEnterRoom RoomId - * @property {number|null} [GameId] CSEnterRoom GameId - */ - - /** - * Constructs a new CSEnterRoom. - * @memberof gamehall - * @classdesc Represents a CSEnterRoom. - * @implements ICSEnterRoom - * @constructor - * @param {gamehall.ICSEnterRoom=} [properties] Properties to set - */ - function CSEnterRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSEnterRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.CSEnterRoom - * @instance - */ - CSEnterRoom.prototype.RoomId = 0; - - /** - * CSEnterRoom GameId. - * @member {number} GameId - * @memberof gamehall.CSEnterRoom - * @instance - */ - CSEnterRoom.prototype.GameId = 0; - - /** - * Creates a new CSEnterRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSEnterRoom - * @static - * @param {gamehall.ICSEnterRoom=} [properties] Properties to set - * @returns {gamehall.CSEnterRoom} CSEnterRoom instance - */ - CSEnterRoom.create = function create(properties) { - return new CSEnterRoom(properties); - }; - - /** - * Encodes the specified CSEnterRoom message. Does not implicitly {@link gamehall.CSEnterRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSEnterRoom - * @static - * @param {gamehall.ICSEnterRoom} message CSEnterRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameId); - return writer; - }; - - /** - * Encodes the specified CSEnterRoom message, length delimited. Does not implicitly {@link gamehall.CSEnterRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSEnterRoom - * @static - * @param {gamehall.ICSEnterRoom} message CSEnterRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSEnterRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSEnterRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSEnterRoom} CSEnterRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSEnterRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.GameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSEnterRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSEnterRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSEnterRoom} CSEnterRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSEnterRoom message. - * @function verify - * @memberof gamehall.CSEnterRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSEnterRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - return null; - }; - - /** - * Creates a CSEnterRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSEnterRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSEnterRoom} CSEnterRoom - */ - CSEnterRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSEnterRoom) - return object; - var message = new $root.gamehall.CSEnterRoom(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - return message; - }; - - /** - * Creates a plain object from a CSEnterRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSEnterRoom - * @static - * @param {gamehall.CSEnterRoom} message CSEnterRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSEnterRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.GameId = 0; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - return object; - }; - - /** - * Converts this CSEnterRoom to JSON. - * @function toJSON - * @memberof gamehall.CSEnterRoom - * @instance - * @returns {Object.} JSON object - */ - CSEnterRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSEnterRoom - * @function getTypeUrl - * @memberof gamehall.CSEnterRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSEnterRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSEnterRoom"; - }; - - return CSEnterRoom; - })(); - - gamehall.SCEnterRoom = (function() { - - /** - * Properties of a SCEnterRoom. - * @memberof gamehall - * @interface ISCEnterRoom - * @property {number|null} [GameId] SCEnterRoom GameId - * @property {number|null} [ModeType] SCEnterRoom ModeType - * @property {Array.|null} [Params] SCEnterRoom Params - * @property {number|null} [RoomId] SCEnterRoom RoomId - * @property {number|null} [HallId] SCEnterRoom HallId - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCEnterRoom OpRetCode - * @property {number|null} [ClubId] SCEnterRoom ClubId - */ - - /** - * Constructs a new SCEnterRoom. - * @memberof gamehall - * @classdesc Represents a SCEnterRoom. - * @implements ISCEnterRoom - * @constructor - * @param {gamehall.ISCEnterRoom=} [properties] Properties to set - */ - function SCEnterRoom(properties) { - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCEnterRoom GameId. - * @member {number} GameId - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.GameId = 0; - - /** - * SCEnterRoom ModeType. - * @member {number} ModeType - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.ModeType = 0; - - /** - * SCEnterRoom Params. - * @member {Array.} Params - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.Params = $util.emptyArray; - - /** - * SCEnterRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.RoomId = 0; - - /** - * SCEnterRoom HallId. - * @member {number} HallId - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.HallId = 0; - - /** - * SCEnterRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.OpRetCode = 0; - - /** - * SCEnterRoom ClubId. - * @member {number} ClubId - * @memberof gamehall.SCEnterRoom - * @instance - */ - SCEnterRoom.prototype.ClubId = 0; - - /** - * Creates a new SCEnterRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCEnterRoom - * @static - * @param {gamehall.ISCEnterRoom=} [properties] Properties to set - * @returns {gamehall.SCEnterRoom} SCEnterRoom instance - */ - SCEnterRoom.create = function create(properties) { - return new SCEnterRoom(properties); - }; - - /** - * Encodes the specified SCEnterRoom message. Does not implicitly {@link gamehall.SCEnterRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCEnterRoom - * @static - * @param {gamehall.ISCEnterRoom} message SCEnterRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.ModeType != null && Object.hasOwnProperty.call(message, "ModeType")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.ModeType); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 3, wireType 2 =*/26).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.RoomId); - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.HallId); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.OpRetCode); - if (message.ClubId != null && Object.hasOwnProperty.call(message, "ClubId")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.ClubId); - return writer; - }; - - /** - * Encodes the specified SCEnterRoom message, length delimited. Does not implicitly {@link gamehall.SCEnterRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCEnterRoom - * @static - * @param {gamehall.ISCEnterRoom} message SCEnterRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCEnterRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCEnterRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCEnterRoom} SCEnterRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCEnterRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.ModeType = reader.int32(); - break; - } - case 3: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - case 4: { - message.RoomId = reader.int32(); - break; - } - case 5: { - message.HallId = reader.int32(); - break; - } - case 6: { - message.OpRetCode = reader.int32(); - break; - } - case 7: { - message.ClubId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCEnterRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCEnterRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCEnterRoom} SCEnterRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCEnterRoom message. - * @function verify - * @memberof gamehall.SCEnterRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCEnterRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.ModeType != null && message.hasOwnProperty("ModeType")) - if (!$util.isInteger(message.ModeType)) - return "ModeType: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.ClubId != null && message.hasOwnProperty("ClubId")) - if (!$util.isInteger(message.ClubId)) - return "ClubId: integer expected"; - return null; - }; - - /** - * Creates a SCEnterRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCEnterRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCEnterRoom} SCEnterRoom - */ - SCEnterRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCEnterRoom) - return object; - var message = new $root.gamehall.SCEnterRoom(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.ModeType != null) - message.ModeType = object.ModeType | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.SCEnterRoom.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.HallId != null) - message.HallId = object.HallId | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.ClubId != null) - message.ClubId = object.ClubId | 0; - return message; - }; - - /** - * Creates a plain object from a SCEnterRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCEnterRoom - * @static - * @param {gamehall.SCEnterRoom} message SCEnterRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCEnterRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Params = []; - if (options.defaults) { - object.GameId = 0; - object.ModeType = 0; - object.RoomId = 0; - object.HallId = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.ClubId = 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.ModeType != null && message.hasOwnProperty("ModeType")) - object.ModeType = message.ModeType; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.ClubId != null && message.hasOwnProperty("ClubId")) - object.ClubId = message.ClubId; - return object; - }; - - /** - * Converts this SCEnterRoom to JSON. - * @function toJSON - * @memberof gamehall.SCEnterRoom - * @instance - * @returns {Object.} JSON object - */ - SCEnterRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCEnterRoom - * @function getTypeUrl - * @memberof gamehall.SCEnterRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCEnterRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCEnterRoom"; - }; - - return SCEnterRoom; - })(); - - gamehall.CSLeaveRoom = (function() { - - /** - * Properties of a CSLeaveRoom. - * @memberof gamehall - * @interface ICSLeaveRoom - * @property {number|null} [Mode] CSLeaveRoom Mode - */ - - /** - * Constructs a new CSLeaveRoom. - * @memberof gamehall - * @classdesc Represents a CSLeaveRoom. - * @implements ICSLeaveRoom - * @constructor - * @param {gamehall.ICSLeaveRoom=} [properties] Properties to set - */ - function CSLeaveRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSLeaveRoom Mode. - * @member {number} Mode - * @memberof gamehall.CSLeaveRoom - * @instance - */ - CSLeaveRoom.prototype.Mode = 0; - - /** - * Creates a new CSLeaveRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSLeaveRoom - * @static - * @param {gamehall.ICSLeaveRoom=} [properties] Properties to set - * @returns {gamehall.CSLeaveRoom} CSLeaveRoom instance - */ - CSLeaveRoom.create = function create(properties) { - return new CSLeaveRoom(properties); - }; - - /** - * Encodes the specified CSLeaveRoom message. Does not implicitly {@link gamehall.CSLeaveRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSLeaveRoom - * @static - * @param {gamehall.ICSLeaveRoom} message CSLeaveRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Mode != null && Object.hasOwnProperty.call(message, "Mode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Mode); - return writer; - }; - - /** - * Encodes the specified CSLeaveRoom message, length delimited. Does not implicitly {@link gamehall.CSLeaveRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSLeaveRoom - * @static - * @param {gamehall.ICSLeaveRoom} message CSLeaveRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSLeaveRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSLeaveRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSLeaveRoom} CSLeaveRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSLeaveRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Mode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSLeaveRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSLeaveRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSLeaveRoom} CSLeaveRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSLeaveRoom message. - * @function verify - * @memberof gamehall.CSLeaveRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSLeaveRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Mode != null && message.hasOwnProperty("Mode")) - if (!$util.isInteger(message.Mode)) - return "Mode: integer expected"; - return null; - }; - - /** - * Creates a CSLeaveRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSLeaveRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSLeaveRoom} CSLeaveRoom - */ - CSLeaveRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSLeaveRoom) - return object; - var message = new $root.gamehall.CSLeaveRoom(); - if (object.Mode != null) - message.Mode = object.Mode | 0; - return message; - }; - - /** - * Creates a plain object from a CSLeaveRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSLeaveRoom - * @static - * @param {gamehall.CSLeaveRoom} message CSLeaveRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSLeaveRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.Mode = 0; - if (message.Mode != null && message.hasOwnProperty("Mode")) - object.Mode = message.Mode; - return object; - }; - - /** - * Converts this CSLeaveRoom to JSON. - * @function toJSON - * @memberof gamehall.CSLeaveRoom - * @instance - * @returns {Object.} JSON object - */ - CSLeaveRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSLeaveRoom - * @function getTypeUrl - * @memberof gamehall.CSLeaveRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSLeaveRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSLeaveRoom"; - }; - - return CSLeaveRoom; - })(); - - gamehall.SCLeaveRoom = (function() { - - /** - * Properties of a SCLeaveRoom. - * @memberof gamehall - * @interface ISCLeaveRoom - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCLeaveRoom OpRetCode - * @property {number|null} [Reason] SCLeaveRoom Reason - * @property {number|null} [RoomId] SCLeaveRoom RoomId - * @property {number|null} [Mode] SCLeaveRoom Mode - */ - - /** - * Constructs a new SCLeaveRoom. - * @memberof gamehall - * @classdesc Represents a SCLeaveRoom. - * @implements ISCLeaveRoom - * @constructor - * @param {gamehall.ISCLeaveRoom=} [properties] Properties to set - */ - function SCLeaveRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLeaveRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCLeaveRoom - * @instance - */ - SCLeaveRoom.prototype.OpRetCode = 0; - - /** - * SCLeaveRoom Reason. - * @member {number} Reason - * @memberof gamehall.SCLeaveRoom - * @instance - */ - SCLeaveRoom.prototype.Reason = 0; - - /** - * SCLeaveRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.SCLeaveRoom - * @instance - */ - SCLeaveRoom.prototype.RoomId = 0; - - /** - * SCLeaveRoom Mode. - * @member {number} Mode - * @memberof gamehall.SCLeaveRoom - * @instance - */ - SCLeaveRoom.prototype.Mode = 0; - - /** - * Creates a new SCLeaveRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCLeaveRoom - * @static - * @param {gamehall.ISCLeaveRoom=} [properties] Properties to set - * @returns {gamehall.SCLeaveRoom} SCLeaveRoom instance - */ - SCLeaveRoom.create = function create(properties) { - return new SCLeaveRoom(properties); - }; - - /** - * Encodes the specified SCLeaveRoom message. Does not implicitly {@link gamehall.SCLeaveRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLeaveRoom - * @static - * @param {gamehall.ISCLeaveRoom} message SCLeaveRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.Reason != null && Object.hasOwnProperty.call(message, "Reason")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Reason); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.RoomId); - if (message.Mode != null && Object.hasOwnProperty.call(message, "Mode")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.Mode); - return writer; - }; - - /** - * Encodes the specified SCLeaveRoom message, length delimited. Does not implicitly {@link gamehall.SCLeaveRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLeaveRoom - * @static - * @param {gamehall.ISCLeaveRoom} message SCLeaveRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLeaveRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLeaveRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLeaveRoom} SCLeaveRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLeaveRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.Reason = reader.int32(); - break; - } - case 3: { - message.RoomId = reader.int32(); - break; - } - case 4: { - message.Mode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLeaveRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLeaveRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLeaveRoom} SCLeaveRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLeaveRoom message. - * @function verify - * @memberof gamehall.SCLeaveRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLeaveRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.Reason != null && message.hasOwnProperty("Reason")) - if (!$util.isInteger(message.Reason)) - return "Reason: integer expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.Mode != null && message.hasOwnProperty("Mode")) - if (!$util.isInteger(message.Mode)) - return "Mode: integer expected"; - return null; - }; - - /** - * Creates a SCLeaveRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLeaveRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLeaveRoom} SCLeaveRoom - */ - SCLeaveRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLeaveRoom) - return object; - var message = new $root.gamehall.SCLeaveRoom(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.Reason != null) - message.Reason = object.Reason | 0; - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.Mode != null) - message.Mode = object.Mode | 0; - return message; - }; - - /** - * Creates a plain object from a SCLeaveRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLeaveRoom - * @static - * @param {gamehall.SCLeaveRoom} message SCLeaveRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLeaveRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.Reason = 0; - object.RoomId = 0; - object.Mode = 0; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.Reason != null && message.hasOwnProperty("Reason")) - object.Reason = message.Reason; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.Mode != null && message.hasOwnProperty("Mode")) - object.Mode = message.Mode; - return object; - }; - - /** - * Converts this SCLeaveRoom to JSON. - * @function toJSON - * @memberof gamehall.SCLeaveRoom - * @instance - * @returns {Object.} JSON object - */ - SCLeaveRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLeaveRoom - * @function getTypeUrl - * @memberof gamehall.SCLeaveRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLeaveRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLeaveRoom"; - }; - - return SCLeaveRoom; - })(); - - gamehall.CSReturnRoom = (function() { - - /** - * Properties of a CSReturnRoom. - * @memberof gamehall - * @interface ICSReturnRoom - * @property {number|null} [ApkVer] CSReturnRoom ApkVer - * @property {number|null} [ResVer] CSReturnRoom ResVer - * @property {boolean|null} [IsLoaded] CSReturnRoom IsLoaded - * @property {number|null} [RoomId] CSReturnRoom RoomId - */ - - /** - * Constructs a new CSReturnRoom. - * @memberof gamehall - * @classdesc Represents a CSReturnRoom. - * @implements ICSReturnRoom - * @constructor - * @param {gamehall.ICSReturnRoom=} [properties] Properties to set - */ - function CSReturnRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSReturnRoom ApkVer. - * @member {number} ApkVer - * @memberof gamehall.CSReturnRoom - * @instance - */ - CSReturnRoom.prototype.ApkVer = 0; - - /** - * CSReturnRoom ResVer. - * @member {number} ResVer - * @memberof gamehall.CSReturnRoom - * @instance - */ - CSReturnRoom.prototype.ResVer = 0; - - /** - * CSReturnRoom IsLoaded. - * @member {boolean} IsLoaded - * @memberof gamehall.CSReturnRoom - * @instance - */ - CSReturnRoom.prototype.IsLoaded = false; - - /** - * CSReturnRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.CSReturnRoom - * @instance - */ - CSReturnRoom.prototype.RoomId = 0; - - /** - * Creates a new CSReturnRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSReturnRoom - * @static - * @param {gamehall.ICSReturnRoom=} [properties] Properties to set - * @returns {gamehall.CSReturnRoom} CSReturnRoom instance - */ - CSReturnRoom.create = function create(properties) { - return new CSReturnRoom(properties); - }; - - /** - * Encodes the specified CSReturnRoom message. Does not implicitly {@link gamehall.CSReturnRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSReturnRoom - * @static - * @param {gamehall.ICSReturnRoom} message CSReturnRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReturnRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ApkVer != null && Object.hasOwnProperty.call(message, "ApkVer")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ApkVer); - if (message.ResVer != null && Object.hasOwnProperty.call(message, "ResVer")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.ResVer); - if (message.IsLoaded != null && Object.hasOwnProperty.call(message, "IsLoaded")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.IsLoaded); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.RoomId); - return writer; - }; - - /** - * Encodes the specified CSReturnRoom message, length delimited. Does not implicitly {@link gamehall.CSReturnRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSReturnRoom - * @static - * @param {gamehall.ICSReturnRoom} message CSReturnRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReturnRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSReturnRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSReturnRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSReturnRoom} CSReturnRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReturnRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSReturnRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ApkVer = reader.int32(); - break; - } - case 2: { - message.ResVer = reader.int32(); - break; - } - case 3: { - message.IsLoaded = reader.bool(); - break; - } - case 4: { - message.RoomId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSReturnRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSReturnRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSReturnRoom} CSReturnRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReturnRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSReturnRoom message. - * @function verify - * @memberof gamehall.CSReturnRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSReturnRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ApkVer != null && message.hasOwnProperty("ApkVer")) - if (!$util.isInteger(message.ApkVer)) - return "ApkVer: integer expected"; - if (message.ResVer != null && message.hasOwnProperty("ResVer")) - if (!$util.isInteger(message.ResVer)) - return "ResVer: integer expected"; - if (message.IsLoaded != null && message.hasOwnProperty("IsLoaded")) - if (typeof message.IsLoaded !== "boolean") - return "IsLoaded: boolean expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - return null; - }; - - /** - * Creates a CSReturnRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSReturnRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSReturnRoom} CSReturnRoom - */ - CSReturnRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSReturnRoom) - return object; - var message = new $root.gamehall.CSReturnRoom(); - if (object.ApkVer != null) - message.ApkVer = object.ApkVer | 0; - if (object.ResVer != null) - message.ResVer = object.ResVer | 0; - if (object.IsLoaded != null) - message.IsLoaded = Boolean(object.IsLoaded); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - return message; - }; - - /** - * Creates a plain object from a CSReturnRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSReturnRoom - * @static - * @param {gamehall.CSReturnRoom} message CSReturnRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSReturnRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ApkVer = 0; - object.ResVer = 0; - object.IsLoaded = false; - object.RoomId = 0; - } - if (message.ApkVer != null && message.hasOwnProperty("ApkVer")) - object.ApkVer = message.ApkVer; - if (message.ResVer != null && message.hasOwnProperty("ResVer")) - object.ResVer = message.ResVer; - if (message.IsLoaded != null && message.hasOwnProperty("IsLoaded")) - object.IsLoaded = message.IsLoaded; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - return object; - }; - - /** - * Converts this CSReturnRoom to JSON. - * @function toJSON - * @memberof gamehall.CSReturnRoom - * @instance - * @returns {Object.} JSON object - */ - CSReturnRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSReturnRoom - * @function getTypeUrl - * @memberof gamehall.CSReturnRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSReturnRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSReturnRoom"; - }; - - return CSReturnRoom; - })(); - - gamehall.SCReturnRoom = (function() { - - /** - * Properties of a SCReturnRoom. - * @memberof gamehall - * @interface ISCReturnRoom - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCReturnRoom OpRetCode - * @property {number|null} [RoomId] SCReturnRoom RoomId - * @property {number|null} [GameId] SCReturnRoom GameId - * @property {number|null} [ModeType] SCReturnRoom ModeType - * @property {Array.|null} [Params] SCReturnRoom Params - * @property {number|null} [HallId] SCReturnRoom HallId - * @property {number|null} [MinApkVer] SCReturnRoom MinApkVer - * @property {number|null} [LatestApkVer] SCReturnRoom LatestApkVer - * @property {number|null} [MinResVer] SCReturnRoom MinResVer - * @property {number|null} [LatestResVer] SCReturnRoom LatestResVer - * @property {boolean|null} [IsLoaded] SCReturnRoom IsLoaded - * @property {number|null} [ClubId] SCReturnRoom ClubId - */ - - /** - * Constructs a new SCReturnRoom. - * @memberof gamehall - * @classdesc Represents a SCReturnRoom. - * @implements ISCReturnRoom - * @constructor - * @param {gamehall.ISCReturnRoom=} [properties] Properties to set - */ - function SCReturnRoom(properties) { - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCReturnRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.OpRetCode = 0; - - /** - * SCReturnRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.RoomId = 0; - - /** - * SCReturnRoom GameId. - * @member {number} GameId - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.GameId = 0; - - /** - * SCReturnRoom ModeType. - * @member {number} ModeType - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.ModeType = 0; - - /** - * SCReturnRoom Params. - * @member {Array.} Params - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.Params = $util.emptyArray; - - /** - * SCReturnRoom HallId. - * @member {number} HallId - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.HallId = 0; - - /** - * SCReturnRoom MinApkVer. - * @member {number} MinApkVer - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.MinApkVer = 0; - - /** - * SCReturnRoom LatestApkVer. - * @member {number} LatestApkVer - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.LatestApkVer = 0; - - /** - * SCReturnRoom MinResVer. - * @member {number} MinResVer - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.MinResVer = 0; - - /** - * SCReturnRoom LatestResVer. - * @member {number} LatestResVer - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.LatestResVer = 0; - - /** - * SCReturnRoom IsLoaded. - * @member {boolean} IsLoaded - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.IsLoaded = false; - - /** - * SCReturnRoom ClubId. - * @member {number} ClubId - * @memberof gamehall.SCReturnRoom - * @instance - */ - SCReturnRoom.prototype.ClubId = 0; - - /** - * Creates a new SCReturnRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCReturnRoom - * @static - * @param {gamehall.ISCReturnRoom=} [properties] Properties to set - * @returns {gamehall.SCReturnRoom} SCReturnRoom instance - */ - SCReturnRoom.create = function create(properties) { - return new SCReturnRoom(properties); - }; - - /** - * Encodes the specified SCReturnRoom message. Does not implicitly {@link gamehall.SCReturnRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCReturnRoom - * @static - * @param {gamehall.ISCReturnRoom} message SCReturnRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReturnRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.RoomId); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.GameId); - if (message.ModeType != null && Object.hasOwnProperty.call(message, "ModeType")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.ModeType); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 5, wireType 2 =*/42).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - if (message.HallId != null && Object.hasOwnProperty.call(message, "HallId")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.HallId); - if (message.MinApkVer != null && Object.hasOwnProperty.call(message, "MinApkVer")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.MinApkVer); - if (message.LatestApkVer != null && Object.hasOwnProperty.call(message, "LatestApkVer")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.LatestApkVer); - if (message.MinResVer != null && Object.hasOwnProperty.call(message, "MinResVer")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.MinResVer); - if (message.LatestResVer != null && Object.hasOwnProperty.call(message, "LatestResVer")) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.LatestResVer); - if (message.IsLoaded != null && Object.hasOwnProperty.call(message, "IsLoaded")) - writer.uint32(/* id 11, wireType 0 =*/88).bool(message.IsLoaded); - if (message.ClubId != null && Object.hasOwnProperty.call(message, "ClubId")) - writer.uint32(/* id 12, wireType 0 =*/96).int32(message.ClubId); - return writer; - }; - - /** - * Encodes the specified SCReturnRoom message, length delimited. Does not implicitly {@link gamehall.SCReturnRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCReturnRoom - * @static - * @param {gamehall.ISCReturnRoom} message SCReturnRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReturnRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCReturnRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCReturnRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCReturnRoom} SCReturnRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReturnRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCReturnRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.RoomId = reader.int32(); - break; - } - case 3: { - message.GameId = reader.int32(); - break; - } - case 4: { - message.ModeType = reader.int32(); - break; - } - case 5: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - case 6: { - message.HallId = reader.int32(); - break; - } - case 7: { - message.MinApkVer = reader.int32(); - break; - } - case 8: { - message.LatestApkVer = reader.int32(); - break; - } - case 9: { - message.MinResVer = reader.int32(); - break; - } - case 10: { - message.LatestResVer = reader.int32(); - break; - } - case 11: { - message.IsLoaded = reader.bool(); - break; - } - case 12: { - message.ClubId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCReturnRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCReturnRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCReturnRoom} SCReturnRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReturnRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCReturnRoom message. - * @function verify - * @memberof gamehall.SCReturnRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCReturnRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.ModeType != null && message.hasOwnProperty("ModeType")) - if (!$util.isInteger(message.ModeType)) - return "ModeType: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - if (message.HallId != null && message.hasOwnProperty("HallId")) - if (!$util.isInteger(message.HallId)) - return "HallId: integer expected"; - if (message.MinApkVer != null && message.hasOwnProperty("MinApkVer")) - if (!$util.isInteger(message.MinApkVer)) - return "MinApkVer: integer expected"; - if (message.LatestApkVer != null && message.hasOwnProperty("LatestApkVer")) - if (!$util.isInteger(message.LatestApkVer)) - return "LatestApkVer: integer expected"; - if (message.MinResVer != null && message.hasOwnProperty("MinResVer")) - if (!$util.isInteger(message.MinResVer)) - return "MinResVer: integer expected"; - if (message.LatestResVer != null && message.hasOwnProperty("LatestResVer")) - if (!$util.isInteger(message.LatestResVer)) - return "LatestResVer: integer expected"; - if (message.IsLoaded != null && message.hasOwnProperty("IsLoaded")) - if (typeof message.IsLoaded !== "boolean") - return "IsLoaded: boolean expected"; - if (message.ClubId != null && message.hasOwnProperty("ClubId")) - if (!$util.isInteger(message.ClubId)) - return "ClubId: integer expected"; - return null; - }; - - /** - * Creates a SCReturnRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCReturnRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCReturnRoom} SCReturnRoom - */ - SCReturnRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCReturnRoom) - return object; - var message = new $root.gamehall.SCReturnRoom(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.ModeType != null) - message.ModeType = object.ModeType | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.SCReturnRoom.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - if (object.HallId != null) - message.HallId = object.HallId | 0; - if (object.MinApkVer != null) - message.MinApkVer = object.MinApkVer | 0; - if (object.LatestApkVer != null) - message.LatestApkVer = object.LatestApkVer | 0; - if (object.MinResVer != null) - message.MinResVer = object.MinResVer | 0; - if (object.LatestResVer != null) - message.LatestResVer = object.LatestResVer | 0; - if (object.IsLoaded != null) - message.IsLoaded = Boolean(object.IsLoaded); - if (object.ClubId != null) - message.ClubId = object.ClubId | 0; - return message; - }; - - /** - * Creates a plain object from a SCReturnRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCReturnRoom - * @static - * @param {gamehall.SCReturnRoom} message SCReturnRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCReturnRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Params = []; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.RoomId = 0; - object.GameId = 0; - object.ModeType = 0; - object.HallId = 0; - object.MinApkVer = 0; - object.LatestApkVer = 0; - object.MinResVer = 0; - object.LatestResVer = 0; - object.IsLoaded = false; - object.ClubId = 0; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.ModeType != null && message.hasOwnProperty("ModeType")) - object.ModeType = message.ModeType; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - if (message.HallId != null && message.hasOwnProperty("HallId")) - object.HallId = message.HallId; - if (message.MinApkVer != null && message.hasOwnProperty("MinApkVer")) - object.MinApkVer = message.MinApkVer; - if (message.LatestApkVer != null && message.hasOwnProperty("LatestApkVer")) - object.LatestApkVer = message.LatestApkVer; - if (message.MinResVer != null && message.hasOwnProperty("MinResVer")) - object.MinResVer = message.MinResVer; - if (message.LatestResVer != null && message.hasOwnProperty("LatestResVer")) - object.LatestResVer = message.LatestResVer; - if (message.IsLoaded != null && message.hasOwnProperty("IsLoaded")) - object.IsLoaded = message.IsLoaded; - if (message.ClubId != null && message.hasOwnProperty("ClubId")) - object.ClubId = message.ClubId; - return object; - }; - - /** - * Converts this SCReturnRoom to JSON. - * @function toJSON - * @memberof gamehall.SCReturnRoom - * @instance - * @returns {Object.} JSON object - */ - SCReturnRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCReturnRoom - * @function getTypeUrl - * @memberof gamehall.SCReturnRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCReturnRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCReturnRoom"; - }; - - return SCReturnRoom; - })(); - - gamehall.CSGetGameRec = (function() { - - /** - * Properties of a CSGetGameRec. - * @memberof gamehall - * @interface ICSGetGameRec - * @property {number|null} [Ver] CSGetGameRec Ver - * @property {number|null} [GameId] CSGetGameRec GameId - */ - - /** - * Constructs a new CSGetGameRec. - * @memberof gamehall - * @classdesc Represents a CSGetGameRec. - * @implements ICSGetGameRec - * @constructor - * @param {gamehall.ICSGetGameRec=} [properties] Properties to set - */ - function CSGetGameRec(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSGetGameRec Ver. - * @member {number} Ver - * @memberof gamehall.CSGetGameRec - * @instance - */ - CSGetGameRec.prototype.Ver = 0; - - /** - * CSGetGameRec GameId. - * @member {number} GameId - * @memberof gamehall.CSGetGameRec - * @instance - */ - CSGetGameRec.prototype.GameId = 0; - - /** - * Creates a new CSGetGameRec instance using the specified properties. - * @function create - * @memberof gamehall.CSGetGameRec - * @static - * @param {gamehall.ICSGetGameRec=} [properties] Properties to set - * @returns {gamehall.CSGetGameRec} CSGetGameRec instance - */ - CSGetGameRec.create = function create(properties) { - return new CSGetGameRec(properties); - }; - - /** - * Encodes the specified CSGetGameRec message. Does not implicitly {@link gamehall.CSGetGameRec.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGetGameRec - * @static - * @param {gamehall.ICSGetGameRec} message CSGetGameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetGameRec.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Ver != null && Object.hasOwnProperty.call(message, "Ver")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Ver); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameId); - return writer; - }; - - /** - * Encodes the specified CSGetGameRec message, length delimited. Does not implicitly {@link gamehall.CSGetGameRec.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGetGameRec - * @static - * @param {gamehall.ICSGetGameRec} message CSGetGameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetGameRec.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetGameRec message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGetGameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGetGameRec} CSGetGameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetGameRec.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGetGameRec(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Ver = reader.int32(); - break; - } - case 2: { - message.GameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetGameRec message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGetGameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGetGameRec} CSGetGameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetGameRec.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetGameRec message. - * @function verify - * @memberof gamehall.CSGetGameRec - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetGameRec.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Ver != null && message.hasOwnProperty("Ver")) - if (!$util.isInteger(message.Ver)) - return "Ver: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - return null; - }; - - /** - * Creates a CSGetGameRec message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGetGameRec - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGetGameRec} CSGetGameRec - */ - CSGetGameRec.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGetGameRec) - return object; - var message = new $root.gamehall.CSGetGameRec(); - if (object.Ver != null) - message.Ver = object.Ver | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - return message; - }; - - /** - * Creates a plain object from a CSGetGameRec message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGetGameRec - * @static - * @param {gamehall.CSGetGameRec} message CSGetGameRec - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetGameRec.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Ver = 0; - object.GameId = 0; - } - if (message.Ver != null && message.hasOwnProperty("Ver")) - object.Ver = message.Ver; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - return object; - }; - - /** - * Converts this CSGetGameRec to JSON. - * @function toJSON - * @memberof gamehall.CSGetGameRec - * @instance - * @returns {Object.} JSON object - */ - CSGetGameRec.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetGameRec - * @function getTypeUrl - * @memberof gamehall.CSGetGameRec - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetGameRec.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGetGameRec"; - }; - - return CSGetGameRec; - })(); - - gamehall.PlayerGameRec = (function() { - - /** - * Properties of a PlayerGameRec. - * @memberof gamehall - * @interface IPlayerGameRec - * @property {number|null} [Id] PlayerGameRec Id - * @property {string|null} [Name] PlayerGameRec Name - * @property {number|null} [Head] PlayerGameRec Head - * @property {number|Long|null} [Coin] PlayerGameRec Coin - * @property {number|null} [Pos] PlayerGameRec Pos - * @property {Array.|null} [OtherParams] PlayerGameRec OtherParams - */ - - /** - * Constructs a new PlayerGameRec. - * @memberof gamehall - * @classdesc Represents a PlayerGameRec. - * @implements IPlayerGameRec - * @constructor - * @param {gamehall.IPlayerGameRec=} [properties] Properties to set - */ - function PlayerGameRec(properties) { - this.OtherParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PlayerGameRec Id. - * @member {number} Id - * @memberof gamehall.PlayerGameRec - * @instance - */ - PlayerGameRec.prototype.Id = 0; - - /** - * PlayerGameRec Name. - * @member {string} Name - * @memberof gamehall.PlayerGameRec - * @instance - */ - PlayerGameRec.prototype.Name = ""; - - /** - * PlayerGameRec Head. - * @member {number} Head - * @memberof gamehall.PlayerGameRec - * @instance - */ - PlayerGameRec.prototype.Head = 0; - - /** - * PlayerGameRec Coin. - * @member {number|Long} Coin - * @memberof gamehall.PlayerGameRec - * @instance - */ - PlayerGameRec.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerGameRec Pos. - * @member {number} Pos - * @memberof gamehall.PlayerGameRec - * @instance - */ - PlayerGameRec.prototype.Pos = 0; - - /** - * PlayerGameRec OtherParams. - * @member {Array.} OtherParams - * @memberof gamehall.PlayerGameRec - * @instance - */ - PlayerGameRec.prototype.OtherParams = $util.emptyArray; - - /** - * Creates a new PlayerGameRec instance using the specified properties. - * @function create - * @memberof gamehall.PlayerGameRec - * @static - * @param {gamehall.IPlayerGameRec=} [properties] Properties to set - * @returns {gamehall.PlayerGameRec} PlayerGameRec instance - */ - PlayerGameRec.create = function create(properties) { - return new PlayerGameRec(properties); - }; - - /** - * Encodes the specified PlayerGameRec message. Does not implicitly {@link gamehall.PlayerGameRec.verify|verify} messages. - * @function encode - * @memberof gamehall.PlayerGameRec - * @static - * @param {gamehall.IPlayerGameRec} message PlayerGameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PlayerGameRec.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.Name != null && Object.hasOwnProperty.call(message, "Name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.Name); - if (message.Head != null && Object.hasOwnProperty.call(message, "Head")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Head); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.Coin); - if (message.Pos != null && Object.hasOwnProperty.call(message, "Pos")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.Pos); - if (message.OtherParams != null && message.OtherParams.length) { - writer.uint32(/* id 6, wireType 2 =*/50).fork(); - for (var i = 0; i < message.OtherParams.length; ++i) - writer.int32(message.OtherParams[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified PlayerGameRec message, length delimited. Does not implicitly {@link gamehall.PlayerGameRec.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.PlayerGameRec - * @static - * @param {gamehall.IPlayerGameRec} message PlayerGameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PlayerGameRec.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PlayerGameRec message from the specified reader or buffer. - * @function decode - * @memberof gamehall.PlayerGameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.PlayerGameRec} PlayerGameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PlayerGameRec.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.PlayerGameRec(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.Name = reader.string(); - break; - } - case 3: { - message.Head = reader.int32(); - break; - } - case 4: { - message.Coin = reader.int64(); - break; - } - case 5: { - message.Pos = reader.int32(); - break; - } - case 6: { - if (!(message.OtherParams && message.OtherParams.length)) - message.OtherParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OtherParams.push(reader.int32()); - } else - message.OtherParams.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PlayerGameRec message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.PlayerGameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.PlayerGameRec} PlayerGameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PlayerGameRec.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PlayerGameRec message. - * @function verify - * @memberof gamehall.PlayerGameRec - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PlayerGameRec.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.Name != null && message.hasOwnProperty("Name")) - if (!$util.isString(message.Name)) - return "Name: string expected"; - if (message.Head != null && message.hasOwnProperty("Head")) - if (!$util.isInteger(message.Head)) - return "Head: integer expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - if (message.Pos != null && message.hasOwnProperty("Pos")) - if (!$util.isInteger(message.Pos)) - return "Pos: integer expected"; - if (message.OtherParams != null && message.hasOwnProperty("OtherParams")) { - if (!Array.isArray(message.OtherParams)) - return "OtherParams: array expected"; - for (var i = 0; i < message.OtherParams.length; ++i) - if (!$util.isInteger(message.OtherParams[i])) - return "OtherParams: integer[] expected"; - } - return null; - }; - - /** - * Creates a PlayerGameRec message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.PlayerGameRec - * @static - * @param {Object.} object Plain object - * @returns {gamehall.PlayerGameRec} PlayerGameRec - */ - PlayerGameRec.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.PlayerGameRec) - return object; - var message = new $root.gamehall.PlayerGameRec(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.Name != null) - message.Name = String(object.Name); - if (object.Head != null) - message.Head = object.Head | 0; - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - if (object.Pos != null) - message.Pos = object.Pos | 0; - if (object.OtherParams) { - if (!Array.isArray(object.OtherParams)) - throw TypeError(".gamehall.PlayerGameRec.OtherParams: array expected"); - message.OtherParams = []; - for (var i = 0; i < object.OtherParams.length; ++i) - message.OtherParams[i] = object.OtherParams[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a PlayerGameRec message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.PlayerGameRec - * @static - * @param {gamehall.PlayerGameRec} message PlayerGameRec - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PlayerGameRec.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OtherParams = []; - if (options.defaults) { - object.Id = 0; - object.Name = ""; - object.Head = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - object.Pos = 0; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.Name != null && message.hasOwnProperty("Name")) - object.Name = message.Name; - if (message.Head != null && message.hasOwnProperty("Head")) - object.Head = message.Head; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - if (message.Pos != null && message.hasOwnProperty("Pos")) - object.Pos = message.Pos; - if (message.OtherParams && message.OtherParams.length) { - object.OtherParams = []; - for (var j = 0; j < message.OtherParams.length; ++j) - object.OtherParams[j] = message.OtherParams[j]; - } - return object; - }; - - /** - * Converts this PlayerGameRec to JSON. - * @function toJSON - * @memberof gamehall.PlayerGameRec - * @instance - * @returns {Object.} JSON object - */ - PlayerGameRec.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PlayerGameRec - * @function getTypeUrl - * @memberof gamehall.PlayerGameRec - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PlayerGameRec.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.PlayerGameRec"; - }; - - return PlayerGameRec; - })(); - - gamehall.GameRec = (function() { - - /** - * Properties of a GameRec. - * @memberof gamehall - * @interface IGameRec - * @property {number|null} [RecId] GameRec RecId - * @property {Array.|null} [Datas] GameRec Datas - * @property {number|Long|null} [Ts] GameRec Ts - * @property {number|null} [RoomId] GameRec RoomId - * @property {number|null} [GameMode] GameRec GameMode - * @property {number|null} [SceneType] GameRec SceneType - * @property {number|null} [GameId] GameRec GameId - * @property {number|null} [TotalOfGames] GameRec TotalOfGames - * @property {number|null} [NumOfGames] GameRec NumOfGames - * @property {number|null} [RoomFeeMode] GameRec RoomFeeMode - * @property {number|null} [RoomCardCnt] GameRec RoomCardCnt - * @property {Array.|null} [Params] GameRec Params - * @property {number|null} [GameTime] GameRec GameTime - */ - - /** - * Constructs a new GameRec. - * @memberof gamehall - * @classdesc Represents a GameRec. - * @implements IGameRec - * @constructor - * @param {gamehall.IGameRec=} [properties] Properties to set - */ - function GameRec(properties) { - this.Datas = []; - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GameRec RecId. - * @member {number} RecId - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.RecId = 0; - - /** - * GameRec Datas. - * @member {Array.} Datas - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.Datas = $util.emptyArray; - - /** - * GameRec Ts. - * @member {number|Long} Ts - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.Ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * GameRec RoomId. - * @member {number} RoomId - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.RoomId = 0; - - /** - * GameRec GameMode. - * @member {number} GameMode - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.GameMode = 0; - - /** - * GameRec SceneType. - * @member {number} SceneType - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.SceneType = 0; - - /** - * GameRec GameId. - * @member {number} GameId - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.GameId = 0; - - /** - * GameRec TotalOfGames. - * @member {number} TotalOfGames - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.TotalOfGames = 0; - - /** - * GameRec NumOfGames. - * @member {number} NumOfGames - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.NumOfGames = 0; - - /** - * GameRec RoomFeeMode. - * @member {number} RoomFeeMode - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.RoomFeeMode = 0; - - /** - * GameRec RoomCardCnt. - * @member {number} RoomCardCnt - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.RoomCardCnt = 0; - - /** - * GameRec Params. - * @member {Array.} Params - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.Params = $util.emptyArray; - - /** - * GameRec GameTime. - * @member {number} GameTime - * @memberof gamehall.GameRec - * @instance - */ - GameRec.prototype.GameTime = 0; - - /** - * Creates a new GameRec instance using the specified properties. - * @function create - * @memberof gamehall.GameRec - * @static - * @param {gamehall.IGameRec=} [properties] Properties to set - * @returns {gamehall.GameRec} GameRec instance - */ - GameRec.create = function create(properties) { - return new GameRec(properties); - }; - - /** - * Encodes the specified GameRec message. Does not implicitly {@link gamehall.GameRec.verify|verify} messages. - * @function encode - * @memberof gamehall.GameRec - * @static - * @param {gamehall.IGameRec} message GameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameRec.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RecId != null && Object.hasOwnProperty.call(message, "RecId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RecId); - if (message.Datas != null && message.Datas.length) - for (var i = 0; i < message.Datas.length; ++i) - $root.gamehall.PlayerGameRec.encode(message.Datas[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Ts); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.RoomId); - if (message.GameMode != null && Object.hasOwnProperty.call(message, "GameMode")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.GameMode); - if (message.SceneType != null && Object.hasOwnProperty.call(message, "SceneType")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.SceneType); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.GameId); - if (message.TotalOfGames != null && Object.hasOwnProperty.call(message, "TotalOfGames")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.TotalOfGames); - if (message.NumOfGames != null && Object.hasOwnProperty.call(message, "NumOfGames")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.NumOfGames); - if (message.RoomFeeMode != null && Object.hasOwnProperty.call(message, "RoomFeeMode")) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.RoomFeeMode); - if (message.RoomCardCnt != null && Object.hasOwnProperty.call(message, "RoomCardCnt")) - writer.uint32(/* id 11, wireType 0 =*/88).int32(message.RoomCardCnt); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 12, wireType 2 =*/98).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - if (message.GameTime != null && Object.hasOwnProperty.call(message, "GameTime")) - writer.uint32(/* id 13, wireType 0 =*/104).int32(message.GameTime); - return writer; - }; - - /** - * Encodes the specified GameRec message, length delimited. Does not implicitly {@link gamehall.GameRec.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.GameRec - * @static - * @param {gamehall.IGameRec} message GameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameRec.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GameRec message from the specified reader or buffer. - * @function decode - * @memberof gamehall.GameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.GameRec} GameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameRec.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.GameRec(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RecId = reader.int32(); - break; - } - case 2: { - if (!(message.Datas && message.Datas.length)) - message.Datas = []; - message.Datas.push($root.gamehall.PlayerGameRec.decode(reader, reader.uint32())); - break; - } - case 3: { - message.Ts = reader.int64(); - break; - } - case 4: { - message.RoomId = reader.int32(); - break; - } - case 5: { - message.GameMode = reader.int32(); - break; - } - case 6: { - message.SceneType = reader.int32(); - break; - } - case 7: { - message.GameId = reader.int32(); - break; - } - case 8: { - message.TotalOfGames = reader.int32(); - break; - } - case 9: { - message.NumOfGames = reader.int32(); - break; - } - case 10: { - message.RoomFeeMode = reader.int32(); - break; - } - case 11: { - message.RoomCardCnt = reader.int32(); - break; - } - case 12: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - case 13: { - message.GameTime = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GameRec message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.GameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.GameRec} GameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameRec.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GameRec message. - * @function verify - * @memberof gamehall.GameRec - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GameRec.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RecId != null && message.hasOwnProperty("RecId")) - if (!$util.isInteger(message.RecId)) - return "RecId: integer expected"; - if (message.Datas != null && message.hasOwnProperty("Datas")) { - if (!Array.isArray(message.Datas)) - return "Datas: array expected"; - for (var i = 0; i < message.Datas.length; ++i) { - var error = $root.gamehall.PlayerGameRec.verify(message.Datas[i]); - if (error) - return "Datas." + error; - } - } - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts) && !(message.Ts && $util.isInteger(message.Ts.low) && $util.isInteger(message.Ts.high))) - return "Ts: integer|Long expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.GameMode != null && message.hasOwnProperty("GameMode")) - if (!$util.isInteger(message.GameMode)) - return "GameMode: integer expected"; - if (message.SceneType != null && message.hasOwnProperty("SceneType")) - if (!$util.isInteger(message.SceneType)) - return "SceneType: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.TotalOfGames != null && message.hasOwnProperty("TotalOfGames")) - if (!$util.isInteger(message.TotalOfGames)) - return "TotalOfGames: integer expected"; - if (message.NumOfGames != null && message.hasOwnProperty("NumOfGames")) - if (!$util.isInteger(message.NumOfGames)) - return "NumOfGames: integer expected"; - if (message.RoomFeeMode != null && message.hasOwnProperty("RoomFeeMode")) - if (!$util.isInteger(message.RoomFeeMode)) - return "RoomFeeMode: integer expected"; - if (message.RoomCardCnt != null && message.hasOwnProperty("RoomCardCnt")) - if (!$util.isInteger(message.RoomCardCnt)) - return "RoomCardCnt: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - if (message.GameTime != null && message.hasOwnProperty("GameTime")) - if (!$util.isInteger(message.GameTime)) - return "GameTime: integer expected"; - return null; - }; - - /** - * Creates a GameRec message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.GameRec - * @static - * @param {Object.} object Plain object - * @returns {gamehall.GameRec} GameRec - */ - GameRec.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.GameRec) - return object; - var message = new $root.gamehall.GameRec(); - if (object.RecId != null) - message.RecId = object.RecId | 0; - if (object.Datas) { - if (!Array.isArray(object.Datas)) - throw TypeError(".gamehall.GameRec.Datas: array expected"); - message.Datas = []; - for (var i = 0; i < object.Datas.length; ++i) { - if (typeof object.Datas[i] !== "object") - throw TypeError(".gamehall.GameRec.Datas: object expected"); - message.Datas[i] = $root.gamehall.PlayerGameRec.fromObject(object.Datas[i]); - } - } - if (object.Ts != null) - if ($util.Long) - (message.Ts = $util.Long.fromValue(object.Ts)).unsigned = false; - else if (typeof object.Ts === "string") - message.Ts = parseInt(object.Ts, 10); - else if (typeof object.Ts === "number") - message.Ts = object.Ts; - else if (typeof object.Ts === "object") - message.Ts = new $util.LongBits(object.Ts.low >>> 0, object.Ts.high >>> 0).toNumber(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.GameMode != null) - message.GameMode = object.GameMode | 0; - if (object.SceneType != null) - message.SceneType = object.SceneType | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.TotalOfGames != null) - message.TotalOfGames = object.TotalOfGames | 0; - if (object.NumOfGames != null) - message.NumOfGames = object.NumOfGames | 0; - if (object.RoomFeeMode != null) - message.RoomFeeMode = object.RoomFeeMode | 0; - if (object.RoomCardCnt != null) - message.RoomCardCnt = object.RoomCardCnt | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.GameRec.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - if (object.GameTime != null) - message.GameTime = object.GameTime | 0; - return message; - }; - - /** - * Creates a plain object from a GameRec message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.GameRec - * @static - * @param {gamehall.GameRec} message GameRec - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GameRec.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.Datas = []; - object.Params = []; - } - if (options.defaults) { - object.RecId = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Ts = options.longs === String ? "0" : 0; - object.RoomId = 0; - object.GameMode = 0; - object.SceneType = 0; - object.GameId = 0; - object.TotalOfGames = 0; - object.NumOfGames = 0; - object.RoomFeeMode = 0; - object.RoomCardCnt = 0; - object.GameTime = 0; - } - if (message.RecId != null && message.hasOwnProperty("RecId")) - object.RecId = message.RecId; - if (message.Datas && message.Datas.length) { - object.Datas = []; - for (var j = 0; j < message.Datas.length; ++j) - object.Datas[j] = $root.gamehall.PlayerGameRec.toObject(message.Datas[j], options); - } - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (typeof message.Ts === "number") - object.Ts = options.longs === String ? String(message.Ts) : message.Ts; - else - object.Ts = options.longs === String ? $util.Long.prototype.toString.call(message.Ts) : options.longs === Number ? new $util.LongBits(message.Ts.low >>> 0, message.Ts.high >>> 0).toNumber() : message.Ts; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.GameMode != null && message.hasOwnProperty("GameMode")) - object.GameMode = message.GameMode; - if (message.SceneType != null && message.hasOwnProperty("SceneType")) - object.SceneType = message.SceneType; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.TotalOfGames != null && message.hasOwnProperty("TotalOfGames")) - object.TotalOfGames = message.TotalOfGames; - if (message.NumOfGames != null && message.hasOwnProperty("NumOfGames")) - object.NumOfGames = message.NumOfGames; - if (message.RoomFeeMode != null && message.hasOwnProperty("RoomFeeMode")) - object.RoomFeeMode = message.RoomFeeMode; - if (message.RoomCardCnt != null && message.hasOwnProperty("RoomCardCnt")) - object.RoomCardCnt = message.RoomCardCnt; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - if (message.GameTime != null && message.hasOwnProperty("GameTime")) - object.GameTime = message.GameTime; - return object; - }; - - /** - * Converts this GameRec to JSON. - * @function toJSON - * @memberof gamehall.GameRec - * @instance - * @returns {Object.} JSON object - */ - GameRec.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GameRec - * @function getTypeUrl - * @memberof gamehall.GameRec - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GameRec.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.GameRec"; - }; - - return GameRec; - })(); - - gamehall.SCGetGameRec = (function() { - - /** - * Properties of a SCGetGameRec. - * @memberof gamehall - * @interface ISCGetGameRec - * @property {Array.|null} [Recs] SCGetGameRec Recs - * @property {number|null} [Ver] SCGetGameRec Ver - * @property {number|null} [GameId] SCGetGameRec GameId - */ - - /** - * Constructs a new SCGetGameRec. - * @memberof gamehall - * @classdesc Represents a SCGetGameRec. - * @implements ISCGetGameRec - * @constructor - * @param {gamehall.ISCGetGameRec=} [properties] Properties to set - */ - function SCGetGameRec(properties) { - this.Recs = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGetGameRec Recs. - * @member {Array.} Recs - * @memberof gamehall.SCGetGameRec - * @instance - */ - SCGetGameRec.prototype.Recs = $util.emptyArray; - - /** - * SCGetGameRec Ver. - * @member {number} Ver - * @memberof gamehall.SCGetGameRec - * @instance - */ - SCGetGameRec.prototype.Ver = 0; - - /** - * SCGetGameRec GameId. - * @member {number} GameId - * @memberof gamehall.SCGetGameRec - * @instance - */ - SCGetGameRec.prototype.GameId = 0; - - /** - * Creates a new SCGetGameRec instance using the specified properties. - * @function create - * @memberof gamehall.SCGetGameRec - * @static - * @param {gamehall.ISCGetGameRec=} [properties] Properties to set - * @returns {gamehall.SCGetGameRec} SCGetGameRec instance - */ - SCGetGameRec.create = function create(properties) { - return new SCGetGameRec(properties); - }; - - /** - * Encodes the specified SCGetGameRec message. Does not implicitly {@link gamehall.SCGetGameRec.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGetGameRec - * @static - * @param {gamehall.ISCGetGameRec} message SCGetGameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetGameRec.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Recs != null && message.Recs.length) - for (var i = 0; i < message.Recs.length; ++i) - $root.gamehall.GameRec.encode(message.Recs[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.Ver != null && Object.hasOwnProperty.call(message, "Ver")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Ver); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.GameId); - return writer; - }; - - /** - * Encodes the specified SCGetGameRec message, length delimited. Does not implicitly {@link gamehall.SCGetGameRec.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGetGameRec - * @static - * @param {gamehall.ISCGetGameRec} message SCGetGameRec message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetGameRec.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGetGameRec message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGetGameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGetGameRec} SCGetGameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetGameRec.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGetGameRec(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.Recs && message.Recs.length)) - message.Recs = []; - message.Recs.push($root.gamehall.GameRec.decode(reader, reader.uint32())); - break; - } - case 2: { - message.Ver = reader.int32(); - break; - } - case 3: { - message.GameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGetGameRec message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGetGameRec - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGetGameRec} SCGetGameRec - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetGameRec.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGetGameRec message. - * @function verify - * @memberof gamehall.SCGetGameRec - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGetGameRec.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Recs != null && message.hasOwnProperty("Recs")) { - if (!Array.isArray(message.Recs)) - return "Recs: array expected"; - for (var i = 0; i < message.Recs.length; ++i) { - var error = $root.gamehall.GameRec.verify(message.Recs[i]); - if (error) - return "Recs." + error; - } - } - if (message.Ver != null && message.hasOwnProperty("Ver")) - if (!$util.isInteger(message.Ver)) - return "Ver: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - return null; - }; - - /** - * Creates a SCGetGameRec message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGetGameRec - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGetGameRec} SCGetGameRec - */ - SCGetGameRec.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGetGameRec) - return object; - var message = new $root.gamehall.SCGetGameRec(); - if (object.Recs) { - if (!Array.isArray(object.Recs)) - throw TypeError(".gamehall.SCGetGameRec.Recs: array expected"); - message.Recs = []; - for (var i = 0; i < object.Recs.length; ++i) { - if (typeof object.Recs[i] !== "object") - throw TypeError(".gamehall.SCGetGameRec.Recs: object expected"); - message.Recs[i] = $root.gamehall.GameRec.fromObject(object.Recs[i]); - } - } - if (object.Ver != null) - message.Ver = object.Ver | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - return message; - }; - - /** - * Creates a plain object from a SCGetGameRec message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGetGameRec - * @static - * @param {gamehall.SCGetGameRec} message SCGetGameRec - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGetGameRec.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Recs = []; - if (options.defaults) { - object.Ver = 0; - object.GameId = 0; - } - if (message.Recs && message.Recs.length) { - object.Recs = []; - for (var j = 0; j < message.Recs.length; ++j) - object.Recs[j] = $root.gamehall.GameRec.toObject(message.Recs[j], options); - } - if (message.Ver != null && message.hasOwnProperty("Ver")) - object.Ver = message.Ver; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - return object; - }; - - /** - * Converts this SCGetGameRec to JSON. - * @function toJSON - * @memberof gamehall.SCGetGameRec - * @instance - * @returns {Object.} JSON object - */ - SCGetGameRec.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGetGameRec - * @function getTypeUrl - * @memberof gamehall.SCGetGameRec - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGetGameRec.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGetGameRec"; - }; - - return SCGetGameRec; - })(); - - gamehall.CSShareSuc = (function() { - - /** - * Properties of a CSShareSuc. - * @memberof gamehall - * @interface ICSShareSuc - * @property {number|null} [ShareType] CSShareSuc ShareType - */ - - /** - * Constructs a new CSShareSuc. - * @memberof gamehall - * @classdesc Represents a CSShareSuc. - * @implements ICSShareSuc - * @constructor - * @param {gamehall.ICSShareSuc=} [properties] Properties to set - */ - function CSShareSuc(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSShareSuc ShareType. - * @member {number} ShareType - * @memberof gamehall.CSShareSuc - * @instance - */ - CSShareSuc.prototype.ShareType = 0; - - /** - * Creates a new CSShareSuc instance using the specified properties. - * @function create - * @memberof gamehall.CSShareSuc - * @static - * @param {gamehall.ICSShareSuc=} [properties] Properties to set - * @returns {gamehall.CSShareSuc} CSShareSuc instance - */ - CSShareSuc.create = function create(properties) { - return new CSShareSuc(properties); - }; - - /** - * Encodes the specified CSShareSuc message. Does not implicitly {@link gamehall.CSShareSuc.verify|verify} messages. - * @function encode - * @memberof gamehall.CSShareSuc - * @static - * @param {gamehall.ICSShareSuc} message CSShareSuc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSShareSuc.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShareType != null && Object.hasOwnProperty.call(message, "ShareType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShareType); - return writer; - }; - - /** - * Encodes the specified CSShareSuc message, length delimited. Does not implicitly {@link gamehall.CSShareSuc.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSShareSuc - * @static - * @param {gamehall.ICSShareSuc} message CSShareSuc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSShareSuc.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSShareSuc message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSShareSuc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSShareSuc} CSShareSuc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSShareSuc.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSShareSuc(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShareType = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSShareSuc message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSShareSuc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSShareSuc} CSShareSuc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSShareSuc.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSShareSuc message. - * @function verify - * @memberof gamehall.CSShareSuc - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSShareSuc.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShareType != null && message.hasOwnProperty("ShareType")) - if (!$util.isInteger(message.ShareType)) - return "ShareType: integer expected"; - return null; - }; - - /** - * Creates a CSShareSuc message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSShareSuc - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSShareSuc} CSShareSuc - */ - CSShareSuc.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSShareSuc) - return object; - var message = new $root.gamehall.CSShareSuc(); - if (object.ShareType != null) - message.ShareType = object.ShareType | 0; - return message; - }; - - /** - * Creates a plain object from a CSShareSuc message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSShareSuc - * @static - * @param {gamehall.CSShareSuc} message CSShareSuc - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSShareSuc.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.ShareType = 0; - if (message.ShareType != null && message.hasOwnProperty("ShareType")) - object.ShareType = message.ShareType; - return object; - }; - - /** - * Converts this CSShareSuc to JSON. - * @function toJSON - * @memberof gamehall.CSShareSuc - * @instance - * @returns {Object.} JSON object - */ - CSShareSuc.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSShareSuc - * @function getTypeUrl - * @memberof gamehall.CSShareSuc - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSShareSuc.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSShareSuc"; - }; - - return CSShareSuc; - })(); - - gamehall.SCShareSuc = (function() { - - /** - * Properties of a SCShareSuc. - * @memberof gamehall - * @interface ISCShareSuc - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCShareSuc OpRetCode - */ - - /** - * Constructs a new SCShareSuc. - * @memberof gamehall - * @classdesc Represents a SCShareSuc. - * @implements ISCShareSuc - * @constructor - * @param {gamehall.ISCShareSuc=} [properties] Properties to set - */ - function SCShareSuc(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCShareSuc OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCShareSuc - * @instance - */ - SCShareSuc.prototype.OpRetCode = 0; - - /** - * Creates a new SCShareSuc instance using the specified properties. - * @function create - * @memberof gamehall.SCShareSuc - * @static - * @param {gamehall.ISCShareSuc=} [properties] Properties to set - * @returns {gamehall.SCShareSuc} SCShareSuc instance - */ - SCShareSuc.create = function create(properties) { - return new SCShareSuc(properties); - }; - - /** - * Encodes the specified SCShareSuc message. Does not implicitly {@link gamehall.SCShareSuc.verify|verify} messages. - * @function encode - * @memberof gamehall.SCShareSuc - * @static - * @param {gamehall.ISCShareSuc} message SCShareSuc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCShareSuc.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCShareSuc message, length delimited. Does not implicitly {@link gamehall.SCShareSuc.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCShareSuc - * @static - * @param {gamehall.ISCShareSuc} message SCShareSuc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCShareSuc.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCShareSuc message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCShareSuc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCShareSuc} SCShareSuc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCShareSuc.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCShareSuc(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCShareSuc message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCShareSuc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCShareSuc} SCShareSuc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCShareSuc.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCShareSuc message. - * @function verify - * @memberof gamehall.SCShareSuc - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCShareSuc.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCShareSuc message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCShareSuc - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCShareSuc} SCShareSuc - */ - SCShareSuc.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCShareSuc) - return object; - var message = new $root.gamehall.SCShareSuc(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCShareSuc message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCShareSuc - * @static - * @param {gamehall.SCShareSuc} message SCShareSuc - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCShareSuc.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCShareSuc to JSON. - * @function toJSON - * @memberof gamehall.SCShareSuc - * @instance - * @returns {Object.} JSON object - */ - SCShareSuc.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCShareSuc - * @function getTypeUrl - * @memberof gamehall.SCShareSuc - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCShareSuc.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCShareSuc"; - }; - - return SCShareSuc; - })(); - - gamehall.CSForceStart = (function() { - - /** - * Properties of a CSForceStart. - * @memberof gamehall - * @interface ICSForceStart - */ - - /** - * Constructs a new CSForceStart. - * @memberof gamehall - * @classdesc Represents a CSForceStart. - * @implements ICSForceStart - * @constructor - * @param {gamehall.ICSForceStart=} [properties] Properties to set - */ - function CSForceStart(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSForceStart instance using the specified properties. - * @function create - * @memberof gamehall.CSForceStart - * @static - * @param {gamehall.ICSForceStart=} [properties] Properties to set - * @returns {gamehall.CSForceStart} CSForceStart instance - */ - CSForceStart.create = function create(properties) { - return new CSForceStart(properties); - }; - - /** - * Encodes the specified CSForceStart message. Does not implicitly {@link gamehall.CSForceStart.verify|verify} messages. - * @function encode - * @memberof gamehall.CSForceStart - * @static - * @param {gamehall.ICSForceStart} message CSForceStart message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSForceStart.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSForceStart message, length delimited. Does not implicitly {@link gamehall.CSForceStart.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSForceStart - * @static - * @param {gamehall.ICSForceStart} message CSForceStart message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSForceStart.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSForceStart message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSForceStart - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSForceStart} CSForceStart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSForceStart.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSForceStart(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSForceStart message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSForceStart - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSForceStart} CSForceStart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSForceStart.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSForceStart message. - * @function verify - * @memberof gamehall.CSForceStart - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSForceStart.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSForceStart message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSForceStart - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSForceStart} CSForceStart - */ - CSForceStart.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSForceStart) - return object; - return new $root.gamehall.CSForceStart(); - }; - - /** - * Creates a plain object from a CSForceStart message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSForceStart - * @static - * @param {gamehall.CSForceStart} message CSForceStart - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSForceStart.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSForceStart to JSON. - * @function toJSON - * @memberof gamehall.CSForceStart - * @instance - * @returns {Object.} JSON object - */ - CSForceStart.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSForceStart - * @function getTypeUrl - * @memberof gamehall.CSForceStart - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSForceStart.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSForceStart"; - }; - - return CSForceStart; - })(); - - gamehall.SCForceStart = (function() { - - /** - * Properties of a SCForceStart. - * @memberof gamehall - * @interface ISCForceStart - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCForceStart OpRetCode - */ - - /** - * Constructs a new SCForceStart. - * @memberof gamehall - * @classdesc Represents a SCForceStart. - * @implements ISCForceStart - * @constructor - * @param {gamehall.ISCForceStart=} [properties] Properties to set - */ - function SCForceStart(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCForceStart OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCForceStart - * @instance - */ - SCForceStart.prototype.OpRetCode = 0; - - /** - * Creates a new SCForceStart instance using the specified properties. - * @function create - * @memberof gamehall.SCForceStart - * @static - * @param {gamehall.ISCForceStart=} [properties] Properties to set - * @returns {gamehall.SCForceStart} SCForceStart instance - */ - SCForceStart.create = function create(properties) { - return new SCForceStart(properties); - }; - - /** - * Encodes the specified SCForceStart message. Does not implicitly {@link gamehall.SCForceStart.verify|verify} messages. - * @function encode - * @memberof gamehall.SCForceStart - * @static - * @param {gamehall.ISCForceStart} message SCForceStart message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCForceStart.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCForceStart message, length delimited. Does not implicitly {@link gamehall.SCForceStart.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCForceStart - * @static - * @param {gamehall.ISCForceStart} message SCForceStart message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCForceStart.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCForceStart message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCForceStart - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCForceStart} SCForceStart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCForceStart.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCForceStart(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCForceStart message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCForceStart - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCForceStart} SCForceStart - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCForceStart.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCForceStart message. - * @function verify - * @memberof gamehall.SCForceStart - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCForceStart.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCForceStart message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCForceStart - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCForceStart} SCForceStart - */ - SCForceStart.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCForceStart) - return object; - var message = new $root.gamehall.SCForceStart(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCForceStart message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCForceStart - * @static - * @param {gamehall.SCForceStart} message SCForceStart - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCForceStart.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCForceStart to JSON. - * @function toJSON - * @memberof gamehall.SCForceStart - * @instance - * @returns {Object.} JSON object - */ - SCForceStart.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCForceStart - * @function getTypeUrl - * @memberof gamehall.SCForceStart - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCForceStart.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCForceStart"; - }; - - return SCForceStart; - })(); - - gamehall.CSInviteRobot = (function() { - - /** - * Properties of a CSInviteRobot. - * @memberof gamehall - * @interface ICSInviteRobot - * @property {number|null} [GameId] CSInviteRobot GameId - * @property {boolean|null} [IsAgent] CSInviteRobot IsAgent - */ - - /** - * Constructs a new CSInviteRobot. - * @memberof gamehall - * @classdesc Represents a CSInviteRobot. - * @implements ICSInviteRobot - * @constructor - * @param {gamehall.ICSInviteRobot=} [properties] Properties to set - */ - function CSInviteRobot(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSInviteRobot GameId. - * @member {number} GameId - * @memberof gamehall.CSInviteRobot - * @instance - */ - CSInviteRobot.prototype.GameId = 0; - - /** - * CSInviteRobot IsAgent. - * @member {boolean} IsAgent - * @memberof gamehall.CSInviteRobot - * @instance - */ - CSInviteRobot.prototype.IsAgent = false; - - /** - * Creates a new CSInviteRobot instance using the specified properties. - * @function create - * @memberof gamehall.CSInviteRobot - * @static - * @param {gamehall.ICSInviteRobot=} [properties] Properties to set - * @returns {gamehall.CSInviteRobot} CSInviteRobot instance - */ - CSInviteRobot.create = function create(properties) { - return new CSInviteRobot(properties); - }; - - /** - * Encodes the specified CSInviteRobot message. Does not implicitly {@link gamehall.CSInviteRobot.verify|verify} messages. - * @function encode - * @memberof gamehall.CSInviteRobot - * @static - * @param {gamehall.ICSInviteRobot} message CSInviteRobot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSInviteRobot.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.IsAgent != null && Object.hasOwnProperty.call(message, "IsAgent")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.IsAgent); - return writer; - }; - - /** - * Encodes the specified CSInviteRobot message, length delimited. Does not implicitly {@link gamehall.CSInviteRobot.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSInviteRobot - * @static - * @param {gamehall.ICSInviteRobot} message CSInviteRobot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSInviteRobot.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSInviteRobot message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSInviteRobot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSInviteRobot} CSInviteRobot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSInviteRobot.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSInviteRobot(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.IsAgent = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSInviteRobot message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSInviteRobot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSInviteRobot} CSInviteRobot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSInviteRobot.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSInviteRobot message. - * @function verify - * @memberof gamehall.CSInviteRobot - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSInviteRobot.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.IsAgent != null && message.hasOwnProperty("IsAgent")) - if (typeof message.IsAgent !== "boolean") - return "IsAgent: boolean expected"; - return null; - }; - - /** - * Creates a CSInviteRobot message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSInviteRobot - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSInviteRobot} CSInviteRobot - */ - CSInviteRobot.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSInviteRobot) - return object; - var message = new $root.gamehall.CSInviteRobot(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.IsAgent != null) - message.IsAgent = Boolean(object.IsAgent); - return message; - }; - - /** - * Creates a plain object from a CSInviteRobot message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSInviteRobot - * @static - * @param {gamehall.CSInviteRobot} message CSInviteRobot - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSInviteRobot.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameId = 0; - object.IsAgent = false; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.IsAgent != null && message.hasOwnProperty("IsAgent")) - object.IsAgent = message.IsAgent; - return object; - }; - - /** - * Converts this CSInviteRobot to JSON. - * @function toJSON - * @memberof gamehall.CSInviteRobot - * @instance - * @returns {Object.} JSON object - */ - CSInviteRobot.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSInviteRobot - * @function getTypeUrl - * @memberof gamehall.CSInviteRobot - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSInviteRobot.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSInviteRobot"; - }; - - return CSInviteRobot; - })(); - - gamehall.CSPlayerSwithFlag = (function() { - - /** - * Properties of a CSPlayerSwithFlag. - * @memberof gamehall - * @interface ICSPlayerSwithFlag - * @property {number|null} [Flag] CSPlayerSwithFlag Flag - * @property {number|null} [Mark] CSPlayerSwithFlag Mark - */ - - /** - * Constructs a new CSPlayerSwithFlag. - * @memberof gamehall - * @classdesc Represents a CSPlayerSwithFlag. - * @implements ICSPlayerSwithFlag - * @constructor - * @param {gamehall.ICSPlayerSwithFlag=} [properties] Properties to set - */ - function CSPlayerSwithFlag(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSPlayerSwithFlag Flag. - * @member {number} Flag - * @memberof gamehall.CSPlayerSwithFlag - * @instance - */ - CSPlayerSwithFlag.prototype.Flag = 0; - - /** - * CSPlayerSwithFlag Mark. - * @member {number} Mark - * @memberof gamehall.CSPlayerSwithFlag - * @instance - */ - CSPlayerSwithFlag.prototype.Mark = 0; - - /** - * Creates a new CSPlayerSwithFlag instance using the specified properties. - * @function create - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {gamehall.ICSPlayerSwithFlag=} [properties] Properties to set - * @returns {gamehall.CSPlayerSwithFlag} CSPlayerSwithFlag instance - */ - CSPlayerSwithFlag.create = function create(properties) { - return new CSPlayerSwithFlag(properties); - }; - - /** - * Encodes the specified CSPlayerSwithFlag message. Does not implicitly {@link gamehall.CSPlayerSwithFlag.verify|verify} messages. - * @function encode - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {gamehall.ICSPlayerSwithFlag} message CSPlayerSwithFlag message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSPlayerSwithFlag.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Flag != null && Object.hasOwnProperty.call(message, "Flag")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Flag); - if (message.Mark != null && Object.hasOwnProperty.call(message, "Mark")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Mark); - return writer; - }; - - /** - * Encodes the specified CSPlayerSwithFlag message, length delimited. Does not implicitly {@link gamehall.CSPlayerSwithFlag.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {gamehall.ICSPlayerSwithFlag} message CSPlayerSwithFlag message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSPlayerSwithFlag.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSPlayerSwithFlag message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSPlayerSwithFlag} CSPlayerSwithFlag - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSPlayerSwithFlag.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSPlayerSwithFlag(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Flag = reader.int32(); - break; - } - case 2: { - message.Mark = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSPlayerSwithFlag message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSPlayerSwithFlag} CSPlayerSwithFlag - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSPlayerSwithFlag.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSPlayerSwithFlag message. - * @function verify - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSPlayerSwithFlag.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Flag != null && message.hasOwnProperty("Flag")) - if (!$util.isInteger(message.Flag)) - return "Flag: integer expected"; - if (message.Mark != null && message.hasOwnProperty("Mark")) - if (!$util.isInteger(message.Mark)) - return "Mark: integer expected"; - return null; - }; - - /** - * Creates a CSPlayerSwithFlag message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSPlayerSwithFlag} CSPlayerSwithFlag - */ - CSPlayerSwithFlag.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSPlayerSwithFlag) - return object; - var message = new $root.gamehall.CSPlayerSwithFlag(); - if (object.Flag != null) - message.Flag = object.Flag | 0; - if (object.Mark != null) - message.Mark = object.Mark | 0; - return message; - }; - - /** - * Creates a plain object from a CSPlayerSwithFlag message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {gamehall.CSPlayerSwithFlag} message CSPlayerSwithFlag - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSPlayerSwithFlag.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Flag = 0; - object.Mark = 0; - } - if (message.Flag != null && message.hasOwnProperty("Flag")) - object.Flag = message.Flag; - if (message.Mark != null && message.hasOwnProperty("Mark")) - object.Mark = message.Mark; - return object; - }; - - /** - * Converts this CSPlayerSwithFlag to JSON. - * @function toJSON - * @memberof gamehall.CSPlayerSwithFlag - * @instance - * @returns {Object.} JSON object - */ - CSPlayerSwithFlag.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSPlayerSwithFlag - * @function getTypeUrl - * @memberof gamehall.CSPlayerSwithFlag - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSPlayerSwithFlag.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSPlayerSwithFlag"; - }; - - return CSPlayerSwithFlag; - })(); - - gamehall.CSShopBuy = (function() { - - /** - * Properties of a CSShopBuy. - * @memberof gamehall - * @interface ICSShopBuy - * @property {number|null} [Id] CSShopBuy Id - * @property {number|null} [Count] CSShopBuy Count - */ - - /** - * Constructs a new CSShopBuy. - * @memberof gamehall - * @classdesc Represents a CSShopBuy. - * @implements ICSShopBuy - * @constructor - * @param {gamehall.ICSShopBuy=} [properties] Properties to set - */ - function CSShopBuy(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSShopBuy Id. - * @member {number} Id - * @memberof gamehall.CSShopBuy - * @instance - */ - CSShopBuy.prototype.Id = 0; - - /** - * CSShopBuy Count. - * @member {number} Count - * @memberof gamehall.CSShopBuy - * @instance - */ - CSShopBuy.prototype.Count = 0; - - /** - * Creates a new CSShopBuy instance using the specified properties. - * @function create - * @memberof gamehall.CSShopBuy - * @static - * @param {gamehall.ICSShopBuy=} [properties] Properties to set - * @returns {gamehall.CSShopBuy} CSShopBuy instance - */ - CSShopBuy.create = function create(properties) { - return new CSShopBuy(properties); - }; - - /** - * Encodes the specified CSShopBuy message. Does not implicitly {@link gamehall.CSShopBuy.verify|verify} messages. - * @function encode - * @memberof gamehall.CSShopBuy - * @static - * @param {gamehall.ICSShopBuy} message CSShopBuy message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSShopBuy.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.Count != null && Object.hasOwnProperty.call(message, "Count")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Count); - return writer; - }; - - /** - * Encodes the specified CSShopBuy message, length delimited. Does not implicitly {@link gamehall.CSShopBuy.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSShopBuy - * @static - * @param {gamehall.ICSShopBuy} message CSShopBuy message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSShopBuy.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSShopBuy message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSShopBuy - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSShopBuy} CSShopBuy - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSShopBuy.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSShopBuy(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.Count = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSShopBuy message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSShopBuy - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSShopBuy} CSShopBuy - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSShopBuy.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSShopBuy message. - * @function verify - * @memberof gamehall.CSShopBuy - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSShopBuy.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.Count != null && message.hasOwnProperty("Count")) - if (!$util.isInteger(message.Count)) - return "Count: integer expected"; - return null; - }; - - /** - * Creates a CSShopBuy message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSShopBuy - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSShopBuy} CSShopBuy - */ - CSShopBuy.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSShopBuy) - return object; - var message = new $root.gamehall.CSShopBuy(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.Count != null) - message.Count = object.Count | 0; - return message; - }; - - /** - * Creates a plain object from a CSShopBuy message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSShopBuy - * @static - * @param {gamehall.CSShopBuy} message CSShopBuy - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSShopBuy.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Id = 0; - object.Count = 0; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.Count != null && message.hasOwnProperty("Count")) - object.Count = message.Count; - return object; - }; - - /** - * Converts this CSShopBuy to JSON. - * @function toJSON - * @memberof gamehall.CSShopBuy - * @instance - * @returns {Object.} JSON object - */ - CSShopBuy.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSShopBuy - * @function getTypeUrl - * @memberof gamehall.CSShopBuy - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSShopBuy.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSShopBuy"; - }; - - return CSShopBuy; - })(); - - gamehall.SCShopBuy = (function() { - - /** - * Properties of a SCShopBuy. - * @memberof gamehall - * @interface ISCShopBuy - * @property {number|null} [Id] SCShopBuy Id - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCShopBuy OpRetCode - * @property {number|null} [CostType] SCShopBuy CostType - * @property {number|null} [CostNum] SCShopBuy CostNum - * @property {number|null} [GainType] SCShopBuy GainType - * @property {number|null} [GainNum] SCShopBuy GainNum - */ - - /** - * Constructs a new SCShopBuy. - * @memberof gamehall - * @classdesc Represents a SCShopBuy. - * @implements ISCShopBuy - * @constructor - * @param {gamehall.ISCShopBuy=} [properties] Properties to set - */ - function SCShopBuy(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCShopBuy Id. - * @member {number} Id - * @memberof gamehall.SCShopBuy - * @instance - */ - SCShopBuy.prototype.Id = 0; - - /** - * SCShopBuy OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCShopBuy - * @instance - */ - SCShopBuy.prototype.OpRetCode = 0; - - /** - * SCShopBuy CostType. - * @member {number} CostType - * @memberof gamehall.SCShopBuy - * @instance - */ - SCShopBuy.prototype.CostType = 0; - - /** - * SCShopBuy CostNum. - * @member {number} CostNum - * @memberof gamehall.SCShopBuy - * @instance - */ - SCShopBuy.prototype.CostNum = 0; - - /** - * SCShopBuy GainType. - * @member {number} GainType - * @memberof gamehall.SCShopBuy - * @instance - */ - SCShopBuy.prototype.GainType = 0; - - /** - * SCShopBuy GainNum. - * @member {number} GainNum - * @memberof gamehall.SCShopBuy - * @instance - */ - SCShopBuy.prototype.GainNum = 0; - - /** - * Creates a new SCShopBuy instance using the specified properties. - * @function create - * @memberof gamehall.SCShopBuy - * @static - * @param {gamehall.ISCShopBuy=} [properties] Properties to set - * @returns {gamehall.SCShopBuy} SCShopBuy instance - */ - SCShopBuy.create = function create(properties) { - return new SCShopBuy(properties); - }; - - /** - * Encodes the specified SCShopBuy message. Does not implicitly {@link gamehall.SCShopBuy.verify|verify} messages. - * @function encode - * @memberof gamehall.SCShopBuy - * @static - * @param {gamehall.ISCShopBuy} message SCShopBuy message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCShopBuy.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpRetCode); - if (message.CostType != null && Object.hasOwnProperty.call(message, "CostType")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.CostType); - if (message.CostNum != null && Object.hasOwnProperty.call(message, "CostNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.CostNum); - if (message.GainType != null && Object.hasOwnProperty.call(message, "GainType")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.GainType); - if (message.GainNum != null && Object.hasOwnProperty.call(message, "GainNum")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.GainNum); - return writer; - }; - - /** - * Encodes the specified SCShopBuy message, length delimited. Does not implicitly {@link gamehall.SCShopBuy.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCShopBuy - * @static - * @param {gamehall.ISCShopBuy} message SCShopBuy message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCShopBuy.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCShopBuy message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCShopBuy - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCShopBuy} SCShopBuy - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCShopBuy.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCShopBuy(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.OpRetCode = reader.int32(); - break; - } - case 3: { - message.CostType = reader.int32(); - break; - } - case 4: { - message.CostNum = reader.int32(); - break; - } - case 5: { - message.GainType = reader.int32(); - break; - } - case 6: { - message.GainNum = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCShopBuy message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCShopBuy - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCShopBuy} SCShopBuy - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCShopBuy.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCShopBuy message. - * @function verify - * @memberof gamehall.SCShopBuy - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCShopBuy.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.CostType != null && message.hasOwnProperty("CostType")) - if (!$util.isInteger(message.CostType)) - return "CostType: integer expected"; - if (message.CostNum != null && message.hasOwnProperty("CostNum")) - if (!$util.isInteger(message.CostNum)) - return "CostNum: integer expected"; - if (message.GainType != null && message.hasOwnProperty("GainType")) - if (!$util.isInteger(message.GainType)) - return "GainType: integer expected"; - if (message.GainNum != null && message.hasOwnProperty("GainNum")) - if (!$util.isInteger(message.GainNum)) - return "GainNum: integer expected"; - return null; - }; - - /** - * Creates a SCShopBuy message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCShopBuy - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCShopBuy} SCShopBuy - */ - SCShopBuy.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCShopBuy) - return object; - var message = new $root.gamehall.SCShopBuy(); - if (object.Id != null) - message.Id = object.Id | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.CostType != null) - message.CostType = object.CostType | 0; - if (object.CostNum != null) - message.CostNum = object.CostNum | 0; - if (object.GainType != null) - message.GainType = object.GainType | 0; - if (object.GainNum != null) - message.GainNum = object.GainNum | 0; - return message; - }; - - /** - * Creates a plain object from a SCShopBuy message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCShopBuy - * @static - * @param {gamehall.SCShopBuy} message SCShopBuy - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCShopBuy.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Id = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.CostType = 0; - object.CostNum = 0; - object.GainType = 0; - object.GainNum = 0; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.CostType != null && message.hasOwnProperty("CostType")) - object.CostType = message.CostType; - if (message.CostNum != null && message.hasOwnProperty("CostNum")) - object.CostNum = message.CostNum; - if (message.GainType != null && message.hasOwnProperty("GainType")) - object.GainType = message.GainType; - if (message.GainNum != null && message.hasOwnProperty("GainNum")) - object.GainNum = message.GainNum; - return object; - }; - - /** - * Converts this SCShopBuy to JSON. - * @function toJSON - * @memberof gamehall.SCShopBuy - * @instance - * @returns {Object.} JSON object - */ - SCShopBuy.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCShopBuy - * @function getTypeUrl - * @memberof gamehall.SCShopBuy - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCShopBuy.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCShopBuy"; - }; - - return SCShopBuy; - })(); - - gamehall.CSJoinGame = (function() { - - /** - * Properties of a CSJoinGame. - * @memberof gamehall - * @interface ICSJoinGame - * @property {number|null} [MsgType] CSJoinGame MsgType - * @property {number|null} [SnId] CSJoinGame SnId - * @property {number|null} [Pos] CSJoinGame Pos - * @property {boolean|null} [Agree] CSJoinGame Agree - */ - - /** - * Constructs a new CSJoinGame. - * @memberof gamehall - * @classdesc Represents a CSJoinGame. - * @implements ICSJoinGame - * @constructor - * @param {gamehall.ICSJoinGame=} [properties] Properties to set - */ - function CSJoinGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSJoinGame MsgType. - * @member {number} MsgType - * @memberof gamehall.CSJoinGame - * @instance - */ - CSJoinGame.prototype.MsgType = 0; - - /** - * CSJoinGame SnId. - * @member {number} SnId - * @memberof gamehall.CSJoinGame - * @instance - */ - CSJoinGame.prototype.SnId = 0; - - /** - * CSJoinGame Pos. - * @member {number} Pos - * @memberof gamehall.CSJoinGame - * @instance - */ - CSJoinGame.prototype.Pos = 0; - - /** - * CSJoinGame Agree. - * @member {boolean} Agree - * @memberof gamehall.CSJoinGame - * @instance - */ - CSJoinGame.prototype.Agree = false; - - /** - * Creates a new CSJoinGame instance using the specified properties. - * @function create - * @memberof gamehall.CSJoinGame - * @static - * @param {gamehall.ICSJoinGame=} [properties] Properties to set - * @returns {gamehall.CSJoinGame} CSJoinGame instance - */ - CSJoinGame.create = function create(properties) { - return new CSJoinGame(properties); - }; - - /** - * Encodes the specified CSJoinGame message. Does not implicitly {@link gamehall.CSJoinGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSJoinGame - * @static - * @param {gamehall.ICSJoinGame} message CSJoinGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSJoinGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.MsgType != null && Object.hasOwnProperty.call(message, "MsgType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.MsgType); - if (message.SnId != null && Object.hasOwnProperty.call(message, "SnId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.SnId); - if (message.Pos != null && Object.hasOwnProperty.call(message, "Pos")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Pos); - if (message.Agree != null && Object.hasOwnProperty.call(message, "Agree")) - writer.uint32(/* id 4, wireType 0 =*/32).bool(message.Agree); - return writer; - }; - - /** - * Encodes the specified CSJoinGame message, length delimited. Does not implicitly {@link gamehall.CSJoinGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSJoinGame - * @static - * @param {gamehall.ICSJoinGame} message CSJoinGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSJoinGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSJoinGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSJoinGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSJoinGame} CSJoinGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSJoinGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSJoinGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.MsgType = reader.int32(); - break; - } - case 2: { - message.SnId = reader.int32(); - break; - } - case 3: { - message.Pos = reader.int32(); - break; - } - case 4: { - message.Agree = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSJoinGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSJoinGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSJoinGame} CSJoinGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSJoinGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSJoinGame message. - * @function verify - * @memberof gamehall.CSJoinGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSJoinGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.MsgType != null && message.hasOwnProperty("MsgType")) - if (!$util.isInteger(message.MsgType)) - return "MsgType: integer expected"; - if (message.SnId != null && message.hasOwnProperty("SnId")) - if (!$util.isInteger(message.SnId)) - return "SnId: integer expected"; - if (message.Pos != null && message.hasOwnProperty("Pos")) - if (!$util.isInteger(message.Pos)) - return "Pos: integer expected"; - if (message.Agree != null && message.hasOwnProperty("Agree")) - if (typeof message.Agree !== "boolean") - return "Agree: boolean expected"; - return null; - }; - - /** - * Creates a CSJoinGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSJoinGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSJoinGame} CSJoinGame - */ - CSJoinGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSJoinGame) - return object; - var message = new $root.gamehall.CSJoinGame(); - if (object.MsgType != null) - message.MsgType = object.MsgType | 0; - if (object.SnId != null) - message.SnId = object.SnId | 0; - if (object.Pos != null) - message.Pos = object.Pos | 0; - if (object.Agree != null) - message.Agree = Boolean(object.Agree); - return message; - }; - - /** - * Creates a plain object from a CSJoinGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSJoinGame - * @static - * @param {gamehall.CSJoinGame} message CSJoinGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSJoinGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.MsgType = 0; - object.SnId = 0; - object.Pos = 0; - object.Agree = false; - } - if (message.MsgType != null && message.hasOwnProperty("MsgType")) - object.MsgType = message.MsgType; - if (message.SnId != null && message.hasOwnProperty("SnId")) - object.SnId = message.SnId; - if (message.Pos != null && message.hasOwnProperty("Pos")) - object.Pos = message.Pos; - if (message.Agree != null && message.hasOwnProperty("Agree")) - object.Agree = message.Agree; - return object; - }; - - /** - * Converts this CSJoinGame to JSON. - * @function toJSON - * @memberof gamehall.CSJoinGame - * @instance - * @returns {Object.} JSON object - */ - CSJoinGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSJoinGame - * @function getTypeUrl - * @memberof gamehall.CSJoinGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSJoinGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSJoinGame"; - }; - - return CSJoinGame; - })(); - - gamehall.SCJoinGame = (function() { - - /** - * Properties of a SCJoinGame. - * @memberof gamehall - * @interface ISCJoinGame - * @property {number|null} [MsgType] SCJoinGame MsgType - * @property {string|null} [Name] SCJoinGame Name - * @property {number|null} [SnId] SCJoinGame SnId - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCJoinGame OpRetCode - */ - - /** - * Constructs a new SCJoinGame. - * @memberof gamehall - * @classdesc Represents a SCJoinGame. - * @implements ISCJoinGame - * @constructor - * @param {gamehall.ISCJoinGame=} [properties] Properties to set - */ - function SCJoinGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCJoinGame MsgType. - * @member {number} MsgType - * @memberof gamehall.SCJoinGame - * @instance - */ - SCJoinGame.prototype.MsgType = 0; - - /** - * SCJoinGame Name. - * @member {string} Name - * @memberof gamehall.SCJoinGame - * @instance - */ - SCJoinGame.prototype.Name = ""; - - /** - * SCJoinGame SnId. - * @member {number} SnId - * @memberof gamehall.SCJoinGame - * @instance - */ - SCJoinGame.prototype.SnId = 0; - - /** - * SCJoinGame OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCJoinGame - * @instance - */ - SCJoinGame.prototype.OpRetCode = 0; - - /** - * Creates a new SCJoinGame instance using the specified properties. - * @function create - * @memberof gamehall.SCJoinGame - * @static - * @param {gamehall.ISCJoinGame=} [properties] Properties to set - * @returns {gamehall.SCJoinGame} SCJoinGame instance - */ - SCJoinGame.create = function create(properties) { - return new SCJoinGame(properties); - }; - - /** - * Encodes the specified SCJoinGame message. Does not implicitly {@link gamehall.SCJoinGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCJoinGame - * @static - * @param {gamehall.ISCJoinGame} message SCJoinGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCJoinGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.MsgType != null && Object.hasOwnProperty.call(message, "MsgType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.MsgType); - if (message.Name != null && Object.hasOwnProperty.call(message, "Name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.Name); - if (message.SnId != null && Object.hasOwnProperty.call(message, "SnId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.SnId); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCJoinGame message, length delimited. Does not implicitly {@link gamehall.SCJoinGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCJoinGame - * @static - * @param {gamehall.ISCJoinGame} message SCJoinGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCJoinGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCJoinGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCJoinGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCJoinGame} SCJoinGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCJoinGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCJoinGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.MsgType = reader.int32(); - break; - } - case 2: { - message.Name = reader.string(); - break; - } - case 3: { - message.SnId = reader.int32(); - break; - } - case 4: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCJoinGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCJoinGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCJoinGame} SCJoinGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCJoinGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCJoinGame message. - * @function verify - * @memberof gamehall.SCJoinGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCJoinGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.MsgType != null && message.hasOwnProperty("MsgType")) - if (!$util.isInteger(message.MsgType)) - return "MsgType: integer expected"; - if (message.Name != null && message.hasOwnProperty("Name")) - if (!$util.isString(message.Name)) - return "Name: string expected"; - if (message.SnId != null && message.hasOwnProperty("SnId")) - if (!$util.isInteger(message.SnId)) - return "SnId: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCJoinGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCJoinGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCJoinGame} SCJoinGame - */ - SCJoinGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCJoinGame) - return object; - var message = new $root.gamehall.SCJoinGame(); - if (object.MsgType != null) - message.MsgType = object.MsgType | 0; - if (object.Name != null) - message.Name = String(object.Name); - if (object.SnId != null) - message.SnId = object.SnId | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCJoinGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCJoinGame - * @static - * @param {gamehall.SCJoinGame} message SCJoinGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCJoinGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.MsgType = 0; - object.Name = ""; - object.SnId = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - } - if (message.MsgType != null && message.hasOwnProperty("MsgType")) - object.MsgType = message.MsgType; - if (message.Name != null && message.hasOwnProperty("Name")) - object.Name = message.Name; - if (message.SnId != null && message.hasOwnProperty("SnId")) - object.SnId = message.SnId; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCJoinGame to JSON. - * @function toJSON - * @memberof gamehall.SCJoinGame - * @instance - * @returns {Object.} JSON object - */ - SCJoinGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCJoinGame - * @function getTypeUrl - * @memberof gamehall.SCJoinGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCJoinGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCJoinGame"; - }; - - return SCJoinGame; - })(); - - gamehall.CSEnterDgGame = (function() { - - /** - * Properties of a CSEnterDgGame. - * @memberof gamehall - * @interface ICSEnterDgGame - * @property {number|null} [LoginType] CSEnterDgGame LoginType - * @property {number|null} [DgGameId] CSEnterDgGame DgGameId - * @property {string|null} [Domains] CSEnterDgGame Domains - */ - - /** - * Constructs a new CSEnterDgGame. - * @memberof gamehall - * @classdesc Represents a CSEnterDgGame. - * @implements ICSEnterDgGame - * @constructor - * @param {gamehall.ICSEnterDgGame=} [properties] Properties to set - */ - function CSEnterDgGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSEnterDgGame LoginType. - * @member {number} LoginType - * @memberof gamehall.CSEnterDgGame - * @instance - */ - CSEnterDgGame.prototype.LoginType = 0; - - /** - * CSEnterDgGame DgGameId. - * @member {number} DgGameId - * @memberof gamehall.CSEnterDgGame - * @instance - */ - CSEnterDgGame.prototype.DgGameId = 0; - - /** - * CSEnterDgGame Domains. - * @member {string} Domains - * @memberof gamehall.CSEnterDgGame - * @instance - */ - CSEnterDgGame.prototype.Domains = ""; - - /** - * Creates a new CSEnterDgGame instance using the specified properties. - * @function create - * @memberof gamehall.CSEnterDgGame - * @static - * @param {gamehall.ICSEnterDgGame=} [properties] Properties to set - * @returns {gamehall.CSEnterDgGame} CSEnterDgGame instance - */ - CSEnterDgGame.create = function create(properties) { - return new CSEnterDgGame(properties); - }; - - /** - * Encodes the specified CSEnterDgGame message. Does not implicitly {@link gamehall.CSEnterDgGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSEnterDgGame - * @static - * @param {gamehall.ICSEnterDgGame} message CSEnterDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterDgGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.LoginType != null && Object.hasOwnProperty.call(message, "LoginType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.LoginType); - if (message.DgGameId != null && Object.hasOwnProperty.call(message, "DgGameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.DgGameId); - if (message.Domains != null && Object.hasOwnProperty.call(message, "Domains")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.Domains); - return writer; - }; - - /** - * Encodes the specified CSEnterDgGame message, length delimited. Does not implicitly {@link gamehall.CSEnterDgGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSEnterDgGame - * @static - * @param {gamehall.ICSEnterDgGame} message CSEnterDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterDgGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSEnterDgGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSEnterDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSEnterDgGame} CSEnterDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterDgGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSEnterDgGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.LoginType = reader.int32(); - break; - } - case 2: { - message.DgGameId = reader.int32(); - break; - } - case 3: { - message.Domains = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSEnterDgGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSEnterDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSEnterDgGame} CSEnterDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterDgGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSEnterDgGame message. - * @function verify - * @memberof gamehall.CSEnterDgGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSEnterDgGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.LoginType != null && message.hasOwnProperty("LoginType")) - if (!$util.isInteger(message.LoginType)) - return "LoginType: integer expected"; - if (message.DgGameId != null && message.hasOwnProperty("DgGameId")) - if (!$util.isInteger(message.DgGameId)) - return "DgGameId: integer expected"; - if (message.Domains != null && message.hasOwnProperty("Domains")) - if (!$util.isString(message.Domains)) - return "Domains: string expected"; - return null; - }; - - /** - * Creates a CSEnterDgGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSEnterDgGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSEnterDgGame} CSEnterDgGame - */ - CSEnterDgGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSEnterDgGame) - return object; - var message = new $root.gamehall.CSEnterDgGame(); - if (object.LoginType != null) - message.LoginType = object.LoginType | 0; - if (object.DgGameId != null) - message.DgGameId = object.DgGameId | 0; - if (object.Domains != null) - message.Domains = String(object.Domains); - return message; - }; - - /** - * Creates a plain object from a CSEnterDgGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSEnterDgGame - * @static - * @param {gamehall.CSEnterDgGame} message CSEnterDgGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSEnterDgGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.LoginType = 0; - object.DgGameId = 0; - object.Domains = ""; - } - if (message.LoginType != null && message.hasOwnProperty("LoginType")) - object.LoginType = message.LoginType; - if (message.DgGameId != null && message.hasOwnProperty("DgGameId")) - object.DgGameId = message.DgGameId; - if (message.Domains != null && message.hasOwnProperty("Domains")) - object.Domains = message.Domains; - return object; - }; - - /** - * Converts this CSEnterDgGame to JSON. - * @function toJSON - * @memberof gamehall.CSEnterDgGame - * @instance - * @returns {Object.} JSON object - */ - CSEnterDgGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSEnterDgGame - * @function getTypeUrl - * @memberof gamehall.CSEnterDgGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSEnterDgGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSEnterDgGame"; - }; - - return CSEnterDgGame; - })(); - - gamehall.SCEnterDgGame = (function() { - - /** - * Properties of a SCEnterDgGame. - * @memberof gamehall - * @interface ISCEnterDgGame - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCEnterDgGame OpRetCode - * @property {string|null} [LoginUrl] SCEnterDgGame LoginUrl - * @property {string|null} [Token] SCEnterDgGame Token - * @property {number|null} [DgGameId] SCEnterDgGame DgGameId - * @property {number|null} [CodeId] SCEnterDgGame CodeId - * @property {string|null} [Domains] SCEnterDgGame Domains - * @property {Array.|null} [List] SCEnterDgGame List - */ - - /** - * Constructs a new SCEnterDgGame. - * @memberof gamehall - * @classdesc Represents a SCEnterDgGame. - * @implements ISCEnterDgGame - * @constructor - * @param {gamehall.ISCEnterDgGame=} [properties] Properties to set - */ - function SCEnterDgGame(properties) { - this.List = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCEnterDgGame OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.OpRetCode = 0; - - /** - * SCEnterDgGame LoginUrl. - * @member {string} LoginUrl - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.LoginUrl = ""; - - /** - * SCEnterDgGame Token. - * @member {string} Token - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.Token = ""; - - /** - * SCEnterDgGame DgGameId. - * @member {number} DgGameId - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.DgGameId = 0; - - /** - * SCEnterDgGame CodeId. - * @member {number} CodeId - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.CodeId = 0; - - /** - * SCEnterDgGame Domains. - * @member {string} Domains - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.Domains = ""; - - /** - * SCEnterDgGame List. - * @member {Array.} List - * @memberof gamehall.SCEnterDgGame - * @instance - */ - SCEnterDgGame.prototype.List = $util.emptyArray; - - /** - * Creates a new SCEnterDgGame instance using the specified properties. - * @function create - * @memberof gamehall.SCEnterDgGame - * @static - * @param {gamehall.ISCEnterDgGame=} [properties] Properties to set - * @returns {gamehall.SCEnterDgGame} SCEnterDgGame instance - */ - SCEnterDgGame.create = function create(properties) { - return new SCEnterDgGame(properties); - }; - - /** - * Encodes the specified SCEnterDgGame message. Does not implicitly {@link gamehall.SCEnterDgGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCEnterDgGame - * @static - * @param {gamehall.ISCEnterDgGame} message SCEnterDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterDgGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.LoginUrl != null && Object.hasOwnProperty.call(message, "LoginUrl")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.LoginUrl); - if (message.Token != null && Object.hasOwnProperty.call(message, "Token")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.Token); - if (message.DgGameId != null && Object.hasOwnProperty.call(message, "DgGameId")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.DgGameId); - if (message.CodeId != null && Object.hasOwnProperty.call(message, "CodeId")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.CodeId); - if (message.Domains != null && Object.hasOwnProperty.call(message, "Domains")) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.Domains); - if (message.List != null && message.List.length) - for (var i = 0; i < message.List.length; ++i) - writer.uint32(/* id 7, wireType 2 =*/58).string(message.List[i]); - return writer; - }; - - /** - * Encodes the specified SCEnterDgGame message, length delimited. Does not implicitly {@link gamehall.SCEnterDgGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCEnterDgGame - * @static - * @param {gamehall.ISCEnterDgGame} message SCEnterDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterDgGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCEnterDgGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCEnterDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCEnterDgGame} SCEnterDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterDgGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCEnterDgGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.LoginUrl = reader.string(); - break; - } - case 3: { - message.Token = reader.string(); - break; - } - case 4: { - message.DgGameId = reader.int32(); - break; - } - case 5: { - message.CodeId = reader.int32(); - break; - } - case 6: { - message.Domains = reader.string(); - break; - } - case 7: { - if (!(message.List && message.List.length)) - message.List = []; - message.List.push(reader.string()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCEnterDgGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCEnterDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCEnterDgGame} SCEnterDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterDgGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCEnterDgGame message. - * @function verify - * @memberof gamehall.SCEnterDgGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCEnterDgGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.LoginUrl != null && message.hasOwnProperty("LoginUrl")) - if (!$util.isString(message.LoginUrl)) - return "LoginUrl: string expected"; - if (message.Token != null && message.hasOwnProperty("Token")) - if (!$util.isString(message.Token)) - return "Token: string expected"; - if (message.DgGameId != null && message.hasOwnProperty("DgGameId")) - if (!$util.isInteger(message.DgGameId)) - return "DgGameId: integer expected"; - if (message.CodeId != null && message.hasOwnProperty("CodeId")) - if (!$util.isInteger(message.CodeId)) - return "CodeId: integer expected"; - if (message.Domains != null && message.hasOwnProperty("Domains")) - if (!$util.isString(message.Domains)) - return "Domains: string expected"; - if (message.List != null && message.hasOwnProperty("List")) { - if (!Array.isArray(message.List)) - return "List: array expected"; - for (var i = 0; i < message.List.length; ++i) - if (!$util.isString(message.List[i])) - return "List: string[] expected"; - } - return null; - }; - - /** - * Creates a SCEnterDgGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCEnterDgGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCEnterDgGame} SCEnterDgGame - */ - SCEnterDgGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCEnterDgGame) - return object; - var message = new $root.gamehall.SCEnterDgGame(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.LoginUrl != null) - message.LoginUrl = String(object.LoginUrl); - if (object.Token != null) - message.Token = String(object.Token); - if (object.DgGameId != null) - message.DgGameId = object.DgGameId | 0; - if (object.CodeId != null) - message.CodeId = object.CodeId | 0; - if (object.Domains != null) - message.Domains = String(object.Domains); - if (object.List) { - if (!Array.isArray(object.List)) - throw TypeError(".gamehall.SCEnterDgGame.List: array expected"); - message.List = []; - for (var i = 0; i < object.List.length; ++i) - message.List[i] = String(object.List[i]); - } - return message; - }; - - /** - * Creates a plain object from a SCEnterDgGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCEnterDgGame - * @static - * @param {gamehall.SCEnterDgGame} message SCEnterDgGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCEnterDgGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.List = []; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.LoginUrl = ""; - object.Token = ""; - object.DgGameId = 0; - object.CodeId = 0; - object.Domains = ""; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.LoginUrl != null && message.hasOwnProperty("LoginUrl")) - object.LoginUrl = message.LoginUrl; - if (message.Token != null && message.hasOwnProperty("Token")) - object.Token = message.Token; - if (message.DgGameId != null && message.hasOwnProperty("DgGameId")) - object.DgGameId = message.DgGameId; - if (message.CodeId != null && message.hasOwnProperty("CodeId")) - object.CodeId = message.CodeId; - if (message.Domains != null && message.hasOwnProperty("Domains")) - object.Domains = message.Domains; - if (message.List && message.List.length) { - object.List = []; - for (var j = 0; j < message.List.length; ++j) - object.List[j] = message.List[j]; - } - return object; - }; - - /** - * Converts this SCEnterDgGame to JSON. - * @function toJSON - * @memberof gamehall.SCEnterDgGame - * @instance - * @returns {Object.} JSON object - */ - SCEnterDgGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCEnterDgGame - * @function getTypeUrl - * @memberof gamehall.SCEnterDgGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCEnterDgGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCEnterDgGame"; - }; - - return SCEnterDgGame; - })(); - - gamehall.CSLeaveDgGame = (function() { - - /** - * Properties of a CSLeaveDgGame. - * @memberof gamehall - * @interface ICSLeaveDgGame - */ - - /** - * Constructs a new CSLeaveDgGame. - * @memberof gamehall - * @classdesc Represents a CSLeaveDgGame. - * @implements ICSLeaveDgGame - * @constructor - * @param {gamehall.ICSLeaveDgGame=} [properties] Properties to set - */ - function CSLeaveDgGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSLeaveDgGame instance using the specified properties. - * @function create - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {gamehall.ICSLeaveDgGame=} [properties] Properties to set - * @returns {gamehall.CSLeaveDgGame} CSLeaveDgGame instance - */ - CSLeaveDgGame.create = function create(properties) { - return new CSLeaveDgGame(properties); - }; - - /** - * Encodes the specified CSLeaveDgGame message. Does not implicitly {@link gamehall.CSLeaveDgGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {gamehall.ICSLeaveDgGame} message CSLeaveDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveDgGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSLeaveDgGame message, length delimited. Does not implicitly {@link gamehall.CSLeaveDgGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {gamehall.ICSLeaveDgGame} message CSLeaveDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveDgGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSLeaveDgGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSLeaveDgGame} CSLeaveDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveDgGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSLeaveDgGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSLeaveDgGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSLeaveDgGame} CSLeaveDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveDgGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSLeaveDgGame message. - * @function verify - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSLeaveDgGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSLeaveDgGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSLeaveDgGame} CSLeaveDgGame - */ - CSLeaveDgGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSLeaveDgGame) - return object; - return new $root.gamehall.CSLeaveDgGame(); - }; - - /** - * Creates a plain object from a CSLeaveDgGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {gamehall.CSLeaveDgGame} message CSLeaveDgGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSLeaveDgGame.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSLeaveDgGame to JSON. - * @function toJSON - * @memberof gamehall.CSLeaveDgGame - * @instance - * @returns {Object.} JSON object - */ - CSLeaveDgGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSLeaveDgGame - * @function getTypeUrl - * @memberof gamehall.CSLeaveDgGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSLeaveDgGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSLeaveDgGame"; - }; - - return CSLeaveDgGame; - })(); - - gamehall.SCLeaveDgGame = (function() { - - /** - * Properties of a SCLeaveDgGame. - * @memberof gamehall - * @interface ISCLeaveDgGame - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCLeaveDgGame OpRetCode - */ - - /** - * Constructs a new SCLeaveDgGame. - * @memberof gamehall - * @classdesc Represents a SCLeaveDgGame. - * @implements ISCLeaveDgGame - * @constructor - * @param {gamehall.ISCLeaveDgGame=} [properties] Properties to set - */ - function SCLeaveDgGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLeaveDgGame OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCLeaveDgGame - * @instance - */ - SCLeaveDgGame.prototype.OpRetCode = 0; - - /** - * Creates a new SCLeaveDgGame instance using the specified properties. - * @function create - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {gamehall.ISCLeaveDgGame=} [properties] Properties to set - * @returns {gamehall.SCLeaveDgGame} SCLeaveDgGame instance - */ - SCLeaveDgGame.create = function create(properties) { - return new SCLeaveDgGame(properties); - }; - - /** - * Encodes the specified SCLeaveDgGame message. Does not implicitly {@link gamehall.SCLeaveDgGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {gamehall.ISCLeaveDgGame} message SCLeaveDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveDgGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCLeaveDgGame message, length delimited. Does not implicitly {@link gamehall.SCLeaveDgGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {gamehall.ISCLeaveDgGame} message SCLeaveDgGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveDgGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLeaveDgGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLeaveDgGame} SCLeaveDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveDgGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLeaveDgGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLeaveDgGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLeaveDgGame} SCLeaveDgGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveDgGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLeaveDgGame message. - * @function verify - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLeaveDgGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCLeaveDgGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLeaveDgGame} SCLeaveDgGame - */ - SCLeaveDgGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLeaveDgGame) - return object; - var message = new $root.gamehall.SCLeaveDgGame(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCLeaveDgGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {gamehall.SCLeaveDgGame} message SCLeaveDgGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLeaveDgGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCLeaveDgGame to JSON. - * @function toJSON - * @memberof gamehall.SCLeaveDgGame - * @instance - * @returns {Object.} JSON object - */ - SCLeaveDgGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLeaveDgGame - * @function getTypeUrl - * @memberof gamehall.SCLeaveDgGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLeaveDgGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLeaveDgGame"; - }; - - return SCLeaveDgGame; - })(); - - gamehall.CSThridAccountStatistic = (function() { - - /** - * Properties of a CSThridAccountStatistic. - * @memberof gamehall - * @interface ICSThridAccountStatistic - * @property {number|null} [ReqId] CSThridAccountStatistic ReqId - */ - - /** - * Constructs a new CSThridAccountStatistic. - * @memberof gamehall - * @classdesc Represents a CSThridAccountStatistic. - * @implements ICSThridAccountStatistic - * @constructor - * @param {gamehall.ICSThridAccountStatistic=} [properties] Properties to set - */ - function CSThridAccountStatistic(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSThridAccountStatistic ReqId. - * @member {number} ReqId - * @memberof gamehall.CSThridAccountStatistic - * @instance - */ - CSThridAccountStatistic.prototype.ReqId = 0; - - /** - * Creates a new CSThridAccountStatistic instance using the specified properties. - * @function create - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {gamehall.ICSThridAccountStatistic=} [properties] Properties to set - * @returns {gamehall.CSThridAccountStatistic} CSThridAccountStatistic instance - */ - CSThridAccountStatistic.create = function create(properties) { - return new CSThridAccountStatistic(properties); - }; - - /** - * Encodes the specified CSThridAccountStatistic message. Does not implicitly {@link gamehall.CSThridAccountStatistic.verify|verify} messages. - * @function encode - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {gamehall.ICSThridAccountStatistic} message CSThridAccountStatistic message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridAccountStatistic.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ReqId != null && Object.hasOwnProperty.call(message, "ReqId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ReqId); - return writer; - }; - - /** - * Encodes the specified CSThridAccountStatistic message, length delimited. Does not implicitly {@link gamehall.CSThridAccountStatistic.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {gamehall.ICSThridAccountStatistic} message CSThridAccountStatistic message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridAccountStatistic.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSThridAccountStatistic message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSThridAccountStatistic} CSThridAccountStatistic - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridAccountStatistic.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSThridAccountStatistic(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ReqId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSThridAccountStatistic message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSThridAccountStatistic} CSThridAccountStatistic - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridAccountStatistic.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSThridAccountStatistic message. - * @function verify - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSThridAccountStatistic.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ReqId != null && message.hasOwnProperty("ReqId")) - if (!$util.isInteger(message.ReqId)) - return "ReqId: integer expected"; - return null; - }; - - /** - * Creates a CSThridAccountStatistic message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSThridAccountStatistic} CSThridAccountStatistic - */ - CSThridAccountStatistic.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSThridAccountStatistic) - return object; - var message = new $root.gamehall.CSThridAccountStatistic(); - if (object.ReqId != null) - message.ReqId = object.ReqId | 0; - return message; - }; - - /** - * Creates a plain object from a CSThridAccountStatistic message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {gamehall.CSThridAccountStatistic} message CSThridAccountStatistic - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSThridAccountStatistic.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.ReqId = 0; - if (message.ReqId != null && message.hasOwnProperty("ReqId")) - object.ReqId = message.ReqId; - return object; - }; - - /** - * Converts this CSThridAccountStatistic to JSON. - * @function toJSON - * @memberof gamehall.CSThridAccountStatistic - * @instance - * @returns {Object.} JSON object - */ - CSThridAccountStatistic.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSThridAccountStatistic - * @function getTypeUrl - * @memberof gamehall.CSThridAccountStatistic - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSThridAccountStatistic.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSThridAccountStatistic"; - }; - - return CSThridAccountStatistic; - })(); - - gamehall.ThridAccount = (function() { - - /** - * Properties of a ThridAccount. - * @memberof gamehall - * @interface IThridAccount - * @property {number|null} [ThridPlatformId] ThridAccount ThridPlatformId - * @property {string|null} [Name] ThridAccount Name - * @property {number|null} [Status] ThridAccount Status - * @property {number|Long|null} [Balance] ThridAccount Balance - */ - - /** - * Constructs a new ThridAccount. - * @memberof gamehall - * @classdesc Represents a ThridAccount. - * @implements IThridAccount - * @constructor - * @param {gamehall.IThridAccount=} [properties] Properties to set - */ - function ThridAccount(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ThridAccount ThridPlatformId. - * @member {number} ThridPlatformId - * @memberof gamehall.ThridAccount - * @instance - */ - ThridAccount.prototype.ThridPlatformId = 0; - - /** - * ThridAccount Name. - * @member {string} Name - * @memberof gamehall.ThridAccount - * @instance - */ - ThridAccount.prototype.Name = ""; - - /** - * ThridAccount Status. - * @member {number} Status - * @memberof gamehall.ThridAccount - * @instance - */ - ThridAccount.prototype.Status = 0; - - /** - * ThridAccount Balance. - * @member {number|Long} Balance - * @memberof gamehall.ThridAccount - * @instance - */ - ThridAccount.prototype.Balance = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new ThridAccount instance using the specified properties. - * @function create - * @memberof gamehall.ThridAccount - * @static - * @param {gamehall.IThridAccount=} [properties] Properties to set - * @returns {gamehall.ThridAccount} ThridAccount instance - */ - ThridAccount.create = function create(properties) { - return new ThridAccount(properties); - }; - - /** - * Encodes the specified ThridAccount message. Does not implicitly {@link gamehall.ThridAccount.verify|verify} messages. - * @function encode - * @memberof gamehall.ThridAccount - * @static - * @param {gamehall.IThridAccount} message ThridAccount message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ThridAccount.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ThridPlatformId != null && Object.hasOwnProperty.call(message, "ThridPlatformId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ThridPlatformId); - if (message.Name != null && Object.hasOwnProperty.call(message, "Name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.Name); - if (message.Status != null && Object.hasOwnProperty.call(message, "Status")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Status); - if (message.Balance != null && Object.hasOwnProperty.call(message, "Balance")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.Balance); - return writer; - }; - - /** - * Encodes the specified ThridAccount message, length delimited. Does not implicitly {@link gamehall.ThridAccount.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.ThridAccount - * @static - * @param {gamehall.IThridAccount} message ThridAccount message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ThridAccount.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ThridAccount message from the specified reader or buffer. - * @function decode - * @memberof gamehall.ThridAccount - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.ThridAccount} ThridAccount - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ThridAccount.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.ThridAccount(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ThridPlatformId = reader.int32(); - break; - } - case 2: { - message.Name = reader.string(); - break; - } - case 3: { - message.Status = reader.int32(); - break; - } - case 4: { - message.Balance = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ThridAccount message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.ThridAccount - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.ThridAccount} ThridAccount - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ThridAccount.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ThridAccount message. - * @function verify - * @memberof gamehall.ThridAccount - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ThridAccount.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ThridPlatformId != null && message.hasOwnProperty("ThridPlatformId")) - if (!$util.isInteger(message.ThridPlatformId)) - return "ThridPlatformId: integer expected"; - if (message.Name != null && message.hasOwnProperty("Name")) - if (!$util.isString(message.Name)) - return "Name: string expected"; - if (message.Status != null && message.hasOwnProperty("Status")) - if (!$util.isInteger(message.Status)) - return "Status: integer expected"; - if (message.Balance != null && message.hasOwnProperty("Balance")) - if (!$util.isInteger(message.Balance) && !(message.Balance && $util.isInteger(message.Balance.low) && $util.isInteger(message.Balance.high))) - return "Balance: integer|Long expected"; - return null; - }; - - /** - * Creates a ThridAccount message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.ThridAccount - * @static - * @param {Object.} object Plain object - * @returns {gamehall.ThridAccount} ThridAccount - */ - ThridAccount.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.ThridAccount) - return object; - var message = new $root.gamehall.ThridAccount(); - if (object.ThridPlatformId != null) - message.ThridPlatformId = object.ThridPlatformId | 0; - if (object.Name != null) - message.Name = String(object.Name); - if (object.Status != null) - message.Status = object.Status | 0; - if (object.Balance != null) - if ($util.Long) - (message.Balance = $util.Long.fromValue(object.Balance)).unsigned = false; - else if (typeof object.Balance === "string") - message.Balance = parseInt(object.Balance, 10); - else if (typeof object.Balance === "number") - message.Balance = object.Balance; - else if (typeof object.Balance === "object") - message.Balance = new $util.LongBits(object.Balance.low >>> 0, object.Balance.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a ThridAccount message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.ThridAccount - * @static - * @param {gamehall.ThridAccount} message ThridAccount - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ThridAccount.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ThridPlatformId = 0; - object.Name = ""; - object.Status = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Balance = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Balance = options.longs === String ? "0" : 0; - } - if (message.ThridPlatformId != null && message.hasOwnProperty("ThridPlatformId")) - object.ThridPlatformId = message.ThridPlatformId; - if (message.Name != null && message.hasOwnProperty("Name")) - object.Name = message.Name; - if (message.Status != null && message.hasOwnProperty("Status")) - object.Status = message.Status; - if (message.Balance != null && message.hasOwnProperty("Balance")) - if (typeof message.Balance === "number") - object.Balance = options.longs === String ? String(message.Balance) : message.Balance; - else - object.Balance = options.longs === String ? $util.Long.prototype.toString.call(message.Balance) : options.longs === Number ? new $util.LongBits(message.Balance.low >>> 0, message.Balance.high >>> 0).toNumber() : message.Balance; - return object; - }; - - /** - * Converts this ThridAccount to JSON. - * @function toJSON - * @memberof gamehall.ThridAccount - * @instance - * @returns {Object.} JSON object - */ - ThridAccount.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ThridAccount - * @function getTypeUrl - * @memberof gamehall.ThridAccount - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ThridAccount.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.ThridAccount"; - }; - - return ThridAccount; - })(); - - gamehall.SCThridAccountStatistic = (function() { - - /** - * Properties of a SCThridAccountStatistic. - * @memberof gamehall - * @interface ISCThridAccountStatistic - * @property {number|null} [ReqId] SCThridAccountStatistic ReqId - * @property {Array.|null} [Accounts] SCThridAccountStatistic Accounts - */ - - /** - * Constructs a new SCThridAccountStatistic. - * @memberof gamehall - * @classdesc Represents a SCThridAccountStatistic. - * @implements ISCThridAccountStatistic - * @constructor - * @param {gamehall.ISCThridAccountStatistic=} [properties] Properties to set - */ - function SCThridAccountStatistic(properties) { - this.Accounts = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCThridAccountStatistic ReqId. - * @member {number} ReqId - * @memberof gamehall.SCThridAccountStatistic - * @instance - */ - SCThridAccountStatistic.prototype.ReqId = 0; - - /** - * SCThridAccountStatistic Accounts. - * @member {Array.} Accounts - * @memberof gamehall.SCThridAccountStatistic - * @instance - */ - SCThridAccountStatistic.prototype.Accounts = $util.emptyArray; - - /** - * Creates a new SCThridAccountStatistic instance using the specified properties. - * @function create - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {gamehall.ISCThridAccountStatistic=} [properties] Properties to set - * @returns {gamehall.SCThridAccountStatistic} SCThridAccountStatistic instance - */ - SCThridAccountStatistic.create = function create(properties) { - return new SCThridAccountStatistic(properties); - }; - - /** - * Encodes the specified SCThridAccountStatistic message. Does not implicitly {@link gamehall.SCThridAccountStatistic.verify|verify} messages. - * @function encode - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {gamehall.ISCThridAccountStatistic} message SCThridAccountStatistic message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridAccountStatistic.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ReqId != null && Object.hasOwnProperty.call(message, "ReqId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ReqId); - if (message.Accounts != null && message.Accounts.length) - for (var i = 0; i < message.Accounts.length; ++i) - $root.gamehall.ThridAccount.encode(message.Accounts[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCThridAccountStatistic message, length delimited. Does not implicitly {@link gamehall.SCThridAccountStatistic.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {gamehall.ISCThridAccountStatistic} message SCThridAccountStatistic message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridAccountStatistic.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCThridAccountStatistic message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCThridAccountStatistic} SCThridAccountStatistic - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridAccountStatistic.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCThridAccountStatistic(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ReqId = reader.int32(); - break; - } - case 2: { - if (!(message.Accounts && message.Accounts.length)) - message.Accounts = []; - message.Accounts.push($root.gamehall.ThridAccount.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCThridAccountStatistic message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCThridAccountStatistic} SCThridAccountStatistic - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridAccountStatistic.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCThridAccountStatistic message. - * @function verify - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCThridAccountStatistic.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ReqId != null && message.hasOwnProperty("ReqId")) - if (!$util.isInteger(message.ReqId)) - return "ReqId: integer expected"; - if (message.Accounts != null && message.hasOwnProperty("Accounts")) { - if (!Array.isArray(message.Accounts)) - return "Accounts: array expected"; - for (var i = 0; i < message.Accounts.length; ++i) { - var error = $root.gamehall.ThridAccount.verify(message.Accounts[i]); - if (error) - return "Accounts." + error; - } - } - return null; - }; - - /** - * Creates a SCThridAccountStatistic message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCThridAccountStatistic} SCThridAccountStatistic - */ - SCThridAccountStatistic.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCThridAccountStatistic) - return object; - var message = new $root.gamehall.SCThridAccountStatistic(); - if (object.ReqId != null) - message.ReqId = object.ReqId | 0; - if (object.Accounts) { - if (!Array.isArray(object.Accounts)) - throw TypeError(".gamehall.SCThridAccountStatistic.Accounts: array expected"); - message.Accounts = []; - for (var i = 0; i < object.Accounts.length; ++i) { - if (typeof object.Accounts[i] !== "object") - throw TypeError(".gamehall.SCThridAccountStatistic.Accounts: object expected"); - message.Accounts[i] = $root.gamehall.ThridAccount.fromObject(object.Accounts[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCThridAccountStatistic message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {gamehall.SCThridAccountStatistic} message SCThridAccountStatistic - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCThridAccountStatistic.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Accounts = []; - if (options.defaults) - object.ReqId = 0; - if (message.ReqId != null && message.hasOwnProperty("ReqId")) - object.ReqId = message.ReqId; - if (message.Accounts && message.Accounts.length) { - object.Accounts = []; - for (var j = 0; j < message.Accounts.length; ++j) - object.Accounts[j] = $root.gamehall.ThridAccount.toObject(message.Accounts[j], options); - } - return object; - }; - - /** - * Converts this SCThridAccountStatistic to JSON. - * @function toJSON - * @memberof gamehall.SCThridAccountStatistic - * @instance - * @returns {Object.} JSON object - */ - SCThridAccountStatistic.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCThridAccountStatistic - * @function getTypeUrl - * @memberof gamehall.SCThridAccountStatistic - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCThridAccountStatistic.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCThridAccountStatistic"; - }; - - return SCThridAccountStatistic; - })(); - - gamehall.CSThridAccountTransfer = (function() { - - /** - * Properties of a CSThridAccountTransfer. - * @memberof gamehall - * @interface ICSThridAccountTransfer - * @property {number|null} [FromId] CSThridAccountTransfer FromId - * @property {number|null} [ToId] CSThridAccountTransfer ToId - * @property {number|Long|null} [Amount] CSThridAccountTransfer Amount - */ - - /** - * Constructs a new CSThridAccountTransfer. - * @memberof gamehall - * @classdesc Represents a CSThridAccountTransfer. - * @implements ICSThridAccountTransfer - * @constructor - * @param {gamehall.ICSThridAccountTransfer=} [properties] Properties to set - */ - function CSThridAccountTransfer(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSThridAccountTransfer FromId. - * @member {number} FromId - * @memberof gamehall.CSThridAccountTransfer - * @instance - */ - CSThridAccountTransfer.prototype.FromId = 0; - - /** - * CSThridAccountTransfer ToId. - * @member {number} ToId - * @memberof gamehall.CSThridAccountTransfer - * @instance - */ - CSThridAccountTransfer.prototype.ToId = 0; - - /** - * CSThridAccountTransfer Amount. - * @member {number|Long} Amount - * @memberof gamehall.CSThridAccountTransfer - * @instance - */ - CSThridAccountTransfer.prototype.Amount = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new CSThridAccountTransfer instance using the specified properties. - * @function create - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {gamehall.ICSThridAccountTransfer=} [properties] Properties to set - * @returns {gamehall.CSThridAccountTransfer} CSThridAccountTransfer instance - */ - CSThridAccountTransfer.create = function create(properties) { - return new CSThridAccountTransfer(properties); - }; - - /** - * Encodes the specified CSThridAccountTransfer message. Does not implicitly {@link gamehall.CSThridAccountTransfer.verify|verify} messages. - * @function encode - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {gamehall.ICSThridAccountTransfer} message CSThridAccountTransfer message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridAccountTransfer.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.FromId != null && Object.hasOwnProperty.call(message, "FromId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.FromId); - if (message.ToId != null && Object.hasOwnProperty.call(message, "ToId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.ToId); - if (message.Amount != null && Object.hasOwnProperty.call(message, "Amount")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Amount); - return writer; - }; - - /** - * Encodes the specified CSThridAccountTransfer message, length delimited. Does not implicitly {@link gamehall.CSThridAccountTransfer.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {gamehall.ICSThridAccountTransfer} message CSThridAccountTransfer message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridAccountTransfer.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSThridAccountTransfer message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSThridAccountTransfer} CSThridAccountTransfer - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridAccountTransfer.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSThridAccountTransfer(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.FromId = reader.int32(); - break; - } - case 2: { - message.ToId = reader.int32(); - break; - } - case 3: { - message.Amount = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSThridAccountTransfer message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSThridAccountTransfer} CSThridAccountTransfer - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridAccountTransfer.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSThridAccountTransfer message. - * @function verify - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSThridAccountTransfer.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.FromId != null && message.hasOwnProperty("FromId")) - if (!$util.isInteger(message.FromId)) - return "FromId: integer expected"; - if (message.ToId != null && message.hasOwnProperty("ToId")) - if (!$util.isInteger(message.ToId)) - return "ToId: integer expected"; - if (message.Amount != null && message.hasOwnProperty("Amount")) - if (!$util.isInteger(message.Amount) && !(message.Amount && $util.isInteger(message.Amount.low) && $util.isInteger(message.Amount.high))) - return "Amount: integer|Long expected"; - return null; - }; - - /** - * Creates a CSThridAccountTransfer message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSThridAccountTransfer} CSThridAccountTransfer - */ - CSThridAccountTransfer.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSThridAccountTransfer) - return object; - var message = new $root.gamehall.CSThridAccountTransfer(); - if (object.FromId != null) - message.FromId = object.FromId | 0; - if (object.ToId != null) - message.ToId = object.ToId | 0; - if (object.Amount != null) - if ($util.Long) - (message.Amount = $util.Long.fromValue(object.Amount)).unsigned = false; - else if (typeof object.Amount === "string") - message.Amount = parseInt(object.Amount, 10); - else if (typeof object.Amount === "number") - message.Amount = object.Amount; - else if (typeof object.Amount === "object") - message.Amount = new $util.LongBits(object.Amount.low >>> 0, object.Amount.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a CSThridAccountTransfer message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {gamehall.CSThridAccountTransfer} message CSThridAccountTransfer - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSThridAccountTransfer.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.FromId = 0; - object.ToId = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Amount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Amount = options.longs === String ? "0" : 0; - } - if (message.FromId != null && message.hasOwnProperty("FromId")) - object.FromId = message.FromId; - if (message.ToId != null && message.hasOwnProperty("ToId")) - object.ToId = message.ToId; - if (message.Amount != null && message.hasOwnProperty("Amount")) - if (typeof message.Amount === "number") - object.Amount = options.longs === String ? String(message.Amount) : message.Amount; - else - object.Amount = options.longs === String ? $util.Long.prototype.toString.call(message.Amount) : options.longs === Number ? new $util.LongBits(message.Amount.low >>> 0, message.Amount.high >>> 0).toNumber() : message.Amount; - return object; - }; - - /** - * Converts this CSThridAccountTransfer to JSON. - * @function toJSON - * @memberof gamehall.CSThridAccountTransfer - * @instance - * @returns {Object.} JSON object - */ - CSThridAccountTransfer.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSThridAccountTransfer - * @function getTypeUrl - * @memberof gamehall.CSThridAccountTransfer - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSThridAccountTransfer.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSThridAccountTransfer"; - }; - - return CSThridAccountTransfer; - })(); - - gamehall.SCThridAccountTransfer = (function() { - - /** - * Properties of a SCThridAccountTransfer. - * @memberof gamehall - * @interface ISCThridAccountTransfer - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCThridAccountTransfer OpRetCode - * @property {Array.|null} [Accounts] SCThridAccountTransfer Accounts - */ - - /** - * Constructs a new SCThridAccountTransfer. - * @memberof gamehall - * @classdesc Represents a SCThridAccountTransfer. - * @implements ISCThridAccountTransfer - * @constructor - * @param {gamehall.ISCThridAccountTransfer=} [properties] Properties to set - */ - function SCThridAccountTransfer(properties) { - this.Accounts = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCThridAccountTransfer OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCThridAccountTransfer - * @instance - */ - SCThridAccountTransfer.prototype.OpRetCode = 0; - - /** - * SCThridAccountTransfer Accounts. - * @member {Array.} Accounts - * @memberof gamehall.SCThridAccountTransfer - * @instance - */ - SCThridAccountTransfer.prototype.Accounts = $util.emptyArray; - - /** - * Creates a new SCThridAccountTransfer instance using the specified properties. - * @function create - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {gamehall.ISCThridAccountTransfer=} [properties] Properties to set - * @returns {gamehall.SCThridAccountTransfer} SCThridAccountTransfer instance - */ - SCThridAccountTransfer.create = function create(properties) { - return new SCThridAccountTransfer(properties); - }; - - /** - * Encodes the specified SCThridAccountTransfer message. Does not implicitly {@link gamehall.SCThridAccountTransfer.verify|verify} messages. - * @function encode - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {gamehall.ISCThridAccountTransfer} message SCThridAccountTransfer message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridAccountTransfer.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.Accounts != null && message.Accounts.length) - for (var i = 0; i < message.Accounts.length; ++i) - $root.gamehall.ThridAccount.encode(message.Accounts[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCThridAccountTransfer message, length delimited. Does not implicitly {@link gamehall.SCThridAccountTransfer.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {gamehall.ISCThridAccountTransfer} message SCThridAccountTransfer message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridAccountTransfer.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCThridAccountTransfer message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCThridAccountTransfer} SCThridAccountTransfer - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridAccountTransfer.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCThridAccountTransfer(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - if (!(message.Accounts && message.Accounts.length)) - message.Accounts = []; - message.Accounts.push($root.gamehall.ThridAccount.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCThridAccountTransfer message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCThridAccountTransfer} SCThridAccountTransfer - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridAccountTransfer.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCThridAccountTransfer message. - * @function verify - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCThridAccountTransfer.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.Accounts != null && message.hasOwnProperty("Accounts")) { - if (!Array.isArray(message.Accounts)) - return "Accounts: array expected"; - for (var i = 0; i < message.Accounts.length; ++i) { - var error = $root.gamehall.ThridAccount.verify(message.Accounts[i]); - if (error) - return "Accounts." + error; - } - } - return null; - }; - - /** - * Creates a SCThridAccountTransfer message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCThridAccountTransfer} SCThridAccountTransfer - */ - SCThridAccountTransfer.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCThridAccountTransfer) - return object; - var message = new $root.gamehall.SCThridAccountTransfer(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.Accounts) { - if (!Array.isArray(object.Accounts)) - throw TypeError(".gamehall.SCThridAccountTransfer.Accounts: array expected"); - message.Accounts = []; - for (var i = 0; i < object.Accounts.length; ++i) { - if (typeof object.Accounts[i] !== "object") - throw TypeError(".gamehall.SCThridAccountTransfer.Accounts: object expected"); - message.Accounts[i] = $root.gamehall.ThridAccount.fromObject(object.Accounts[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCThridAccountTransfer message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {gamehall.SCThridAccountTransfer} message SCThridAccountTransfer - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCThridAccountTransfer.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Accounts = []; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.Accounts && message.Accounts.length) { - object.Accounts = []; - for (var j = 0; j < message.Accounts.length; ++j) - object.Accounts[j] = $root.gamehall.ThridAccount.toObject(message.Accounts[j], options); - } - return object; - }; - - /** - * Converts this SCThridAccountTransfer to JSON. - * @function toJSON - * @memberof gamehall.SCThridAccountTransfer - * @instance - * @returns {Object.} JSON object - */ - SCThridAccountTransfer.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCThridAccountTransfer - * @function getTypeUrl - * @memberof gamehall.SCThridAccountTransfer - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCThridAccountTransfer.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCThridAccountTransfer"; - }; - - return SCThridAccountTransfer; - })(); - - gamehall.CSEnterThridGame = (function() { - - /** - * Properties of a CSEnterThridGame. - * @memberof gamehall - * @interface ICSEnterThridGame - * @property {number|null} [ThridGameId] CSEnterThridGame ThridGameId - */ - - /** - * Constructs a new CSEnterThridGame. - * @memberof gamehall - * @classdesc Represents a CSEnterThridGame. - * @implements ICSEnterThridGame - * @constructor - * @param {gamehall.ICSEnterThridGame=} [properties] Properties to set - */ - function CSEnterThridGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSEnterThridGame ThridGameId. - * @member {number} ThridGameId - * @memberof gamehall.CSEnterThridGame - * @instance - */ - CSEnterThridGame.prototype.ThridGameId = 0; - - /** - * Creates a new CSEnterThridGame instance using the specified properties. - * @function create - * @memberof gamehall.CSEnterThridGame - * @static - * @param {gamehall.ICSEnterThridGame=} [properties] Properties to set - * @returns {gamehall.CSEnterThridGame} CSEnterThridGame instance - */ - CSEnterThridGame.create = function create(properties) { - return new CSEnterThridGame(properties); - }; - - /** - * Encodes the specified CSEnterThridGame message. Does not implicitly {@link gamehall.CSEnterThridGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSEnterThridGame - * @static - * @param {gamehall.ICSEnterThridGame} message CSEnterThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterThridGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ThridGameId != null && Object.hasOwnProperty.call(message, "ThridGameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.ThridGameId); - return writer; - }; - - /** - * Encodes the specified CSEnterThridGame message, length delimited. Does not implicitly {@link gamehall.CSEnterThridGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSEnterThridGame - * @static - * @param {gamehall.ICSEnterThridGame} message CSEnterThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterThridGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSEnterThridGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSEnterThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSEnterThridGame} CSEnterThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterThridGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSEnterThridGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 2: { - message.ThridGameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSEnterThridGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSEnterThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSEnterThridGame} CSEnterThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterThridGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSEnterThridGame message. - * @function verify - * @memberof gamehall.CSEnterThridGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSEnterThridGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ThridGameId != null && message.hasOwnProperty("ThridGameId")) - if (!$util.isInteger(message.ThridGameId)) - return "ThridGameId: integer expected"; - return null; - }; - - /** - * Creates a CSEnterThridGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSEnterThridGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSEnterThridGame} CSEnterThridGame - */ - CSEnterThridGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSEnterThridGame) - return object; - var message = new $root.gamehall.CSEnterThridGame(); - if (object.ThridGameId != null) - message.ThridGameId = object.ThridGameId | 0; - return message; - }; - - /** - * Creates a plain object from a CSEnterThridGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSEnterThridGame - * @static - * @param {gamehall.CSEnterThridGame} message CSEnterThridGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSEnterThridGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.ThridGameId = 0; - if (message.ThridGameId != null && message.hasOwnProperty("ThridGameId")) - object.ThridGameId = message.ThridGameId; - return object; - }; - - /** - * Converts this CSEnterThridGame to JSON. - * @function toJSON - * @memberof gamehall.CSEnterThridGame - * @instance - * @returns {Object.} JSON object - */ - CSEnterThridGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSEnterThridGame - * @function getTypeUrl - * @memberof gamehall.CSEnterThridGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSEnterThridGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSEnterThridGame"; - }; - - return CSEnterThridGame; - })(); - - gamehall.SCEnterThridGame = (function() { - - /** - * Properties of a SCEnterThridGame. - * @memberof gamehall - * @interface ISCEnterThridGame - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCEnterThridGame OpRetCode - * @property {string|null} [EnterUrl] SCEnterThridGame EnterUrl - * @property {number|null} [ScreenOrientationType] SCEnterThridGame ScreenOrientationType - * @property {number|null} [ThridGameId] SCEnterThridGame ThridGameId - */ - - /** - * Constructs a new SCEnterThridGame. - * @memberof gamehall - * @classdesc Represents a SCEnterThridGame. - * @implements ISCEnterThridGame - * @constructor - * @param {gamehall.ISCEnterThridGame=} [properties] Properties to set - */ - function SCEnterThridGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCEnterThridGame OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCEnterThridGame - * @instance - */ - SCEnterThridGame.prototype.OpRetCode = 0; - - /** - * SCEnterThridGame EnterUrl. - * @member {string} EnterUrl - * @memberof gamehall.SCEnterThridGame - * @instance - */ - SCEnterThridGame.prototype.EnterUrl = ""; - - /** - * SCEnterThridGame ScreenOrientationType. - * @member {number} ScreenOrientationType - * @memberof gamehall.SCEnterThridGame - * @instance - */ - SCEnterThridGame.prototype.ScreenOrientationType = 0; - - /** - * SCEnterThridGame ThridGameId. - * @member {number} ThridGameId - * @memberof gamehall.SCEnterThridGame - * @instance - */ - SCEnterThridGame.prototype.ThridGameId = 0; - - /** - * Creates a new SCEnterThridGame instance using the specified properties. - * @function create - * @memberof gamehall.SCEnterThridGame - * @static - * @param {gamehall.ISCEnterThridGame=} [properties] Properties to set - * @returns {gamehall.SCEnterThridGame} SCEnterThridGame instance - */ - SCEnterThridGame.create = function create(properties) { - return new SCEnterThridGame(properties); - }; - - /** - * Encodes the specified SCEnterThridGame message. Does not implicitly {@link gamehall.SCEnterThridGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCEnterThridGame - * @static - * @param {gamehall.ISCEnterThridGame} message SCEnterThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterThridGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.EnterUrl != null && Object.hasOwnProperty.call(message, "EnterUrl")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.EnterUrl); - if (message.ScreenOrientationType != null && Object.hasOwnProperty.call(message, "ScreenOrientationType")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.ScreenOrientationType); - if (message.ThridGameId != null && Object.hasOwnProperty.call(message, "ThridGameId")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.ThridGameId); - return writer; - }; - - /** - * Encodes the specified SCEnterThridGame message, length delimited. Does not implicitly {@link gamehall.SCEnterThridGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCEnterThridGame - * @static - * @param {gamehall.ISCEnterThridGame} message SCEnterThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterThridGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCEnterThridGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCEnterThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCEnterThridGame} SCEnterThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterThridGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCEnterThridGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.EnterUrl = reader.string(); - break; - } - case 3: { - message.ScreenOrientationType = reader.int32(); - break; - } - case 4: { - message.ThridGameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCEnterThridGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCEnterThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCEnterThridGame} SCEnterThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterThridGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCEnterThridGame message. - * @function verify - * @memberof gamehall.SCEnterThridGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCEnterThridGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.EnterUrl != null && message.hasOwnProperty("EnterUrl")) - if (!$util.isString(message.EnterUrl)) - return "EnterUrl: string expected"; - if (message.ScreenOrientationType != null && message.hasOwnProperty("ScreenOrientationType")) - if (!$util.isInteger(message.ScreenOrientationType)) - return "ScreenOrientationType: integer expected"; - if (message.ThridGameId != null && message.hasOwnProperty("ThridGameId")) - if (!$util.isInteger(message.ThridGameId)) - return "ThridGameId: integer expected"; - return null; - }; - - /** - * Creates a SCEnterThridGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCEnterThridGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCEnterThridGame} SCEnterThridGame - */ - SCEnterThridGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCEnterThridGame) - return object; - var message = new $root.gamehall.SCEnterThridGame(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.EnterUrl != null) - message.EnterUrl = String(object.EnterUrl); - if (object.ScreenOrientationType != null) - message.ScreenOrientationType = object.ScreenOrientationType | 0; - if (object.ThridGameId != null) - message.ThridGameId = object.ThridGameId | 0; - return message; - }; - - /** - * Creates a plain object from a SCEnterThridGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCEnterThridGame - * @static - * @param {gamehall.SCEnterThridGame} message SCEnterThridGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCEnterThridGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.EnterUrl = ""; - object.ScreenOrientationType = 0; - object.ThridGameId = 0; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.EnterUrl != null && message.hasOwnProperty("EnterUrl")) - object.EnterUrl = message.EnterUrl; - if (message.ScreenOrientationType != null && message.hasOwnProperty("ScreenOrientationType")) - object.ScreenOrientationType = message.ScreenOrientationType; - if (message.ThridGameId != null && message.hasOwnProperty("ThridGameId")) - object.ThridGameId = message.ThridGameId; - return object; - }; - - /** - * Converts this SCEnterThridGame to JSON. - * @function toJSON - * @memberof gamehall.SCEnterThridGame - * @instance - * @returns {Object.} JSON object - */ - SCEnterThridGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCEnterThridGame - * @function getTypeUrl - * @memberof gamehall.SCEnterThridGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCEnterThridGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCEnterThridGame"; - }; - - return SCEnterThridGame; - })(); - - gamehall.CSLeaveThridGame = (function() { - - /** - * Properties of a CSLeaveThridGame. - * @memberof gamehall - * @interface ICSLeaveThridGame - */ - - /** - * Constructs a new CSLeaveThridGame. - * @memberof gamehall - * @classdesc Represents a CSLeaveThridGame. - * @implements ICSLeaveThridGame - * @constructor - * @param {gamehall.ICSLeaveThridGame=} [properties] Properties to set - */ - function CSLeaveThridGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSLeaveThridGame instance using the specified properties. - * @function create - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {gamehall.ICSLeaveThridGame=} [properties] Properties to set - * @returns {gamehall.CSLeaveThridGame} CSLeaveThridGame instance - */ - CSLeaveThridGame.create = function create(properties) { - return new CSLeaveThridGame(properties); - }; - - /** - * Encodes the specified CSLeaveThridGame message. Does not implicitly {@link gamehall.CSLeaveThridGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {gamehall.ICSLeaveThridGame} message CSLeaveThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveThridGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSLeaveThridGame message, length delimited. Does not implicitly {@link gamehall.CSLeaveThridGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {gamehall.ICSLeaveThridGame} message CSLeaveThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLeaveThridGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSLeaveThridGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSLeaveThridGame} CSLeaveThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveThridGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSLeaveThridGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSLeaveThridGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSLeaveThridGame} CSLeaveThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLeaveThridGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSLeaveThridGame message. - * @function verify - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSLeaveThridGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSLeaveThridGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSLeaveThridGame} CSLeaveThridGame - */ - CSLeaveThridGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSLeaveThridGame) - return object; - return new $root.gamehall.CSLeaveThridGame(); - }; - - /** - * Creates a plain object from a CSLeaveThridGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {gamehall.CSLeaveThridGame} message CSLeaveThridGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSLeaveThridGame.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSLeaveThridGame to JSON. - * @function toJSON - * @memberof gamehall.CSLeaveThridGame - * @instance - * @returns {Object.} JSON object - */ - CSLeaveThridGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSLeaveThridGame - * @function getTypeUrl - * @memberof gamehall.CSLeaveThridGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSLeaveThridGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSLeaveThridGame"; - }; - - return CSLeaveThridGame; - })(); - - gamehall.SCLeaveThridGame = (function() { - - /** - * Properties of a SCLeaveThridGame. - * @memberof gamehall - * @interface ISCLeaveThridGame - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCLeaveThridGame OpRetCode - */ - - /** - * Constructs a new SCLeaveThridGame. - * @memberof gamehall - * @classdesc Represents a SCLeaveThridGame. - * @implements ISCLeaveThridGame - * @constructor - * @param {gamehall.ISCLeaveThridGame=} [properties] Properties to set - */ - function SCLeaveThridGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLeaveThridGame OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCLeaveThridGame - * @instance - */ - SCLeaveThridGame.prototype.OpRetCode = 0; - - /** - * Creates a new SCLeaveThridGame instance using the specified properties. - * @function create - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {gamehall.ISCLeaveThridGame=} [properties] Properties to set - * @returns {gamehall.SCLeaveThridGame} SCLeaveThridGame instance - */ - SCLeaveThridGame.create = function create(properties) { - return new SCLeaveThridGame(properties); - }; - - /** - * Encodes the specified SCLeaveThridGame message. Does not implicitly {@link gamehall.SCLeaveThridGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {gamehall.ISCLeaveThridGame} message SCLeaveThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveThridGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCLeaveThridGame message, length delimited. Does not implicitly {@link gamehall.SCLeaveThridGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {gamehall.ISCLeaveThridGame} message SCLeaveThridGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLeaveThridGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLeaveThridGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLeaveThridGame} SCLeaveThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveThridGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLeaveThridGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLeaveThridGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLeaveThridGame} SCLeaveThridGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLeaveThridGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLeaveThridGame message. - * @function verify - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLeaveThridGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCLeaveThridGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLeaveThridGame} SCLeaveThridGame - */ - SCLeaveThridGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLeaveThridGame) - return object; - var message = new $root.gamehall.SCLeaveThridGame(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCLeaveThridGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {gamehall.SCLeaveThridGame} message SCLeaveThridGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLeaveThridGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCLeaveThridGame to JSON. - * @function toJSON - * @memberof gamehall.SCLeaveThridGame - * @instance - * @returns {Object.} JSON object - */ - SCLeaveThridGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLeaveThridGame - * @function getTypeUrl - * @memberof gamehall.SCLeaveThridGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLeaveThridGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLeaveThridGame"; - }; - - return SCLeaveThridGame; - })(); - - gamehall.CSThridGameList = (function() { - - /** - * Properties of a CSThridGameList. - * @memberof gamehall - * @interface ICSThridGameList - */ - - /** - * Constructs a new CSThridGameList. - * @memberof gamehall - * @classdesc Represents a CSThridGameList. - * @implements ICSThridGameList - * @constructor - * @param {gamehall.ICSThridGameList=} [properties] Properties to set - */ - function CSThridGameList(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSThridGameList instance using the specified properties. - * @function create - * @memberof gamehall.CSThridGameList - * @static - * @param {gamehall.ICSThridGameList=} [properties] Properties to set - * @returns {gamehall.CSThridGameList} CSThridGameList instance - */ - CSThridGameList.create = function create(properties) { - return new CSThridGameList(properties); - }; - - /** - * Encodes the specified CSThridGameList message. Does not implicitly {@link gamehall.CSThridGameList.verify|verify} messages. - * @function encode - * @memberof gamehall.CSThridGameList - * @static - * @param {gamehall.ICSThridGameList} message CSThridGameList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridGameList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSThridGameList message, length delimited. Does not implicitly {@link gamehall.CSThridGameList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSThridGameList - * @static - * @param {gamehall.ICSThridGameList} message CSThridGameList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridGameList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSThridGameList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSThridGameList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSThridGameList} CSThridGameList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridGameList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSThridGameList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSThridGameList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSThridGameList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSThridGameList} CSThridGameList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridGameList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSThridGameList message. - * @function verify - * @memberof gamehall.CSThridGameList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSThridGameList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSThridGameList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSThridGameList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSThridGameList} CSThridGameList - */ - CSThridGameList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSThridGameList) - return object; - return new $root.gamehall.CSThridGameList(); - }; - - /** - * Creates a plain object from a CSThridGameList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSThridGameList - * @static - * @param {gamehall.CSThridGameList} message CSThridGameList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSThridGameList.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSThridGameList to JSON. - * @function toJSON - * @memberof gamehall.CSThridGameList - * @instance - * @returns {Object.} JSON object - */ - CSThridGameList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSThridGameList - * @function getTypeUrl - * @memberof gamehall.CSThridGameList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSThridGameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSThridGameList"; - }; - - return CSThridGameList; - })(); - - gamehall.ThridGameDatas = (function() { - - /** - * Properties of a ThridGameDatas. - * @memberof gamehall - * @interface IThridGameDatas - * @property {string|null} [ThridGameId] ThridGameDatas ThridGameId - * @property {string|null} [ThridGameName] ThridGameDatas ThridGameName - */ - - /** - * Constructs a new ThridGameDatas. - * @memberof gamehall - * @classdesc Represents a ThridGameDatas. - * @implements IThridGameDatas - * @constructor - * @param {gamehall.IThridGameDatas=} [properties] Properties to set - */ - function ThridGameDatas(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ThridGameDatas ThridGameId. - * @member {string} ThridGameId - * @memberof gamehall.ThridGameDatas - * @instance - */ - ThridGameDatas.prototype.ThridGameId = ""; - - /** - * ThridGameDatas ThridGameName. - * @member {string} ThridGameName - * @memberof gamehall.ThridGameDatas - * @instance - */ - ThridGameDatas.prototype.ThridGameName = ""; - - /** - * Creates a new ThridGameDatas instance using the specified properties. - * @function create - * @memberof gamehall.ThridGameDatas - * @static - * @param {gamehall.IThridGameDatas=} [properties] Properties to set - * @returns {gamehall.ThridGameDatas} ThridGameDatas instance - */ - ThridGameDatas.create = function create(properties) { - return new ThridGameDatas(properties); - }; - - /** - * Encodes the specified ThridGameDatas message. Does not implicitly {@link gamehall.ThridGameDatas.verify|verify} messages. - * @function encode - * @memberof gamehall.ThridGameDatas - * @static - * @param {gamehall.IThridGameDatas} message ThridGameDatas message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ThridGameDatas.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ThridGameId != null && Object.hasOwnProperty.call(message, "ThridGameId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.ThridGameId); - if (message.ThridGameName != null && Object.hasOwnProperty.call(message, "ThridGameName")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.ThridGameName); - return writer; - }; - - /** - * Encodes the specified ThridGameDatas message, length delimited. Does not implicitly {@link gamehall.ThridGameDatas.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.ThridGameDatas - * @static - * @param {gamehall.IThridGameDatas} message ThridGameDatas message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ThridGameDatas.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ThridGameDatas message from the specified reader or buffer. - * @function decode - * @memberof gamehall.ThridGameDatas - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.ThridGameDatas} ThridGameDatas - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ThridGameDatas.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.ThridGameDatas(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ThridGameId = reader.string(); - break; - } - case 2: { - message.ThridGameName = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ThridGameDatas message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.ThridGameDatas - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.ThridGameDatas} ThridGameDatas - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ThridGameDatas.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ThridGameDatas message. - * @function verify - * @memberof gamehall.ThridGameDatas - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ThridGameDatas.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ThridGameId != null && message.hasOwnProperty("ThridGameId")) - if (!$util.isString(message.ThridGameId)) - return "ThridGameId: string expected"; - if (message.ThridGameName != null && message.hasOwnProperty("ThridGameName")) - if (!$util.isString(message.ThridGameName)) - return "ThridGameName: string expected"; - return null; - }; - - /** - * Creates a ThridGameDatas message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.ThridGameDatas - * @static - * @param {Object.} object Plain object - * @returns {gamehall.ThridGameDatas} ThridGameDatas - */ - ThridGameDatas.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.ThridGameDatas) - return object; - var message = new $root.gamehall.ThridGameDatas(); - if (object.ThridGameId != null) - message.ThridGameId = String(object.ThridGameId); - if (object.ThridGameName != null) - message.ThridGameName = String(object.ThridGameName); - return message; - }; - - /** - * Creates a plain object from a ThridGameDatas message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.ThridGameDatas - * @static - * @param {gamehall.ThridGameDatas} message ThridGameDatas - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ThridGameDatas.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ThridGameId = ""; - object.ThridGameName = ""; - } - if (message.ThridGameId != null && message.hasOwnProperty("ThridGameId")) - object.ThridGameId = message.ThridGameId; - if (message.ThridGameName != null && message.hasOwnProperty("ThridGameName")) - object.ThridGameName = message.ThridGameName; - return object; - }; - - /** - * Converts this ThridGameDatas to JSON. - * @function toJSON - * @memberof gamehall.ThridGameDatas - * @instance - * @returns {Object.} JSON object - */ - ThridGameDatas.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ThridGameDatas - * @function getTypeUrl - * @memberof gamehall.ThridGameDatas - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ThridGameDatas.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.ThridGameDatas"; - }; - - return ThridGameDatas; - })(); - - gamehall.ThridGamePlatforms = (function() { - - /** - * Properties of a ThridGamePlatforms. - * @memberof gamehall - * @interface IThridGamePlatforms - * @property {number|null} [ThridPlatformId] ThridGamePlatforms ThridPlatformId - * @property {string|null} [ThridPlatformName] ThridGamePlatforms ThridPlatformName - * @property {Array.|null} [GameDatas] ThridGamePlatforms GameDatas - */ - - /** - * Constructs a new ThridGamePlatforms. - * @memberof gamehall - * @classdesc Represents a ThridGamePlatforms. - * @implements IThridGamePlatforms - * @constructor - * @param {gamehall.IThridGamePlatforms=} [properties] Properties to set - */ - function ThridGamePlatforms(properties) { - this.GameDatas = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ThridGamePlatforms ThridPlatformId. - * @member {number} ThridPlatformId - * @memberof gamehall.ThridGamePlatforms - * @instance - */ - ThridGamePlatforms.prototype.ThridPlatformId = 0; - - /** - * ThridGamePlatforms ThridPlatformName. - * @member {string} ThridPlatformName - * @memberof gamehall.ThridGamePlatforms - * @instance - */ - ThridGamePlatforms.prototype.ThridPlatformName = ""; - - /** - * ThridGamePlatforms GameDatas. - * @member {Array.} GameDatas - * @memberof gamehall.ThridGamePlatforms - * @instance - */ - ThridGamePlatforms.prototype.GameDatas = $util.emptyArray; - - /** - * Creates a new ThridGamePlatforms instance using the specified properties. - * @function create - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {gamehall.IThridGamePlatforms=} [properties] Properties to set - * @returns {gamehall.ThridGamePlatforms} ThridGamePlatforms instance - */ - ThridGamePlatforms.create = function create(properties) { - return new ThridGamePlatforms(properties); - }; - - /** - * Encodes the specified ThridGamePlatforms message. Does not implicitly {@link gamehall.ThridGamePlatforms.verify|verify} messages. - * @function encode - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {gamehall.IThridGamePlatforms} message ThridGamePlatforms message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ThridGamePlatforms.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ThridPlatformId != null && Object.hasOwnProperty.call(message, "ThridPlatformId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ThridPlatformId); - if (message.ThridPlatformName != null && Object.hasOwnProperty.call(message, "ThridPlatformName")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.ThridPlatformName); - if (message.GameDatas != null && message.GameDatas.length) - for (var i = 0; i < message.GameDatas.length; ++i) - $root.gamehall.ThridGameDatas.encode(message.GameDatas[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified ThridGamePlatforms message, length delimited. Does not implicitly {@link gamehall.ThridGamePlatforms.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {gamehall.IThridGamePlatforms} message ThridGamePlatforms message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ThridGamePlatforms.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ThridGamePlatforms message from the specified reader or buffer. - * @function decode - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.ThridGamePlatforms} ThridGamePlatforms - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ThridGamePlatforms.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.ThridGamePlatforms(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ThridPlatformId = reader.int32(); - break; - } - case 2: { - message.ThridPlatformName = reader.string(); - break; - } - case 3: { - if (!(message.GameDatas && message.GameDatas.length)) - message.GameDatas = []; - message.GameDatas.push($root.gamehall.ThridGameDatas.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ThridGamePlatforms message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.ThridGamePlatforms} ThridGamePlatforms - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ThridGamePlatforms.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ThridGamePlatforms message. - * @function verify - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ThridGamePlatforms.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ThridPlatformId != null && message.hasOwnProperty("ThridPlatformId")) - if (!$util.isInteger(message.ThridPlatformId)) - return "ThridPlatformId: integer expected"; - if (message.ThridPlatformName != null && message.hasOwnProperty("ThridPlatformName")) - if (!$util.isString(message.ThridPlatformName)) - return "ThridPlatformName: string expected"; - if (message.GameDatas != null && message.hasOwnProperty("GameDatas")) { - if (!Array.isArray(message.GameDatas)) - return "GameDatas: array expected"; - for (var i = 0; i < message.GameDatas.length; ++i) { - var error = $root.gamehall.ThridGameDatas.verify(message.GameDatas[i]); - if (error) - return "GameDatas." + error; - } - } - return null; - }; - - /** - * Creates a ThridGamePlatforms message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {Object.} object Plain object - * @returns {gamehall.ThridGamePlatforms} ThridGamePlatforms - */ - ThridGamePlatforms.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.ThridGamePlatforms) - return object; - var message = new $root.gamehall.ThridGamePlatforms(); - if (object.ThridPlatformId != null) - message.ThridPlatformId = object.ThridPlatformId | 0; - if (object.ThridPlatformName != null) - message.ThridPlatformName = String(object.ThridPlatformName); - if (object.GameDatas) { - if (!Array.isArray(object.GameDatas)) - throw TypeError(".gamehall.ThridGamePlatforms.GameDatas: array expected"); - message.GameDatas = []; - for (var i = 0; i < object.GameDatas.length; ++i) { - if (typeof object.GameDatas[i] !== "object") - throw TypeError(".gamehall.ThridGamePlatforms.GameDatas: object expected"); - message.GameDatas[i] = $root.gamehall.ThridGameDatas.fromObject(object.GameDatas[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a ThridGamePlatforms message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {gamehall.ThridGamePlatforms} message ThridGamePlatforms - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ThridGamePlatforms.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GameDatas = []; - if (options.defaults) { - object.ThridPlatformId = 0; - object.ThridPlatformName = ""; - } - if (message.ThridPlatformId != null && message.hasOwnProperty("ThridPlatformId")) - object.ThridPlatformId = message.ThridPlatformId; - if (message.ThridPlatformName != null && message.hasOwnProperty("ThridPlatformName")) - object.ThridPlatformName = message.ThridPlatformName; - if (message.GameDatas && message.GameDatas.length) { - object.GameDatas = []; - for (var j = 0; j < message.GameDatas.length; ++j) - object.GameDatas[j] = $root.gamehall.ThridGameDatas.toObject(message.GameDatas[j], options); - } - return object; - }; - - /** - * Converts this ThridGamePlatforms to JSON. - * @function toJSON - * @memberof gamehall.ThridGamePlatforms - * @instance - * @returns {Object.} JSON object - */ - ThridGamePlatforms.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ThridGamePlatforms - * @function getTypeUrl - * @memberof gamehall.ThridGamePlatforms - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ThridGamePlatforms.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.ThridGamePlatforms"; - }; - - return ThridGamePlatforms; - })(); - - gamehall.SCThridGameList = (function() { - - /** - * Properties of a SCThridGameList. - * @memberof gamehall - * @interface ISCThridGameList - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCThridGameList OpRetCode - * @property {Array.|null} [GamePlatforms] SCThridGameList GamePlatforms - */ - - /** - * Constructs a new SCThridGameList. - * @memberof gamehall - * @classdesc Represents a SCThridGameList. - * @implements ISCThridGameList - * @constructor - * @param {gamehall.ISCThridGameList=} [properties] Properties to set - */ - function SCThridGameList(properties) { - this.GamePlatforms = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCThridGameList OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCThridGameList - * @instance - */ - SCThridGameList.prototype.OpRetCode = 0; - - /** - * SCThridGameList GamePlatforms. - * @member {Array.} GamePlatforms - * @memberof gamehall.SCThridGameList - * @instance - */ - SCThridGameList.prototype.GamePlatforms = $util.emptyArray; - - /** - * Creates a new SCThridGameList instance using the specified properties. - * @function create - * @memberof gamehall.SCThridGameList - * @static - * @param {gamehall.ISCThridGameList=} [properties] Properties to set - * @returns {gamehall.SCThridGameList} SCThridGameList instance - */ - SCThridGameList.create = function create(properties) { - return new SCThridGameList(properties); - }; - - /** - * Encodes the specified SCThridGameList message. Does not implicitly {@link gamehall.SCThridGameList.verify|verify} messages. - * @function encode - * @memberof gamehall.SCThridGameList - * @static - * @param {gamehall.ISCThridGameList} message SCThridGameList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridGameList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.GamePlatforms != null && message.GamePlatforms.length) - for (var i = 0; i < message.GamePlatforms.length; ++i) - $root.gamehall.ThridGamePlatforms.encode(message.GamePlatforms[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCThridGameList message, length delimited. Does not implicitly {@link gamehall.SCThridGameList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCThridGameList - * @static - * @param {gamehall.ISCThridGameList} message SCThridGameList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridGameList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCThridGameList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCThridGameList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCThridGameList} SCThridGameList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridGameList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCThridGameList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - if (!(message.GamePlatforms && message.GamePlatforms.length)) - message.GamePlatforms = []; - message.GamePlatforms.push($root.gamehall.ThridGamePlatforms.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCThridGameList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCThridGameList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCThridGameList} SCThridGameList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridGameList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCThridGameList message. - * @function verify - * @memberof gamehall.SCThridGameList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCThridGameList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.GamePlatforms != null && message.hasOwnProperty("GamePlatforms")) { - if (!Array.isArray(message.GamePlatforms)) - return "GamePlatforms: array expected"; - for (var i = 0; i < message.GamePlatforms.length; ++i) { - var error = $root.gamehall.ThridGamePlatforms.verify(message.GamePlatforms[i]); - if (error) - return "GamePlatforms." + error; - } - } - return null; - }; - - /** - * Creates a SCThridGameList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCThridGameList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCThridGameList} SCThridGameList - */ - SCThridGameList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCThridGameList) - return object; - var message = new $root.gamehall.SCThridGameList(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.GamePlatforms) { - if (!Array.isArray(object.GamePlatforms)) - throw TypeError(".gamehall.SCThridGameList.GamePlatforms: array expected"); - message.GamePlatforms = []; - for (var i = 0; i < object.GamePlatforms.length; ++i) { - if (typeof object.GamePlatforms[i] !== "object") - throw TypeError(".gamehall.SCThridGameList.GamePlatforms: object expected"); - message.GamePlatforms[i] = $root.gamehall.ThridGamePlatforms.fromObject(object.GamePlatforms[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCThridGameList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCThridGameList - * @static - * @param {gamehall.SCThridGameList} message SCThridGameList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCThridGameList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GamePlatforms = []; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.GamePlatforms && message.GamePlatforms.length) { - object.GamePlatforms = []; - for (var j = 0; j < message.GamePlatforms.length; ++j) - object.GamePlatforms[j] = $root.gamehall.ThridGamePlatforms.toObject(message.GamePlatforms[j], options); - } - return object; - }; - - /** - * Converts this SCThridGameList to JSON. - * @function toJSON - * @memberof gamehall.SCThridGameList - * @instance - * @returns {Object.} JSON object - */ - SCThridGameList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCThridGameList - * @function getTypeUrl - * @memberof gamehall.SCThridGameList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCThridGameList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCThridGameList"; - }; - - return SCThridGameList; - })(); - - gamehall.CSThridGameBalanceUpdate = (function() { - - /** - * Properties of a CSThridGameBalanceUpdate. - * @memberof gamehall - * @interface ICSThridGameBalanceUpdate - */ - - /** - * Constructs a new CSThridGameBalanceUpdate. - * @memberof gamehall - * @classdesc Represents a CSThridGameBalanceUpdate. - * @implements ICSThridGameBalanceUpdate - * @constructor - * @param {gamehall.ICSThridGameBalanceUpdate=} [properties] Properties to set - */ - function CSThridGameBalanceUpdate(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSThridGameBalanceUpdate instance using the specified properties. - * @function create - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {gamehall.ICSThridGameBalanceUpdate=} [properties] Properties to set - * @returns {gamehall.CSThridGameBalanceUpdate} CSThridGameBalanceUpdate instance - */ - CSThridGameBalanceUpdate.create = function create(properties) { - return new CSThridGameBalanceUpdate(properties); - }; - - /** - * Encodes the specified CSThridGameBalanceUpdate message. Does not implicitly {@link gamehall.CSThridGameBalanceUpdate.verify|verify} messages. - * @function encode - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {gamehall.ICSThridGameBalanceUpdate} message CSThridGameBalanceUpdate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridGameBalanceUpdate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSThridGameBalanceUpdate message, length delimited. Does not implicitly {@link gamehall.CSThridGameBalanceUpdate.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {gamehall.ICSThridGameBalanceUpdate} message CSThridGameBalanceUpdate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSThridGameBalanceUpdate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSThridGameBalanceUpdate message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSThridGameBalanceUpdate} CSThridGameBalanceUpdate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridGameBalanceUpdate.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSThridGameBalanceUpdate(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSThridGameBalanceUpdate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSThridGameBalanceUpdate} CSThridGameBalanceUpdate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSThridGameBalanceUpdate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSThridGameBalanceUpdate message. - * @function verify - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSThridGameBalanceUpdate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSThridGameBalanceUpdate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSThridGameBalanceUpdate} CSThridGameBalanceUpdate - */ - CSThridGameBalanceUpdate.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSThridGameBalanceUpdate) - return object; - return new $root.gamehall.CSThridGameBalanceUpdate(); - }; - - /** - * Creates a plain object from a CSThridGameBalanceUpdate message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {gamehall.CSThridGameBalanceUpdate} message CSThridGameBalanceUpdate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSThridGameBalanceUpdate.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSThridGameBalanceUpdate to JSON. - * @function toJSON - * @memberof gamehall.CSThridGameBalanceUpdate - * @instance - * @returns {Object.} JSON object - */ - CSThridGameBalanceUpdate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSThridGameBalanceUpdate - * @function getTypeUrl - * @memberof gamehall.CSThridGameBalanceUpdate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSThridGameBalanceUpdate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSThridGameBalanceUpdate"; - }; - - return CSThridGameBalanceUpdate; - })(); - - gamehall.SCThridGameBalanceUpdate = (function() { - - /** - * Properties of a SCThridGameBalanceUpdate. - * @memberof gamehall - * @interface ISCThridGameBalanceUpdate - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCThridGameBalanceUpdate OpRetCode - * @property {number|Long|null} [Coin] SCThridGameBalanceUpdate Coin - */ - - /** - * Constructs a new SCThridGameBalanceUpdate. - * @memberof gamehall - * @classdesc Represents a SCThridGameBalanceUpdate. - * @implements ISCThridGameBalanceUpdate - * @constructor - * @param {gamehall.ISCThridGameBalanceUpdate=} [properties] Properties to set - */ - function SCThridGameBalanceUpdate(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCThridGameBalanceUpdate OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCThridGameBalanceUpdate - * @instance - */ - SCThridGameBalanceUpdate.prototype.OpRetCode = 0; - - /** - * SCThridGameBalanceUpdate Coin. - * @member {number|Long} Coin - * @memberof gamehall.SCThridGameBalanceUpdate - * @instance - */ - SCThridGameBalanceUpdate.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCThridGameBalanceUpdate instance using the specified properties. - * @function create - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {gamehall.ISCThridGameBalanceUpdate=} [properties] Properties to set - * @returns {gamehall.SCThridGameBalanceUpdate} SCThridGameBalanceUpdate instance - */ - SCThridGameBalanceUpdate.create = function create(properties) { - return new SCThridGameBalanceUpdate(properties); - }; - - /** - * Encodes the specified SCThridGameBalanceUpdate message. Does not implicitly {@link gamehall.SCThridGameBalanceUpdate.verify|verify} messages. - * @function encode - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {gamehall.ISCThridGameBalanceUpdate} message SCThridGameBalanceUpdate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridGameBalanceUpdate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.Coin); - return writer; - }; - - /** - * Encodes the specified SCThridGameBalanceUpdate message, length delimited. Does not implicitly {@link gamehall.SCThridGameBalanceUpdate.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {gamehall.ISCThridGameBalanceUpdate} message SCThridGameBalanceUpdate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridGameBalanceUpdate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCThridGameBalanceUpdate message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCThridGameBalanceUpdate} SCThridGameBalanceUpdate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridGameBalanceUpdate.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCThridGameBalanceUpdate(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.Coin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCThridGameBalanceUpdate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCThridGameBalanceUpdate} SCThridGameBalanceUpdate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridGameBalanceUpdate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCThridGameBalanceUpdate message. - * @function verify - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCThridGameBalanceUpdate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - return null; - }; - - /** - * Creates a SCThridGameBalanceUpdate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCThridGameBalanceUpdate} SCThridGameBalanceUpdate - */ - SCThridGameBalanceUpdate.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCThridGameBalanceUpdate) - return object; - var message = new $root.gamehall.SCThridGameBalanceUpdate(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCThridGameBalanceUpdate message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {gamehall.SCThridGameBalanceUpdate} message SCThridGameBalanceUpdate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCThridGameBalanceUpdate.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - return object; - }; - - /** - * Converts this SCThridGameBalanceUpdate to JSON. - * @function toJSON - * @memberof gamehall.SCThridGameBalanceUpdate - * @instance - * @returns {Object.} JSON object - */ - SCThridGameBalanceUpdate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCThridGameBalanceUpdate - * @function getTypeUrl - * @memberof gamehall.SCThridGameBalanceUpdate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCThridGameBalanceUpdate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCThridGameBalanceUpdate"; - }; - - return SCThridGameBalanceUpdate; - })(); - - gamehall.SCThridGameBalanceUpdateState = (function() { - - /** - * Properties of a SCThridGameBalanceUpdateState. - * @memberof gamehall - * @interface ISCThridGameBalanceUpdateState - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCThridGameBalanceUpdateState OpRetCode - */ - - /** - * Constructs a new SCThridGameBalanceUpdateState. - * @memberof gamehall - * @classdesc Represents a SCThridGameBalanceUpdateState. - * @implements ISCThridGameBalanceUpdateState - * @constructor - * @param {gamehall.ISCThridGameBalanceUpdateState=} [properties] Properties to set - */ - function SCThridGameBalanceUpdateState(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCThridGameBalanceUpdateState OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCThridGameBalanceUpdateState - * @instance - */ - SCThridGameBalanceUpdateState.prototype.OpRetCode = 0; - - /** - * Creates a new SCThridGameBalanceUpdateState instance using the specified properties. - * @function create - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {gamehall.ISCThridGameBalanceUpdateState=} [properties] Properties to set - * @returns {gamehall.SCThridGameBalanceUpdateState} SCThridGameBalanceUpdateState instance - */ - SCThridGameBalanceUpdateState.create = function create(properties) { - return new SCThridGameBalanceUpdateState(properties); - }; - - /** - * Encodes the specified SCThridGameBalanceUpdateState message. Does not implicitly {@link gamehall.SCThridGameBalanceUpdateState.verify|verify} messages. - * @function encode - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {gamehall.ISCThridGameBalanceUpdateState} message SCThridGameBalanceUpdateState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridGameBalanceUpdateState.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCThridGameBalanceUpdateState message, length delimited. Does not implicitly {@link gamehall.SCThridGameBalanceUpdateState.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {gamehall.ISCThridGameBalanceUpdateState} message SCThridGameBalanceUpdateState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCThridGameBalanceUpdateState.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCThridGameBalanceUpdateState message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCThridGameBalanceUpdateState} SCThridGameBalanceUpdateState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridGameBalanceUpdateState.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCThridGameBalanceUpdateState(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCThridGameBalanceUpdateState message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCThridGameBalanceUpdateState} SCThridGameBalanceUpdateState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCThridGameBalanceUpdateState.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCThridGameBalanceUpdateState message. - * @function verify - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCThridGameBalanceUpdateState.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCThridGameBalanceUpdateState message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCThridGameBalanceUpdateState} SCThridGameBalanceUpdateState - */ - SCThridGameBalanceUpdateState.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCThridGameBalanceUpdateState) - return object; - var message = new $root.gamehall.SCThridGameBalanceUpdateState(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCThridGameBalanceUpdateState message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {gamehall.SCThridGameBalanceUpdateState} message SCThridGameBalanceUpdateState - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCThridGameBalanceUpdateState.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCThridGameBalanceUpdateState to JSON. - * @function toJSON - * @memberof gamehall.SCThridGameBalanceUpdateState - * @instance - * @returns {Object.} JSON object - */ - SCThridGameBalanceUpdateState.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCThridGameBalanceUpdateState - * @function getTypeUrl - * @memberof gamehall.SCThridGameBalanceUpdateState - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCThridGameBalanceUpdateState.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCThridGameBalanceUpdateState"; - }; - - return SCThridGameBalanceUpdateState; - })(); - - gamehall.CSCreatePrivateRoom = (function() { - - /** - * Properties of a CSCreatePrivateRoom. - * @memberof gamehall - * @interface ICSCreatePrivateRoom - * @property {number|null} [GameFreeId] CSCreatePrivateRoom GameFreeId - * @property {Array.|null} [Params] CSCreatePrivateRoom Params - */ - - /** - * Constructs a new CSCreatePrivateRoom. - * @memberof gamehall - * @classdesc Represents a CSCreatePrivateRoom. - * @implements ICSCreatePrivateRoom - * @constructor - * @param {gamehall.ICSCreatePrivateRoom=} [properties] Properties to set - */ - function CSCreatePrivateRoom(properties) { - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCreatePrivateRoom GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.CSCreatePrivateRoom - * @instance - */ - CSCreatePrivateRoom.prototype.GameFreeId = 0; - - /** - * CSCreatePrivateRoom Params. - * @member {Array.} Params - * @memberof gamehall.CSCreatePrivateRoom - * @instance - */ - CSCreatePrivateRoom.prototype.Params = $util.emptyArray; - - /** - * Creates a new CSCreatePrivateRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {gamehall.ICSCreatePrivateRoom=} [properties] Properties to set - * @returns {gamehall.CSCreatePrivateRoom} CSCreatePrivateRoom instance - */ - CSCreatePrivateRoom.create = function create(properties) { - return new CSCreatePrivateRoom(properties); - }; - - /** - * Encodes the specified CSCreatePrivateRoom message. Does not implicitly {@link gamehall.CSCreatePrivateRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {gamehall.ICSCreatePrivateRoom} message CSCreatePrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCreatePrivateRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 2, wireType 2 =*/18).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified CSCreatePrivateRoom message, length delimited. Does not implicitly {@link gamehall.CSCreatePrivateRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {gamehall.ICSCreatePrivateRoom} message CSCreatePrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCreatePrivateRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCreatePrivateRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCreatePrivateRoom} CSCreatePrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCreatePrivateRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCreatePrivateRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCreatePrivateRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCreatePrivateRoom} CSCreatePrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCreatePrivateRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCreatePrivateRoom message. - * @function verify - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCreatePrivateRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - return null; - }; - - /** - * Creates a CSCreatePrivateRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCreatePrivateRoom} CSCreatePrivateRoom - */ - CSCreatePrivateRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCreatePrivateRoom) - return object; - var message = new $root.gamehall.CSCreatePrivateRoom(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.CSCreatePrivateRoom.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a CSCreatePrivateRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {gamehall.CSCreatePrivateRoom} message CSCreatePrivateRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCreatePrivateRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Params = []; - if (options.defaults) - object.GameFreeId = 0; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - return object; - }; - - /** - * Converts this CSCreatePrivateRoom to JSON. - * @function toJSON - * @memberof gamehall.CSCreatePrivateRoom - * @instance - * @returns {Object.} JSON object - */ - CSCreatePrivateRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCreatePrivateRoom - * @function getTypeUrl - * @memberof gamehall.CSCreatePrivateRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCreatePrivateRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCreatePrivateRoom"; - }; - - return CSCreatePrivateRoom; - })(); - - gamehall.SCCreatePrivateRoom = (function() { - - /** - * Properties of a SCCreatePrivateRoom. - * @memberof gamehall - * @interface ISCCreatePrivateRoom - * @property {number|null} [GameFreeId] SCCreatePrivateRoom GameFreeId - * @property {Array.|null} [Params] SCCreatePrivateRoom Params - * @property {number|null} [RoomId] SCCreatePrivateRoom RoomId - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCCreatePrivateRoom OpRetCode - */ - - /** - * Constructs a new SCCreatePrivateRoom. - * @memberof gamehall - * @classdesc Represents a SCCreatePrivateRoom. - * @implements ISCCreatePrivateRoom - * @constructor - * @param {gamehall.ISCCreatePrivateRoom=} [properties] Properties to set - */ - function SCCreatePrivateRoom(properties) { - this.Params = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCreatePrivateRoom GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.SCCreatePrivateRoom - * @instance - */ - SCCreatePrivateRoom.prototype.GameFreeId = 0; - - /** - * SCCreatePrivateRoom Params. - * @member {Array.} Params - * @memberof gamehall.SCCreatePrivateRoom - * @instance - */ - SCCreatePrivateRoom.prototype.Params = $util.emptyArray; - - /** - * SCCreatePrivateRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.SCCreatePrivateRoom - * @instance - */ - SCCreatePrivateRoom.prototype.RoomId = 0; - - /** - * SCCreatePrivateRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCCreatePrivateRoom - * @instance - */ - SCCreatePrivateRoom.prototype.OpRetCode = 0; - - /** - * Creates a new SCCreatePrivateRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {gamehall.ISCCreatePrivateRoom=} [properties] Properties to set - * @returns {gamehall.SCCreatePrivateRoom} SCCreatePrivateRoom instance - */ - SCCreatePrivateRoom.create = function create(properties) { - return new SCCreatePrivateRoom(properties); - }; - - /** - * Encodes the specified SCCreatePrivateRoom message. Does not implicitly {@link gamehall.SCCreatePrivateRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {gamehall.ISCCreatePrivateRoom} message SCCreatePrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCreatePrivateRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.Params != null && message.Params.length) { - writer.uint32(/* id 2, wireType 2 =*/18).fork(); - for (var i = 0; i < message.Params.length; ++i) - writer.int32(message.Params[i]); - writer.ldelim(); - } - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.RoomId); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCCreatePrivateRoom message, length delimited. Does not implicitly {@link gamehall.SCCreatePrivateRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {gamehall.ISCCreatePrivateRoom} message SCCreatePrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCreatePrivateRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCreatePrivateRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCreatePrivateRoom} SCCreatePrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCreatePrivateRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCreatePrivateRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - if (!(message.Params && message.Params.length)) - message.Params = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Params.push(reader.int32()); - } else - message.Params.push(reader.int32()); - break; - } - case 3: { - message.RoomId = reader.int32(); - break; - } - case 4: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCreatePrivateRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCreatePrivateRoom} SCCreatePrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCreatePrivateRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCreatePrivateRoom message. - * @function verify - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCreatePrivateRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.Params != null && message.hasOwnProperty("Params")) { - if (!Array.isArray(message.Params)) - return "Params: array expected"; - for (var i = 0; i < message.Params.length; ++i) - if (!$util.isInteger(message.Params[i])) - return "Params: integer[] expected"; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCCreatePrivateRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCreatePrivateRoom} SCCreatePrivateRoom - */ - SCCreatePrivateRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCreatePrivateRoom) - return object; - var message = new $root.gamehall.SCCreatePrivateRoom(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.Params) { - if (!Array.isArray(object.Params)) - throw TypeError(".gamehall.SCCreatePrivateRoom.Params: array expected"); - message.Params = []; - for (var i = 0; i < object.Params.length; ++i) - message.Params[i] = object.Params[i] | 0; - } - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCCreatePrivateRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {gamehall.SCCreatePrivateRoom} message SCCreatePrivateRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCreatePrivateRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Params = []; - if (options.defaults) { - object.GameFreeId = 0; - object.RoomId = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.Params && message.Params.length) { - object.Params = []; - for (var j = 0; j < message.Params.length; ++j) - object.Params[j] = message.Params[j]; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCCreatePrivateRoom to JSON. - * @function toJSON - * @memberof gamehall.SCCreatePrivateRoom - * @instance - * @returns {Object.} JSON object - */ - SCCreatePrivateRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCreatePrivateRoom - * @function getTypeUrl - * @memberof gamehall.SCCreatePrivateRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCreatePrivateRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCreatePrivateRoom"; - }; - - return SCCreatePrivateRoom; - })(); - - gamehall.PrivateRoomInfo = (function() { - - /** - * Properties of a PrivateRoomInfo. - * @memberof gamehall - * @interface IPrivateRoomInfo - * @property {number|null} [GameFreeId] PrivateRoomInfo GameFreeId - * @property {number|null} [RoomId] PrivateRoomInfo RoomId - * @property {number|null} [CurrRound] PrivateRoomInfo CurrRound - * @property {number|null} [MaxRound] PrivateRoomInfo MaxRound - * @property {number|null} [CurrNum] PrivateRoomInfo CurrNum - * @property {number|null} [MaxPlayer] PrivateRoomInfo MaxPlayer - * @property {number|null} [CreateTs] PrivateRoomInfo CreateTs - */ - - /** - * Constructs a new PrivateRoomInfo. - * @memberof gamehall - * @classdesc Represents a PrivateRoomInfo. - * @implements IPrivateRoomInfo - * @constructor - * @param {gamehall.IPrivateRoomInfo=} [properties] Properties to set - */ - function PrivateRoomInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PrivateRoomInfo GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.GameFreeId = 0; - - /** - * PrivateRoomInfo RoomId. - * @member {number} RoomId - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.RoomId = 0; - - /** - * PrivateRoomInfo CurrRound. - * @member {number} CurrRound - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.CurrRound = 0; - - /** - * PrivateRoomInfo MaxRound. - * @member {number} MaxRound - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.MaxRound = 0; - - /** - * PrivateRoomInfo CurrNum. - * @member {number} CurrNum - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.CurrNum = 0; - - /** - * PrivateRoomInfo MaxPlayer. - * @member {number} MaxPlayer - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.MaxPlayer = 0; - - /** - * PrivateRoomInfo CreateTs. - * @member {number} CreateTs - * @memberof gamehall.PrivateRoomInfo - * @instance - */ - PrivateRoomInfo.prototype.CreateTs = 0; - - /** - * Creates a new PrivateRoomInfo instance using the specified properties. - * @function create - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {gamehall.IPrivateRoomInfo=} [properties] Properties to set - * @returns {gamehall.PrivateRoomInfo} PrivateRoomInfo instance - */ - PrivateRoomInfo.create = function create(properties) { - return new PrivateRoomInfo(properties); - }; - - /** - * Encodes the specified PrivateRoomInfo message. Does not implicitly {@link gamehall.PrivateRoomInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {gamehall.IPrivateRoomInfo} message PrivateRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PrivateRoomInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.RoomId); - if (message.CurrRound != null && Object.hasOwnProperty.call(message, "CurrRound")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.CurrRound); - if (message.MaxRound != null && Object.hasOwnProperty.call(message, "MaxRound")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.MaxRound); - if (message.CurrNum != null && Object.hasOwnProperty.call(message, "CurrNum")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.CurrNum); - if (message.MaxPlayer != null && Object.hasOwnProperty.call(message, "MaxPlayer")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.MaxPlayer); - if (message.CreateTs != null && Object.hasOwnProperty.call(message, "CreateTs")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.CreateTs); - return writer; - }; - - /** - * Encodes the specified PrivateRoomInfo message, length delimited. Does not implicitly {@link gamehall.PrivateRoomInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {gamehall.IPrivateRoomInfo} message PrivateRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PrivateRoomInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PrivateRoomInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.PrivateRoomInfo} PrivateRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PrivateRoomInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.PrivateRoomInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.RoomId = reader.int32(); - break; - } - case 3: { - message.CurrRound = reader.int32(); - break; - } - case 4: { - message.MaxRound = reader.int32(); - break; - } - case 5: { - message.CurrNum = reader.int32(); - break; - } - case 6: { - message.MaxPlayer = reader.int32(); - break; - } - case 7: { - message.CreateTs = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PrivateRoomInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.PrivateRoomInfo} PrivateRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PrivateRoomInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PrivateRoomInfo message. - * @function verify - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PrivateRoomInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.CurrRound != null && message.hasOwnProperty("CurrRound")) - if (!$util.isInteger(message.CurrRound)) - return "CurrRound: integer expected"; - if (message.MaxRound != null && message.hasOwnProperty("MaxRound")) - if (!$util.isInteger(message.MaxRound)) - return "MaxRound: integer expected"; - if (message.CurrNum != null && message.hasOwnProperty("CurrNum")) - if (!$util.isInteger(message.CurrNum)) - return "CurrNum: integer expected"; - if (message.MaxPlayer != null && message.hasOwnProperty("MaxPlayer")) - if (!$util.isInteger(message.MaxPlayer)) - return "MaxPlayer: integer expected"; - if (message.CreateTs != null && message.hasOwnProperty("CreateTs")) - if (!$util.isInteger(message.CreateTs)) - return "CreateTs: integer expected"; - return null; - }; - - /** - * Creates a PrivateRoomInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.PrivateRoomInfo} PrivateRoomInfo - */ - PrivateRoomInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.PrivateRoomInfo) - return object; - var message = new $root.gamehall.PrivateRoomInfo(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.CurrRound != null) - message.CurrRound = object.CurrRound | 0; - if (object.MaxRound != null) - message.MaxRound = object.MaxRound | 0; - if (object.CurrNum != null) - message.CurrNum = object.CurrNum | 0; - if (object.MaxPlayer != null) - message.MaxPlayer = object.MaxPlayer | 0; - if (object.CreateTs != null) - message.CreateTs = object.CreateTs | 0; - return message; - }; - - /** - * Creates a plain object from a PrivateRoomInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {gamehall.PrivateRoomInfo} message PrivateRoomInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PrivateRoomInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - object.RoomId = 0; - object.CurrRound = 0; - object.MaxRound = 0; - object.CurrNum = 0; - object.MaxPlayer = 0; - object.CreateTs = 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.CurrRound != null && message.hasOwnProperty("CurrRound")) - object.CurrRound = message.CurrRound; - if (message.MaxRound != null && message.hasOwnProperty("MaxRound")) - object.MaxRound = message.MaxRound; - if (message.CurrNum != null && message.hasOwnProperty("CurrNum")) - object.CurrNum = message.CurrNum; - if (message.MaxPlayer != null && message.hasOwnProperty("MaxPlayer")) - object.MaxPlayer = message.MaxPlayer; - if (message.CreateTs != null && message.hasOwnProperty("CreateTs")) - object.CreateTs = message.CreateTs; - return object; - }; - - /** - * Converts this PrivateRoomInfo to JSON. - * @function toJSON - * @memberof gamehall.PrivateRoomInfo - * @instance - * @returns {Object.} JSON object - */ - PrivateRoomInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PrivateRoomInfo - * @function getTypeUrl - * @memberof gamehall.PrivateRoomInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PrivateRoomInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.PrivateRoomInfo"; - }; - - return PrivateRoomInfo; - })(); - - gamehall.CSGetPrivateRoomList = (function() { - - /** - * Properties of a CSGetPrivateRoomList. - * @memberof gamehall - * @interface ICSGetPrivateRoomList - */ - - /** - * Constructs a new CSGetPrivateRoomList. - * @memberof gamehall - * @classdesc Represents a CSGetPrivateRoomList. - * @implements ICSGetPrivateRoomList - * @constructor - * @param {gamehall.ICSGetPrivateRoomList=} [properties] Properties to set - */ - function CSGetPrivateRoomList(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSGetPrivateRoomList instance using the specified properties. - * @function create - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {gamehall.ICSGetPrivateRoomList=} [properties] Properties to set - * @returns {gamehall.CSGetPrivateRoomList} CSGetPrivateRoomList instance - */ - CSGetPrivateRoomList.create = function create(properties) { - return new CSGetPrivateRoomList(properties); - }; - - /** - * Encodes the specified CSGetPrivateRoomList message. Does not implicitly {@link gamehall.CSGetPrivateRoomList.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {gamehall.ICSGetPrivateRoomList} message CSGetPrivateRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetPrivateRoomList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSGetPrivateRoomList message, length delimited. Does not implicitly {@link gamehall.CSGetPrivateRoomList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {gamehall.ICSGetPrivateRoomList} message CSGetPrivateRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetPrivateRoomList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetPrivateRoomList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGetPrivateRoomList} CSGetPrivateRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetPrivateRoomList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGetPrivateRoomList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetPrivateRoomList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGetPrivateRoomList} CSGetPrivateRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetPrivateRoomList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetPrivateRoomList message. - * @function verify - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetPrivateRoomList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSGetPrivateRoomList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGetPrivateRoomList} CSGetPrivateRoomList - */ - CSGetPrivateRoomList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGetPrivateRoomList) - return object; - return new $root.gamehall.CSGetPrivateRoomList(); - }; - - /** - * Creates a plain object from a CSGetPrivateRoomList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {gamehall.CSGetPrivateRoomList} message CSGetPrivateRoomList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetPrivateRoomList.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSGetPrivateRoomList to JSON. - * @function toJSON - * @memberof gamehall.CSGetPrivateRoomList - * @instance - * @returns {Object.} JSON object - */ - CSGetPrivateRoomList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetPrivateRoomList - * @function getTypeUrl - * @memberof gamehall.CSGetPrivateRoomList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetPrivateRoomList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGetPrivateRoomList"; - }; - - return CSGetPrivateRoomList; - })(); - - gamehall.SCGetPrivateRoomList = (function() { - - /** - * Properties of a SCGetPrivateRoomList. - * @memberof gamehall - * @interface ISCGetPrivateRoomList - * @property {Array.|null} [Datas] SCGetPrivateRoomList Datas - */ - - /** - * Constructs a new SCGetPrivateRoomList. - * @memberof gamehall - * @classdesc Represents a SCGetPrivateRoomList. - * @implements ISCGetPrivateRoomList - * @constructor - * @param {gamehall.ISCGetPrivateRoomList=} [properties] Properties to set - */ - function SCGetPrivateRoomList(properties) { - this.Datas = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGetPrivateRoomList Datas. - * @member {Array.} Datas - * @memberof gamehall.SCGetPrivateRoomList - * @instance - */ - SCGetPrivateRoomList.prototype.Datas = $util.emptyArray; - - /** - * Creates a new SCGetPrivateRoomList instance using the specified properties. - * @function create - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {gamehall.ISCGetPrivateRoomList=} [properties] Properties to set - * @returns {gamehall.SCGetPrivateRoomList} SCGetPrivateRoomList instance - */ - SCGetPrivateRoomList.create = function create(properties) { - return new SCGetPrivateRoomList(properties); - }; - - /** - * Encodes the specified SCGetPrivateRoomList message. Does not implicitly {@link gamehall.SCGetPrivateRoomList.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {gamehall.ISCGetPrivateRoomList} message SCGetPrivateRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetPrivateRoomList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Datas != null && message.Datas.length) - for (var i = 0; i < message.Datas.length; ++i) - $root.gamehall.PrivateRoomInfo.encode(message.Datas[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCGetPrivateRoomList message, length delimited. Does not implicitly {@link gamehall.SCGetPrivateRoomList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {gamehall.ISCGetPrivateRoomList} message SCGetPrivateRoomList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetPrivateRoomList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGetPrivateRoomList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGetPrivateRoomList} SCGetPrivateRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetPrivateRoomList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGetPrivateRoomList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.Datas && message.Datas.length)) - message.Datas = []; - message.Datas.push($root.gamehall.PrivateRoomInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGetPrivateRoomList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGetPrivateRoomList} SCGetPrivateRoomList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetPrivateRoomList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGetPrivateRoomList message. - * @function verify - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGetPrivateRoomList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Datas != null && message.hasOwnProperty("Datas")) { - if (!Array.isArray(message.Datas)) - return "Datas: array expected"; - for (var i = 0; i < message.Datas.length; ++i) { - var error = $root.gamehall.PrivateRoomInfo.verify(message.Datas[i]); - if (error) - return "Datas." + error; - } - } - return null; - }; - - /** - * Creates a SCGetPrivateRoomList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGetPrivateRoomList} SCGetPrivateRoomList - */ - SCGetPrivateRoomList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGetPrivateRoomList) - return object; - var message = new $root.gamehall.SCGetPrivateRoomList(); - if (object.Datas) { - if (!Array.isArray(object.Datas)) - throw TypeError(".gamehall.SCGetPrivateRoomList.Datas: array expected"); - message.Datas = []; - for (var i = 0; i < object.Datas.length; ++i) { - if (typeof object.Datas[i] !== "object") - throw TypeError(".gamehall.SCGetPrivateRoomList.Datas: object expected"); - message.Datas[i] = $root.gamehall.PrivateRoomInfo.fromObject(object.Datas[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCGetPrivateRoomList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {gamehall.SCGetPrivateRoomList} message SCGetPrivateRoomList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGetPrivateRoomList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Datas = []; - if (message.Datas && message.Datas.length) { - object.Datas = []; - for (var j = 0; j < message.Datas.length; ++j) - object.Datas[j] = $root.gamehall.PrivateRoomInfo.toObject(message.Datas[j], options); - } - return object; - }; - - /** - * Converts this SCGetPrivateRoomList to JSON. - * @function toJSON - * @memberof gamehall.SCGetPrivateRoomList - * @instance - * @returns {Object.} JSON object - */ - SCGetPrivateRoomList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGetPrivateRoomList - * @function getTypeUrl - * @memberof gamehall.SCGetPrivateRoomList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGetPrivateRoomList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGetPrivateRoomList"; - }; - - return SCGetPrivateRoomList; - })(); - - gamehall.CSGetPrivateRoomHistory = (function() { - - /** - * Properties of a CSGetPrivateRoomHistory. - * @memberof gamehall - * @interface ICSGetPrivateRoomHistory - * @property {number|null} [QueryTime] CSGetPrivateRoomHistory QueryTime - */ - - /** - * Constructs a new CSGetPrivateRoomHistory. - * @memberof gamehall - * @classdesc Represents a CSGetPrivateRoomHistory. - * @implements ICSGetPrivateRoomHistory - * @constructor - * @param {gamehall.ICSGetPrivateRoomHistory=} [properties] Properties to set - */ - function CSGetPrivateRoomHistory(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSGetPrivateRoomHistory QueryTime. - * @member {number} QueryTime - * @memberof gamehall.CSGetPrivateRoomHistory - * @instance - */ - CSGetPrivateRoomHistory.prototype.QueryTime = 0; - - /** - * Creates a new CSGetPrivateRoomHistory instance using the specified properties. - * @function create - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {gamehall.ICSGetPrivateRoomHistory=} [properties] Properties to set - * @returns {gamehall.CSGetPrivateRoomHistory} CSGetPrivateRoomHistory instance - */ - CSGetPrivateRoomHistory.create = function create(properties) { - return new CSGetPrivateRoomHistory(properties); - }; - - /** - * Encodes the specified CSGetPrivateRoomHistory message. Does not implicitly {@link gamehall.CSGetPrivateRoomHistory.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {gamehall.ICSGetPrivateRoomHistory} message CSGetPrivateRoomHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetPrivateRoomHistory.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.QueryTime != null && Object.hasOwnProperty.call(message, "QueryTime")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.QueryTime); - return writer; - }; - - /** - * Encodes the specified CSGetPrivateRoomHistory message, length delimited. Does not implicitly {@link gamehall.CSGetPrivateRoomHistory.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {gamehall.ICSGetPrivateRoomHistory} message CSGetPrivateRoomHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetPrivateRoomHistory.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetPrivateRoomHistory message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGetPrivateRoomHistory} CSGetPrivateRoomHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetPrivateRoomHistory.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGetPrivateRoomHistory(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.QueryTime = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetPrivateRoomHistory message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGetPrivateRoomHistory} CSGetPrivateRoomHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetPrivateRoomHistory.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetPrivateRoomHistory message. - * @function verify - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetPrivateRoomHistory.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.QueryTime != null && message.hasOwnProperty("QueryTime")) - if (!$util.isInteger(message.QueryTime)) - return "QueryTime: integer expected"; - return null; - }; - - /** - * Creates a CSGetPrivateRoomHistory message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGetPrivateRoomHistory} CSGetPrivateRoomHistory - */ - CSGetPrivateRoomHistory.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGetPrivateRoomHistory) - return object; - var message = new $root.gamehall.CSGetPrivateRoomHistory(); - if (object.QueryTime != null) - message.QueryTime = object.QueryTime | 0; - return message; - }; - - /** - * Creates a plain object from a CSGetPrivateRoomHistory message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {gamehall.CSGetPrivateRoomHistory} message CSGetPrivateRoomHistory - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetPrivateRoomHistory.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.QueryTime = 0; - if (message.QueryTime != null && message.hasOwnProperty("QueryTime")) - object.QueryTime = message.QueryTime; - return object; - }; - - /** - * Converts this CSGetPrivateRoomHistory to JSON. - * @function toJSON - * @memberof gamehall.CSGetPrivateRoomHistory - * @instance - * @returns {Object.} JSON object - */ - CSGetPrivateRoomHistory.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetPrivateRoomHistory - * @function getTypeUrl - * @memberof gamehall.CSGetPrivateRoomHistory - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetPrivateRoomHistory.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGetPrivateRoomHistory"; - }; - - return CSGetPrivateRoomHistory; - })(); - - gamehall.PrivateRoomHistory = (function() { - - /** - * Properties of a PrivateRoomHistory. - * @memberof gamehall - * @interface IPrivateRoomHistory - * @property {number|null} [GameFreeId] PrivateRoomHistory GameFreeId - * @property {number|null} [RoomId] PrivateRoomHistory RoomId - * @property {number|null} [CreateTime] PrivateRoomHistory CreateTime - * @property {number|null} [DestroyTime] PrivateRoomHistory DestroyTime - * @property {number|null} [CreateFee] PrivateRoomHistory CreateFee - */ - - /** - * Constructs a new PrivateRoomHistory. - * @memberof gamehall - * @classdesc Represents a PrivateRoomHistory. - * @implements IPrivateRoomHistory - * @constructor - * @param {gamehall.IPrivateRoomHistory=} [properties] Properties to set - */ - function PrivateRoomHistory(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PrivateRoomHistory GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.PrivateRoomHistory - * @instance - */ - PrivateRoomHistory.prototype.GameFreeId = 0; - - /** - * PrivateRoomHistory RoomId. - * @member {number} RoomId - * @memberof gamehall.PrivateRoomHistory - * @instance - */ - PrivateRoomHistory.prototype.RoomId = 0; - - /** - * PrivateRoomHistory CreateTime. - * @member {number} CreateTime - * @memberof gamehall.PrivateRoomHistory - * @instance - */ - PrivateRoomHistory.prototype.CreateTime = 0; - - /** - * PrivateRoomHistory DestroyTime. - * @member {number} DestroyTime - * @memberof gamehall.PrivateRoomHistory - * @instance - */ - PrivateRoomHistory.prototype.DestroyTime = 0; - - /** - * PrivateRoomHistory CreateFee. - * @member {number} CreateFee - * @memberof gamehall.PrivateRoomHistory - * @instance - */ - PrivateRoomHistory.prototype.CreateFee = 0; - - /** - * Creates a new PrivateRoomHistory instance using the specified properties. - * @function create - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {gamehall.IPrivateRoomHistory=} [properties] Properties to set - * @returns {gamehall.PrivateRoomHistory} PrivateRoomHistory instance - */ - PrivateRoomHistory.create = function create(properties) { - return new PrivateRoomHistory(properties); - }; - - /** - * Encodes the specified PrivateRoomHistory message. Does not implicitly {@link gamehall.PrivateRoomHistory.verify|verify} messages. - * @function encode - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {gamehall.IPrivateRoomHistory} message PrivateRoomHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PrivateRoomHistory.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.RoomId); - if (message.CreateTime != null && Object.hasOwnProperty.call(message, "CreateTime")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.CreateTime); - if (message.DestroyTime != null && Object.hasOwnProperty.call(message, "DestroyTime")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.DestroyTime); - if (message.CreateFee != null && Object.hasOwnProperty.call(message, "CreateFee")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.CreateFee); - return writer; - }; - - /** - * Encodes the specified PrivateRoomHistory message, length delimited. Does not implicitly {@link gamehall.PrivateRoomHistory.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {gamehall.IPrivateRoomHistory} message PrivateRoomHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PrivateRoomHistory.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PrivateRoomHistory message from the specified reader or buffer. - * @function decode - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.PrivateRoomHistory} PrivateRoomHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PrivateRoomHistory.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.PrivateRoomHistory(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.RoomId = reader.int32(); - break; - } - case 3: { - message.CreateTime = reader.int32(); - break; - } - case 4: { - message.DestroyTime = reader.int32(); - break; - } - case 5: { - message.CreateFee = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PrivateRoomHistory message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.PrivateRoomHistory} PrivateRoomHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PrivateRoomHistory.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PrivateRoomHistory message. - * @function verify - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PrivateRoomHistory.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.CreateTime != null && message.hasOwnProperty("CreateTime")) - if (!$util.isInteger(message.CreateTime)) - return "CreateTime: integer expected"; - if (message.DestroyTime != null && message.hasOwnProperty("DestroyTime")) - if (!$util.isInteger(message.DestroyTime)) - return "DestroyTime: integer expected"; - if (message.CreateFee != null && message.hasOwnProperty("CreateFee")) - if (!$util.isInteger(message.CreateFee)) - return "CreateFee: integer expected"; - return null; - }; - - /** - * Creates a PrivateRoomHistory message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {Object.} object Plain object - * @returns {gamehall.PrivateRoomHistory} PrivateRoomHistory - */ - PrivateRoomHistory.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.PrivateRoomHistory) - return object; - var message = new $root.gamehall.PrivateRoomHistory(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.CreateTime != null) - message.CreateTime = object.CreateTime | 0; - if (object.DestroyTime != null) - message.DestroyTime = object.DestroyTime | 0; - if (object.CreateFee != null) - message.CreateFee = object.CreateFee | 0; - return message; - }; - - /** - * Creates a plain object from a PrivateRoomHistory message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {gamehall.PrivateRoomHistory} message PrivateRoomHistory - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PrivateRoomHistory.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - object.RoomId = 0; - object.CreateTime = 0; - object.DestroyTime = 0; - object.CreateFee = 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.CreateTime != null && message.hasOwnProperty("CreateTime")) - object.CreateTime = message.CreateTime; - if (message.DestroyTime != null && message.hasOwnProperty("DestroyTime")) - object.DestroyTime = message.DestroyTime; - if (message.CreateFee != null && message.hasOwnProperty("CreateFee")) - object.CreateFee = message.CreateFee; - return object; - }; - - /** - * Converts this PrivateRoomHistory to JSON. - * @function toJSON - * @memberof gamehall.PrivateRoomHistory - * @instance - * @returns {Object.} JSON object - */ - PrivateRoomHistory.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PrivateRoomHistory - * @function getTypeUrl - * @memberof gamehall.PrivateRoomHistory - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PrivateRoomHistory.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.PrivateRoomHistory"; - }; - - return PrivateRoomHistory; - })(); - - gamehall.SCGetPrivateRoomHistory = (function() { - - /** - * Properties of a SCGetPrivateRoomHistory. - * @memberof gamehall - * @interface ISCGetPrivateRoomHistory - * @property {number|null} [QueryTime] SCGetPrivateRoomHistory QueryTime - * @property {Array.|null} [Datas] SCGetPrivateRoomHistory Datas - */ - - /** - * Constructs a new SCGetPrivateRoomHistory. - * @memberof gamehall - * @classdesc Represents a SCGetPrivateRoomHistory. - * @implements ISCGetPrivateRoomHistory - * @constructor - * @param {gamehall.ISCGetPrivateRoomHistory=} [properties] Properties to set - */ - function SCGetPrivateRoomHistory(properties) { - this.Datas = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGetPrivateRoomHistory QueryTime. - * @member {number} QueryTime - * @memberof gamehall.SCGetPrivateRoomHistory - * @instance - */ - SCGetPrivateRoomHistory.prototype.QueryTime = 0; - - /** - * SCGetPrivateRoomHistory Datas. - * @member {Array.} Datas - * @memberof gamehall.SCGetPrivateRoomHistory - * @instance - */ - SCGetPrivateRoomHistory.prototype.Datas = $util.emptyArray; - - /** - * Creates a new SCGetPrivateRoomHistory instance using the specified properties. - * @function create - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {gamehall.ISCGetPrivateRoomHistory=} [properties] Properties to set - * @returns {gamehall.SCGetPrivateRoomHistory} SCGetPrivateRoomHistory instance - */ - SCGetPrivateRoomHistory.create = function create(properties) { - return new SCGetPrivateRoomHistory(properties); - }; - - /** - * Encodes the specified SCGetPrivateRoomHistory message. Does not implicitly {@link gamehall.SCGetPrivateRoomHistory.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {gamehall.ISCGetPrivateRoomHistory} message SCGetPrivateRoomHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetPrivateRoomHistory.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.QueryTime != null && Object.hasOwnProperty.call(message, "QueryTime")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.QueryTime); - if (message.Datas != null && message.Datas.length) - for (var i = 0; i < message.Datas.length; ++i) - $root.gamehall.PrivateRoomHistory.encode(message.Datas[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCGetPrivateRoomHistory message, length delimited. Does not implicitly {@link gamehall.SCGetPrivateRoomHistory.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {gamehall.ISCGetPrivateRoomHistory} message SCGetPrivateRoomHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetPrivateRoomHistory.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGetPrivateRoomHistory message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGetPrivateRoomHistory} SCGetPrivateRoomHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetPrivateRoomHistory.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGetPrivateRoomHistory(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.QueryTime = reader.int32(); - break; - } - case 2: { - if (!(message.Datas && message.Datas.length)) - message.Datas = []; - message.Datas.push($root.gamehall.PrivateRoomHistory.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGetPrivateRoomHistory message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGetPrivateRoomHistory} SCGetPrivateRoomHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetPrivateRoomHistory.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGetPrivateRoomHistory message. - * @function verify - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGetPrivateRoomHistory.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.QueryTime != null && message.hasOwnProperty("QueryTime")) - if (!$util.isInteger(message.QueryTime)) - return "QueryTime: integer expected"; - if (message.Datas != null && message.hasOwnProperty("Datas")) { - if (!Array.isArray(message.Datas)) - return "Datas: array expected"; - for (var i = 0; i < message.Datas.length; ++i) { - var error = $root.gamehall.PrivateRoomHistory.verify(message.Datas[i]); - if (error) - return "Datas." + error; - } - } - return null; - }; - - /** - * Creates a SCGetPrivateRoomHistory message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGetPrivateRoomHistory} SCGetPrivateRoomHistory - */ - SCGetPrivateRoomHistory.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGetPrivateRoomHistory) - return object; - var message = new $root.gamehall.SCGetPrivateRoomHistory(); - if (object.QueryTime != null) - message.QueryTime = object.QueryTime | 0; - if (object.Datas) { - if (!Array.isArray(object.Datas)) - throw TypeError(".gamehall.SCGetPrivateRoomHistory.Datas: array expected"); - message.Datas = []; - for (var i = 0; i < object.Datas.length; ++i) { - if (typeof object.Datas[i] !== "object") - throw TypeError(".gamehall.SCGetPrivateRoomHistory.Datas: object expected"); - message.Datas[i] = $root.gamehall.PrivateRoomHistory.fromObject(object.Datas[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCGetPrivateRoomHistory message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {gamehall.SCGetPrivateRoomHistory} message SCGetPrivateRoomHistory - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGetPrivateRoomHistory.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Datas = []; - if (options.defaults) - object.QueryTime = 0; - if (message.QueryTime != null && message.hasOwnProperty("QueryTime")) - object.QueryTime = message.QueryTime; - if (message.Datas && message.Datas.length) { - object.Datas = []; - for (var j = 0; j < message.Datas.length; ++j) - object.Datas[j] = $root.gamehall.PrivateRoomHistory.toObject(message.Datas[j], options); - } - return object; - }; - - /** - * Converts this SCGetPrivateRoomHistory to JSON. - * @function toJSON - * @memberof gamehall.SCGetPrivateRoomHistory - * @instance - * @returns {Object.} JSON object - */ - SCGetPrivateRoomHistory.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGetPrivateRoomHistory - * @function getTypeUrl - * @memberof gamehall.SCGetPrivateRoomHistory - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGetPrivateRoomHistory.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGetPrivateRoomHistory"; - }; - - return SCGetPrivateRoomHistory; - })(); - - gamehall.CSDestroyPrivateRoom = (function() { - - /** - * Properties of a CSDestroyPrivateRoom. - * @memberof gamehall - * @interface ICSDestroyPrivateRoom - * @property {number|null} [RoomId] CSDestroyPrivateRoom RoomId - */ - - /** - * Constructs a new CSDestroyPrivateRoom. - * @memberof gamehall - * @classdesc Represents a CSDestroyPrivateRoom. - * @implements ICSDestroyPrivateRoom - * @constructor - * @param {gamehall.ICSDestroyPrivateRoom=} [properties] Properties to set - */ - function CSDestroyPrivateRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSDestroyPrivateRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.CSDestroyPrivateRoom - * @instance - */ - CSDestroyPrivateRoom.prototype.RoomId = 0; - - /** - * Creates a new CSDestroyPrivateRoom instance using the specified properties. - * @function create - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {gamehall.ICSDestroyPrivateRoom=} [properties] Properties to set - * @returns {gamehall.CSDestroyPrivateRoom} CSDestroyPrivateRoom instance - */ - CSDestroyPrivateRoom.create = function create(properties) { - return new CSDestroyPrivateRoom(properties); - }; - - /** - * Encodes the specified CSDestroyPrivateRoom message. Does not implicitly {@link gamehall.CSDestroyPrivateRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {gamehall.ICSDestroyPrivateRoom} message CSDestroyPrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSDestroyPrivateRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - return writer; - }; - - /** - * Encodes the specified CSDestroyPrivateRoom message, length delimited. Does not implicitly {@link gamehall.CSDestroyPrivateRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {gamehall.ICSDestroyPrivateRoom} message CSDestroyPrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSDestroyPrivateRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSDestroyPrivateRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSDestroyPrivateRoom} CSDestroyPrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSDestroyPrivateRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSDestroyPrivateRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSDestroyPrivateRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSDestroyPrivateRoom} CSDestroyPrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSDestroyPrivateRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSDestroyPrivateRoom message. - * @function verify - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSDestroyPrivateRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - return null; - }; - - /** - * Creates a CSDestroyPrivateRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSDestroyPrivateRoom} CSDestroyPrivateRoom - */ - CSDestroyPrivateRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSDestroyPrivateRoom) - return object; - var message = new $root.gamehall.CSDestroyPrivateRoom(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - return message; - }; - - /** - * Creates a plain object from a CSDestroyPrivateRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {gamehall.CSDestroyPrivateRoom} message CSDestroyPrivateRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSDestroyPrivateRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.RoomId = 0; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - return object; - }; - - /** - * Converts this CSDestroyPrivateRoom to JSON. - * @function toJSON - * @memberof gamehall.CSDestroyPrivateRoom - * @instance - * @returns {Object.} JSON object - */ - CSDestroyPrivateRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSDestroyPrivateRoom - * @function getTypeUrl - * @memberof gamehall.CSDestroyPrivateRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSDestroyPrivateRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSDestroyPrivateRoom"; - }; - - return CSDestroyPrivateRoom; - })(); - - gamehall.SCDestroyPrivateRoom = (function() { - - /** - * Properties of a SCDestroyPrivateRoom. - * @memberof gamehall - * @interface ISCDestroyPrivateRoom - * @property {number|null} [RoomId] SCDestroyPrivateRoom RoomId - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCDestroyPrivateRoom OpRetCode - * @property {number|null} [State] SCDestroyPrivateRoom State - */ - - /** - * Constructs a new SCDestroyPrivateRoom. - * @memberof gamehall - * @classdesc Represents a SCDestroyPrivateRoom. - * @implements ISCDestroyPrivateRoom - * @constructor - * @param {gamehall.ISCDestroyPrivateRoom=} [properties] Properties to set - */ - function SCDestroyPrivateRoom(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCDestroyPrivateRoom RoomId. - * @member {number} RoomId - * @memberof gamehall.SCDestroyPrivateRoom - * @instance - */ - SCDestroyPrivateRoom.prototype.RoomId = 0; - - /** - * SCDestroyPrivateRoom OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCDestroyPrivateRoom - * @instance - */ - SCDestroyPrivateRoom.prototype.OpRetCode = 0; - - /** - * SCDestroyPrivateRoom State. - * @member {number} State - * @memberof gamehall.SCDestroyPrivateRoom - * @instance - */ - SCDestroyPrivateRoom.prototype.State = 0; - - /** - * Creates a new SCDestroyPrivateRoom instance using the specified properties. - * @function create - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {gamehall.ISCDestroyPrivateRoom=} [properties] Properties to set - * @returns {gamehall.SCDestroyPrivateRoom} SCDestroyPrivateRoom instance - */ - SCDestroyPrivateRoom.create = function create(properties) { - return new SCDestroyPrivateRoom(properties); - }; - - /** - * Encodes the specified SCDestroyPrivateRoom message. Does not implicitly {@link gamehall.SCDestroyPrivateRoom.verify|verify} messages. - * @function encode - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {gamehall.ISCDestroyPrivateRoom} message SCDestroyPrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCDestroyPrivateRoom.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpRetCode); - if (message.State != null && Object.hasOwnProperty.call(message, "State")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.State); - return writer; - }; - - /** - * Encodes the specified SCDestroyPrivateRoom message, length delimited. Does not implicitly {@link gamehall.SCDestroyPrivateRoom.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {gamehall.ISCDestroyPrivateRoom} message SCDestroyPrivateRoom message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCDestroyPrivateRoom.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCDestroyPrivateRoom message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCDestroyPrivateRoom} SCDestroyPrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCDestroyPrivateRoom.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCDestroyPrivateRoom(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.OpRetCode = reader.int32(); - break; - } - case 3: { - message.State = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCDestroyPrivateRoom message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCDestroyPrivateRoom} SCDestroyPrivateRoom - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCDestroyPrivateRoom.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCDestroyPrivateRoom message. - * @function verify - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCDestroyPrivateRoom.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.State != null && message.hasOwnProperty("State")) - if (!$util.isInteger(message.State)) - return "State: integer expected"; - return null; - }; - - /** - * Creates a SCDestroyPrivateRoom message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCDestroyPrivateRoom} SCDestroyPrivateRoom - */ - SCDestroyPrivateRoom.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCDestroyPrivateRoom) - return object; - var message = new $root.gamehall.SCDestroyPrivateRoom(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - if (object.State != null) - message.State = object.State | 0; - return message; - }; - - /** - * Creates a plain object from a SCDestroyPrivateRoom message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {gamehall.SCDestroyPrivateRoom} message SCDestroyPrivateRoom - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCDestroyPrivateRoom.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.State = 0; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - if (message.State != null && message.hasOwnProperty("State")) - object.State = message.State; - return object; - }; - - /** - * Converts this SCDestroyPrivateRoom to JSON. - * @function toJSON - * @memberof gamehall.SCDestroyPrivateRoom - * @instance - * @returns {Object.} JSON object - */ - SCDestroyPrivateRoom.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCDestroyPrivateRoom - * @function getTypeUrl - * @memberof gamehall.SCDestroyPrivateRoom - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCDestroyPrivateRoom.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCDestroyPrivateRoom"; - }; - - return SCDestroyPrivateRoom; - })(); - - gamehall.CSQueryRoomInfo = (function() { - - /** - * Properties of a CSQueryRoomInfo. - * @memberof gamehall - * @interface ICSQueryRoomInfo - * @property {Array.|null} [GameIds] CSQueryRoomInfo GameIds - * @property {number|null} [GameSite] CSQueryRoomInfo GameSite - */ - - /** - * Constructs a new CSQueryRoomInfo. - * @memberof gamehall - * @classdesc Represents a CSQueryRoomInfo. - * @implements ICSQueryRoomInfo - * @constructor - * @param {gamehall.ICSQueryRoomInfo=} [properties] Properties to set - */ - function CSQueryRoomInfo(properties) { - this.GameIds = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSQueryRoomInfo GameIds. - * @member {Array.} GameIds - * @memberof gamehall.CSQueryRoomInfo - * @instance - */ - CSQueryRoomInfo.prototype.GameIds = $util.emptyArray; - - /** - * CSQueryRoomInfo GameSite. - * @member {number} GameSite - * @memberof gamehall.CSQueryRoomInfo - * @instance - */ - CSQueryRoomInfo.prototype.GameSite = 0; - - /** - * Creates a new CSQueryRoomInfo instance using the specified properties. - * @function create - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {gamehall.ICSQueryRoomInfo=} [properties] Properties to set - * @returns {gamehall.CSQueryRoomInfo} CSQueryRoomInfo instance - */ - CSQueryRoomInfo.create = function create(properties) { - return new CSQueryRoomInfo(properties); - }; - - /** - * Encodes the specified CSQueryRoomInfo message. Does not implicitly {@link gamehall.CSQueryRoomInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {gamehall.ICSQueryRoomInfo} message CSQueryRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSQueryRoomInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameIds != null && message.GameIds.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.GameIds.length; ++i) - writer.int32(message.GameIds[i]); - writer.ldelim(); - } - if (message.GameSite != null && Object.hasOwnProperty.call(message, "GameSite")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameSite); - return writer; - }; - - /** - * Encodes the specified CSQueryRoomInfo message, length delimited. Does not implicitly {@link gamehall.CSQueryRoomInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {gamehall.ICSQueryRoomInfo} message CSQueryRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSQueryRoomInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSQueryRoomInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSQueryRoomInfo} CSQueryRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSQueryRoomInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSQueryRoomInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.GameIds && message.GameIds.length)) - message.GameIds = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.GameIds.push(reader.int32()); - } else - message.GameIds.push(reader.int32()); - break; - } - case 2: { - message.GameSite = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSQueryRoomInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSQueryRoomInfo} CSQueryRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSQueryRoomInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSQueryRoomInfo message. - * @function verify - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSQueryRoomInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameIds != null && message.hasOwnProperty("GameIds")) { - if (!Array.isArray(message.GameIds)) - return "GameIds: array expected"; - for (var i = 0; i < message.GameIds.length; ++i) - if (!$util.isInteger(message.GameIds[i])) - return "GameIds: integer[] expected"; - } - if (message.GameSite != null && message.hasOwnProperty("GameSite")) - if (!$util.isInteger(message.GameSite)) - return "GameSite: integer expected"; - return null; - }; - - /** - * Creates a CSQueryRoomInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSQueryRoomInfo} CSQueryRoomInfo - */ - CSQueryRoomInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSQueryRoomInfo) - return object; - var message = new $root.gamehall.CSQueryRoomInfo(); - if (object.GameIds) { - if (!Array.isArray(object.GameIds)) - throw TypeError(".gamehall.CSQueryRoomInfo.GameIds: array expected"); - message.GameIds = []; - for (var i = 0; i < object.GameIds.length; ++i) - message.GameIds[i] = object.GameIds[i] | 0; - } - if (object.GameSite != null) - message.GameSite = object.GameSite | 0; - return message; - }; - - /** - * Creates a plain object from a CSQueryRoomInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {gamehall.CSQueryRoomInfo} message CSQueryRoomInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSQueryRoomInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GameIds = []; - if (options.defaults) - object.GameSite = 0; - if (message.GameIds && message.GameIds.length) { - object.GameIds = []; - for (var j = 0; j < message.GameIds.length; ++j) - object.GameIds[j] = message.GameIds[j]; - } - if (message.GameSite != null && message.hasOwnProperty("GameSite")) - object.GameSite = message.GameSite; - return object; - }; - - /** - * Converts this CSQueryRoomInfo to JSON. - * @function toJSON - * @memberof gamehall.CSQueryRoomInfo - * @instance - * @returns {Object.} JSON object - */ - CSQueryRoomInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSQueryRoomInfo - * @function getTypeUrl - * @memberof gamehall.CSQueryRoomInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSQueryRoomInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSQueryRoomInfo"; - }; - - return CSQueryRoomInfo; - })(); - - gamehall.QRoomInfo = (function() { - - /** - * Properties of a QRoomInfo. - * @memberof gamehall - * @interface IQRoomInfo - * @property {number|null} [GameFreeId] QRoomInfo GameFreeId - * @property {number|null} [GameId] QRoomInfo GameId - * @property {number|null} [RoomId] QRoomInfo RoomId - * @property {number|null} [BaseCoin] QRoomInfo BaseCoin - * @property {number|null} [LimitCoin] QRoomInfo LimitCoin - * @property {number|null} [CurrNum] QRoomInfo CurrNum - * @property {number|null} [MaxPlayer] QRoomInfo MaxPlayer - * @property {number|null} [Creator] QRoomInfo Creator - * @property {number|null} [CreateTs] QRoomInfo CreateTs - */ - - /** - * Constructs a new QRoomInfo. - * @memberof gamehall - * @classdesc Represents a QRoomInfo. - * @implements IQRoomInfo - * @constructor - * @param {gamehall.IQRoomInfo=} [properties] Properties to set - */ - function QRoomInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * QRoomInfo GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.GameFreeId = 0; - - /** - * QRoomInfo GameId. - * @member {number} GameId - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.GameId = 0; - - /** - * QRoomInfo RoomId. - * @member {number} RoomId - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.RoomId = 0; - - /** - * QRoomInfo BaseCoin. - * @member {number} BaseCoin - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.BaseCoin = 0; - - /** - * QRoomInfo LimitCoin. - * @member {number} LimitCoin - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.LimitCoin = 0; - - /** - * QRoomInfo CurrNum. - * @member {number} CurrNum - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.CurrNum = 0; - - /** - * QRoomInfo MaxPlayer. - * @member {number} MaxPlayer - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.MaxPlayer = 0; - - /** - * QRoomInfo Creator. - * @member {number} Creator - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.Creator = 0; - - /** - * QRoomInfo CreateTs. - * @member {number} CreateTs - * @memberof gamehall.QRoomInfo - * @instance - */ - QRoomInfo.prototype.CreateTs = 0; - - /** - * Creates a new QRoomInfo instance using the specified properties. - * @function create - * @memberof gamehall.QRoomInfo - * @static - * @param {gamehall.IQRoomInfo=} [properties] Properties to set - * @returns {gamehall.QRoomInfo} QRoomInfo instance - */ - QRoomInfo.create = function create(properties) { - return new QRoomInfo(properties); - }; - - /** - * Encodes the specified QRoomInfo message. Does not implicitly {@link gamehall.QRoomInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.QRoomInfo - * @static - * @param {gamehall.IQRoomInfo} message QRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - QRoomInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameId); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.RoomId); - if (message.BaseCoin != null && Object.hasOwnProperty.call(message, "BaseCoin")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.BaseCoin); - if (message.LimitCoin != null && Object.hasOwnProperty.call(message, "LimitCoin")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.LimitCoin); - if (message.CurrNum != null && Object.hasOwnProperty.call(message, "CurrNum")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.CurrNum); - if (message.MaxPlayer != null && Object.hasOwnProperty.call(message, "MaxPlayer")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.MaxPlayer); - if (message.Creator != null && Object.hasOwnProperty.call(message, "Creator")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.Creator); - if (message.CreateTs != null && Object.hasOwnProperty.call(message, "CreateTs")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.CreateTs); - return writer; - }; - - /** - * Encodes the specified QRoomInfo message, length delimited. Does not implicitly {@link gamehall.QRoomInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.QRoomInfo - * @static - * @param {gamehall.IQRoomInfo} message QRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - QRoomInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a QRoomInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.QRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.QRoomInfo} QRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - QRoomInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.QRoomInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.GameId = reader.int32(); - break; - } - case 3: { - message.RoomId = reader.int32(); - break; - } - case 4: { - message.BaseCoin = reader.int32(); - break; - } - case 5: { - message.LimitCoin = reader.int32(); - break; - } - case 6: { - message.CurrNum = reader.int32(); - break; - } - case 7: { - message.MaxPlayer = reader.int32(); - break; - } - case 8: { - message.Creator = reader.int32(); - break; - } - case 9: { - message.CreateTs = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a QRoomInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.QRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.QRoomInfo} QRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - QRoomInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a QRoomInfo message. - * @function verify - * @memberof gamehall.QRoomInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - QRoomInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.BaseCoin != null && message.hasOwnProperty("BaseCoin")) - if (!$util.isInteger(message.BaseCoin)) - return "BaseCoin: integer expected"; - if (message.LimitCoin != null && message.hasOwnProperty("LimitCoin")) - if (!$util.isInteger(message.LimitCoin)) - return "LimitCoin: integer expected"; - if (message.CurrNum != null && message.hasOwnProperty("CurrNum")) - if (!$util.isInteger(message.CurrNum)) - return "CurrNum: integer expected"; - if (message.MaxPlayer != null && message.hasOwnProperty("MaxPlayer")) - if (!$util.isInteger(message.MaxPlayer)) - return "MaxPlayer: integer expected"; - if (message.Creator != null && message.hasOwnProperty("Creator")) - if (!$util.isInteger(message.Creator)) - return "Creator: integer expected"; - if (message.CreateTs != null && message.hasOwnProperty("CreateTs")) - if (!$util.isInteger(message.CreateTs)) - return "CreateTs: integer expected"; - return null; - }; - - /** - * Creates a QRoomInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.QRoomInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.QRoomInfo} QRoomInfo - */ - QRoomInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.QRoomInfo) - return object; - var message = new $root.gamehall.QRoomInfo(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - if (object.BaseCoin != null) - message.BaseCoin = object.BaseCoin | 0; - if (object.LimitCoin != null) - message.LimitCoin = object.LimitCoin | 0; - if (object.CurrNum != null) - message.CurrNum = object.CurrNum | 0; - if (object.MaxPlayer != null) - message.MaxPlayer = object.MaxPlayer | 0; - if (object.Creator != null) - message.Creator = object.Creator | 0; - if (object.CreateTs != null) - message.CreateTs = object.CreateTs | 0; - return message; - }; - - /** - * Creates a plain object from a QRoomInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.QRoomInfo - * @static - * @param {gamehall.QRoomInfo} message QRoomInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - QRoomInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - object.GameId = 0; - object.RoomId = 0; - object.BaseCoin = 0; - object.LimitCoin = 0; - object.CurrNum = 0; - object.MaxPlayer = 0; - object.Creator = 0; - object.CreateTs = 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.BaseCoin != null && message.hasOwnProperty("BaseCoin")) - object.BaseCoin = message.BaseCoin; - if (message.LimitCoin != null && message.hasOwnProperty("LimitCoin")) - object.LimitCoin = message.LimitCoin; - if (message.CurrNum != null && message.hasOwnProperty("CurrNum")) - object.CurrNum = message.CurrNum; - if (message.MaxPlayer != null && message.hasOwnProperty("MaxPlayer")) - object.MaxPlayer = message.MaxPlayer; - if (message.Creator != null && message.hasOwnProperty("Creator")) - object.Creator = message.Creator; - if (message.CreateTs != null && message.hasOwnProperty("CreateTs")) - object.CreateTs = message.CreateTs; - return object; - }; - - /** - * Converts this QRoomInfo to JSON. - * @function toJSON - * @memberof gamehall.QRoomInfo - * @instance - * @returns {Object.} JSON object - */ - QRoomInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for QRoomInfo - * @function getTypeUrl - * @memberof gamehall.QRoomInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - QRoomInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.QRoomInfo"; - }; - - return QRoomInfo; - })(); - - gamehall.SCQueryRoomInfo = (function() { - - /** - * Properties of a SCQueryRoomInfo. - * @memberof gamehall - * @interface ISCQueryRoomInfo - * @property {Array.|null} [GameIds] SCQueryRoomInfo GameIds - * @property {number|null} [GameSite] SCQueryRoomInfo GameSite - * @property {Array.|null} [RoomInfo] SCQueryRoomInfo RoomInfo - * @property {gamehall.OpResultCode_Game|null} [OpRetCode] SCQueryRoomInfo OpRetCode - */ - - /** - * Constructs a new SCQueryRoomInfo. - * @memberof gamehall - * @classdesc Represents a SCQueryRoomInfo. - * @implements ISCQueryRoomInfo - * @constructor - * @param {gamehall.ISCQueryRoomInfo=} [properties] Properties to set - */ - function SCQueryRoomInfo(properties) { - this.GameIds = []; - this.RoomInfo = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCQueryRoomInfo GameIds. - * @member {Array.} GameIds - * @memberof gamehall.SCQueryRoomInfo - * @instance - */ - SCQueryRoomInfo.prototype.GameIds = $util.emptyArray; - - /** - * SCQueryRoomInfo GameSite. - * @member {number} GameSite - * @memberof gamehall.SCQueryRoomInfo - * @instance - */ - SCQueryRoomInfo.prototype.GameSite = 0; - - /** - * SCQueryRoomInfo RoomInfo. - * @member {Array.} RoomInfo - * @memberof gamehall.SCQueryRoomInfo - * @instance - */ - SCQueryRoomInfo.prototype.RoomInfo = $util.emptyArray; - - /** - * SCQueryRoomInfo OpRetCode. - * @member {gamehall.OpResultCode_Game} OpRetCode - * @memberof gamehall.SCQueryRoomInfo - * @instance - */ - SCQueryRoomInfo.prototype.OpRetCode = 0; - - /** - * Creates a new SCQueryRoomInfo instance using the specified properties. - * @function create - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {gamehall.ISCQueryRoomInfo=} [properties] Properties to set - * @returns {gamehall.SCQueryRoomInfo} SCQueryRoomInfo instance - */ - SCQueryRoomInfo.create = function create(properties) { - return new SCQueryRoomInfo(properties); - }; - - /** - * Encodes the specified SCQueryRoomInfo message. Does not implicitly {@link gamehall.SCQueryRoomInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {gamehall.ISCQueryRoomInfo} message SCQueryRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCQueryRoomInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameIds != null && message.GameIds.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.GameIds.length; ++i) - writer.int32(message.GameIds[i]); - writer.ldelim(); - } - if (message.GameSite != null && Object.hasOwnProperty.call(message, "GameSite")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameSite); - if (message.RoomInfo != null && message.RoomInfo.length) - for (var i = 0; i < message.RoomInfo.length; ++i) - $root.gamehall.QRoomInfo.encode(message.RoomInfo[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.OpRetCode); - return writer; - }; - - /** - * Encodes the specified SCQueryRoomInfo message, length delimited. Does not implicitly {@link gamehall.SCQueryRoomInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {gamehall.ISCQueryRoomInfo} message SCQueryRoomInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCQueryRoomInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCQueryRoomInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCQueryRoomInfo} SCQueryRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCQueryRoomInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCQueryRoomInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.GameIds && message.GameIds.length)) - message.GameIds = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.GameIds.push(reader.int32()); - } else - message.GameIds.push(reader.int32()); - break; - } - case 2: { - message.GameSite = reader.int32(); - break; - } - case 3: { - if (!(message.RoomInfo && message.RoomInfo.length)) - message.RoomInfo = []; - message.RoomInfo.push($root.gamehall.QRoomInfo.decode(reader, reader.uint32())); - break; - } - case 4: { - message.OpRetCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCQueryRoomInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCQueryRoomInfo} SCQueryRoomInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCQueryRoomInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCQueryRoomInfo message. - * @function verify - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCQueryRoomInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameIds != null && message.hasOwnProperty("GameIds")) { - if (!Array.isArray(message.GameIds)) - return "GameIds: array expected"; - for (var i = 0; i < message.GameIds.length; ++i) - if (!$util.isInteger(message.GameIds[i])) - return "GameIds: integer[] expected"; - } - if (message.GameSite != null && message.hasOwnProperty("GameSite")) - if (!$util.isInteger(message.GameSite)) - return "GameSite: integer expected"; - if (message.RoomInfo != null && message.hasOwnProperty("RoomInfo")) { - if (!Array.isArray(message.RoomInfo)) - return "RoomInfo: array expected"; - for (var i = 0; i < message.RoomInfo.length; ++i) { - var error = $root.gamehall.QRoomInfo.verify(message.RoomInfo[i]); - if (error) - return "RoomInfo." + error; - } - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCQueryRoomInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCQueryRoomInfo} SCQueryRoomInfo - */ - SCQueryRoomInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCQueryRoomInfo) - return object; - var message = new $root.gamehall.SCQueryRoomInfo(); - if (object.GameIds) { - if (!Array.isArray(object.GameIds)) - throw TypeError(".gamehall.SCQueryRoomInfo.GameIds: array expected"); - message.GameIds = []; - for (var i = 0; i < object.GameIds.length; ++i) - message.GameIds[i] = object.GameIds[i] | 0; - } - if (object.GameSite != null) - message.GameSite = object.GameSite | 0; - if (object.RoomInfo) { - if (!Array.isArray(object.RoomInfo)) - throw TypeError(".gamehall.SCQueryRoomInfo.RoomInfo: array expected"); - message.RoomInfo = []; - for (var i = 0; i < object.RoomInfo.length; ++i) { - if (typeof object.RoomInfo[i] !== "object") - throw TypeError(".gamehall.SCQueryRoomInfo.RoomInfo: object expected"); - message.RoomInfo[i] = $root.gamehall.QRoomInfo.fromObject(object.RoomInfo[i]); - } - } - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpRetCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpRetCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpRetCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpRetCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpRetCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpRetCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpRetCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpRetCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpRetCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpRetCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpRetCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpRetCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpRetCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpRetCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpRetCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpRetCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpRetCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpRetCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpRetCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpRetCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpRetCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpRetCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpRetCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpRetCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpRetCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpRetCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpRetCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpRetCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpRetCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpRetCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpRetCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpRetCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpRetCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpRetCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpRetCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpRetCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCQueryRoomInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {gamehall.SCQueryRoomInfo} message SCQueryRoomInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCQueryRoomInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.GameIds = []; - object.RoomInfo = []; - } - if (options.defaults) { - object.GameSite = 0; - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - } - if (message.GameIds && message.GameIds.length) { - object.GameIds = []; - for (var j = 0; j < message.GameIds.length; ++j) - object.GameIds[j] = message.GameIds[j]; - } - if (message.GameSite != null && message.hasOwnProperty("GameSite")) - object.GameSite = message.GameSite; - if (message.RoomInfo && message.RoomInfo.length) { - object.RoomInfo = []; - for (var j = 0; j < message.RoomInfo.length; ++j) - object.RoomInfo[j] = $root.gamehall.QRoomInfo.toObject(message.RoomInfo[j], options); - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Game[message.OpRetCode] : message.OpRetCode; - return object; - }; - - /** - * Converts this SCQueryRoomInfo to JSON. - * @function toJSON - * @memberof gamehall.SCQueryRoomInfo - * @instance - * @returns {Object.} JSON object - */ - SCQueryRoomInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCQueryRoomInfo - * @function getTypeUrl - * @memberof gamehall.SCQueryRoomInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCQueryRoomInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCQueryRoomInfo"; - }; - - return SCQueryRoomInfo; - })(); - - gamehall.CSGameObserve = (function() { - - /** - * Properties of a CSGameObserve. - * @memberof gamehall - * @interface ICSGameObserve - * @property {number|null} [GameId] CSGameObserve GameId - * @property {boolean|null} [StartOrEnd] CSGameObserve StartOrEnd - */ - - /** - * Constructs a new CSGameObserve. - * @memberof gamehall - * @classdesc Represents a CSGameObserve. - * @implements ICSGameObserve - * @constructor - * @param {gamehall.ICSGameObserve=} [properties] Properties to set - */ - function CSGameObserve(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSGameObserve GameId. - * @member {number} GameId - * @memberof gamehall.CSGameObserve - * @instance - */ - CSGameObserve.prototype.GameId = 0; - - /** - * CSGameObserve StartOrEnd. - * @member {boolean} StartOrEnd - * @memberof gamehall.CSGameObserve - * @instance - */ - CSGameObserve.prototype.StartOrEnd = false; - - /** - * Creates a new CSGameObserve instance using the specified properties. - * @function create - * @memberof gamehall.CSGameObserve - * @static - * @param {gamehall.ICSGameObserve=} [properties] Properties to set - * @returns {gamehall.CSGameObserve} CSGameObserve instance - */ - CSGameObserve.create = function create(properties) { - return new CSGameObserve(properties); - }; - - /** - * Encodes the specified CSGameObserve message. Does not implicitly {@link gamehall.CSGameObserve.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGameObserve - * @static - * @param {gamehall.ICSGameObserve} message CSGameObserve message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGameObserve.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.StartOrEnd != null && Object.hasOwnProperty.call(message, "StartOrEnd")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.StartOrEnd); - return writer; - }; - - /** - * Encodes the specified CSGameObserve message, length delimited. Does not implicitly {@link gamehall.CSGameObserve.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGameObserve - * @static - * @param {gamehall.ICSGameObserve} message CSGameObserve message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGameObserve.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGameObserve message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGameObserve - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGameObserve} CSGameObserve - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGameObserve.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGameObserve(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.StartOrEnd = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGameObserve message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGameObserve - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGameObserve} CSGameObserve - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGameObserve.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGameObserve message. - * @function verify - * @memberof gamehall.CSGameObserve - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGameObserve.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.StartOrEnd != null && message.hasOwnProperty("StartOrEnd")) - if (typeof message.StartOrEnd !== "boolean") - return "StartOrEnd: boolean expected"; - return null; - }; - - /** - * Creates a CSGameObserve message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGameObserve - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGameObserve} CSGameObserve - */ - CSGameObserve.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGameObserve) - return object; - var message = new $root.gamehall.CSGameObserve(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.StartOrEnd != null) - message.StartOrEnd = Boolean(object.StartOrEnd); - return message; - }; - - /** - * Creates a plain object from a CSGameObserve message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGameObserve - * @static - * @param {gamehall.CSGameObserve} message CSGameObserve - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGameObserve.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameId = 0; - object.StartOrEnd = false; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.StartOrEnd != null && message.hasOwnProperty("StartOrEnd")) - object.StartOrEnd = message.StartOrEnd; - return object; - }; - - /** - * Converts this CSGameObserve to JSON. - * @function toJSON - * @memberof gamehall.CSGameObserve - * @instance - * @returns {Object.} JSON object - */ - CSGameObserve.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGameObserve - * @function getTypeUrl - * @memberof gamehall.CSGameObserve - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGameObserve.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGameObserve"; - }; - - return CSGameObserve; - })(); - - gamehall.GameSubRecord = (function() { - - /** - * Properties of a GameSubRecord. - * @memberof gamehall - * @interface IGameSubRecord - * @property {number|null} [GameFreeId] GameSubRecord GameFreeId - * @property {number|null} [LogCnt] GameSubRecord LogCnt - * @property {number|null} [NewLog] GameSubRecord NewLog - * @property {Array.|null} [TotleLog] GameSubRecord TotleLog - */ - - /** - * Constructs a new GameSubRecord. - * @memberof gamehall - * @classdesc Represents a GameSubRecord. - * @implements IGameSubRecord - * @constructor - * @param {gamehall.IGameSubRecord=} [properties] Properties to set - */ - function GameSubRecord(properties) { - this.TotleLog = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GameSubRecord GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.GameSubRecord - * @instance - */ - GameSubRecord.prototype.GameFreeId = 0; - - /** - * GameSubRecord LogCnt. - * @member {number} LogCnt - * @memberof gamehall.GameSubRecord - * @instance - */ - GameSubRecord.prototype.LogCnt = 0; - - /** - * GameSubRecord NewLog. - * @member {number} NewLog - * @memberof gamehall.GameSubRecord - * @instance - */ - GameSubRecord.prototype.NewLog = 0; - - /** - * GameSubRecord TotleLog. - * @member {Array.} TotleLog - * @memberof gamehall.GameSubRecord - * @instance - */ - GameSubRecord.prototype.TotleLog = $util.emptyArray; - - /** - * Creates a new GameSubRecord instance using the specified properties. - * @function create - * @memberof gamehall.GameSubRecord - * @static - * @param {gamehall.IGameSubRecord=} [properties] Properties to set - * @returns {gamehall.GameSubRecord} GameSubRecord instance - */ - GameSubRecord.create = function create(properties) { - return new GameSubRecord(properties); - }; - - /** - * Encodes the specified GameSubRecord message. Does not implicitly {@link gamehall.GameSubRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.GameSubRecord - * @static - * @param {gamehall.IGameSubRecord} message GameSubRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameSubRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.LogCnt != null && Object.hasOwnProperty.call(message, "LogCnt")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.LogCnt); - if (message.NewLog != null && Object.hasOwnProperty.call(message, "NewLog")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.NewLog); - if (message.TotleLog != null && message.TotleLog.length) { - writer.uint32(/* id 4, wireType 2 =*/34).fork(); - for (var i = 0; i < message.TotleLog.length; ++i) - writer.int32(message.TotleLog[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified GameSubRecord message, length delimited. Does not implicitly {@link gamehall.GameSubRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.GameSubRecord - * @static - * @param {gamehall.IGameSubRecord} message GameSubRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameSubRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GameSubRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.GameSubRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.GameSubRecord} GameSubRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameSubRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.GameSubRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.LogCnt = reader.int32(); - break; - } - case 3: { - message.NewLog = reader.int32(); - break; - } - case 4: { - if (!(message.TotleLog && message.TotleLog.length)) - message.TotleLog = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.TotleLog.push(reader.int32()); - } else - message.TotleLog.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GameSubRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.GameSubRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.GameSubRecord} GameSubRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameSubRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GameSubRecord message. - * @function verify - * @memberof gamehall.GameSubRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GameSubRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.LogCnt != null && message.hasOwnProperty("LogCnt")) - if (!$util.isInteger(message.LogCnt)) - return "LogCnt: integer expected"; - if (message.NewLog != null && message.hasOwnProperty("NewLog")) - if (!$util.isInteger(message.NewLog)) - return "NewLog: integer expected"; - if (message.TotleLog != null && message.hasOwnProperty("TotleLog")) { - if (!Array.isArray(message.TotleLog)) - return "TotleLog: array expected"; - for (var i = 0; i < message.TotleLog.length; ++i) - if (!$util.isInteger(message.TotleLog[i])) - return "TotleLog: integer[] expected"; - } - return null; - }; - - /** - * Creates a GameSubRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.GameSubRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.GameSubRecord} GameSubRecord - */ - GameSubRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.GameSubRecord) - return object; - var message = new $root.gamehall.GameSubRecord(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.LogCnt != null) - message.LogCnt = object.LogCnt | 0; - if (object.NewLog != null) - message.NewLog = object.NewLog | 0; - if (object.TotleLog) { - if (!Array.isArray(object.TotleLog)) - throw TypeError(".gamehall.GameSubRecord.TotleLog: array expected"); - message.TotleLog = []; - for (var i = 0; i < object.TotleLog.length; ++i) - message.TotleLog[i] = object.TotleLog[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a GameSubRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.GameSubRecord - * @static - * @param {gamehall.GameSubRecord} message GameSubRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GameSubRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.TotleLog = []; - if (options.defaults) { - object.GameFreeId = 0; - object.LogCnt = 0; - object.NewLog = 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.LogCnt != null && message.hasOwnProperty("LogCnt")) - object.LogCnt = message.LogCnt; - if (message.NewLog != null && message.hasOwnProperty("NewLog")) - object.NewLog = message.NewLog; - if (message.TotleLog && message.TotleLog.length) { - object.TotleLog = []; - for (var j = 0; j < message.TotleLog.length; ++j) - object.TotleLog[j] = message.TotleLog[j]; - } - return object; - }; - - /** - * Converts this GameSubRecord to JSON. - * @function toJSON - * @memberof gamehall.GameSubRecord - * @instance - * @returns {Object.} JSON object - */ - GameSubRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GameSubRecord - * @function getTypeUrl - * @memberof gamehall.GameSubRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GameSubRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.GameSubRecord"; - }; - - return GameSubRecord; - })(); - - gamehall.SCGameSubList = (function() { - - /** - * Properties of a SCGameSubList. - * @memberof gamehall - * @interface ISCGameSubList - * @property {Array.|null} [List] SCGameSubList List - */ - - /** - * Constructs a new SCGameSubList. - * @memberof gamehall - * @classdesc Represents a SCGameSubList. - * @implements ISCGameSubList - * @constructor - * @param {gamehall.ISCGameSubList=} [properties] Properties to set - */ - function SCGameSubList(properties) { - this.List = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGameSubList List. - * @member {Array.} List - * @memberof gamehall.SCGameSubList - * @instance - */ - SCGameSubList.prototype.List = $util.emptyArray; - - /** - * Creates a new SCGameSubList instance using the specified properties. - * @function create - * @memberof gamehall.SCGameSubList - * @static - * @param {gamehall.ISCGameSubList=} [properties] Properties to set - * @returns {gamehall.SCGameSubList} SCGameSubList instance - */ - SCGameSubList.create = function create(properties) { - return new SCGameSubList(properties); - }; - - /** - * Encodes the specified SCGameSubList message. Does not implicitly {@link gamehall.SCGameSubList.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGameSubList - * @static - * @param {gamehall.ISCGameSubList} message SCGameSubList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGameSubList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.List != null && message.List.length) - for (var i = 0; i < message.List.length; ++i) - $root.gamehall.GameSubRecord.encode(message.List[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCGameSubList message, length delimited. Does not implicitly {@link gamehall.SCGameSubList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGameSubList - * @static - * @param {gamehall.ISCGameSubList} message SCGameSubList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGameSubList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGameSubList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGameSubList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGameSubList} SCGameSubList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGameSubList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGameSubList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.List && message.List.length)) - message.List = []; - message.List.push($root.gamehall.GameSubRecord.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGameSubList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGameSubList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGameSubList} SCGameSubList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGameSubList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGameSubList message. - * @function verify - * @memberof gamehall.SCGameSubList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGameSubList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.List != null && message.hasOwnProperty("List")) { - if (!Array.isArray(message.List)) - return "List: array expected"; - for (var i = 0; i < message.List.length; ++i) { - var error = $root.gamehall.GameSubRecord.verify(message.List[i]); - if (error) - return "List." + error; - } - } - return null; - }; - - /** - * Creates a SCGameSubList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGameSubList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGameSubList} SCGameSubList - */ - SCGameSubList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGameSubList) - return object; - var message = new $root.gamehall.SCGameSubList(); - if (object.List) { - if (!Array.isArray(object.List)) - throw TypeError(".gamehall.SCGameSubList.List: array expected"); - message.List = []; - for (var i = 0; i < object.List.length; ++i) { - if (typeof object.List[i] !== "object") - throw TypeError(".gamehall.SCGameSubList.List: object expected"); - message.List[i] = $root.gamehall.GameSubRecord.fromObject(object.List[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCGameSubList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGameSubList - * @static - * @param {gamehall.SCGameSubList} message SCGameSubList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGameSubList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.List = []; - if (message.List && message.List.length) { - object.List = []; - for (var j = 0; j < message.List.length; ++j) - object.List[j] = $root.gamehall.GameSubRecord.toObject(message.List[j], options); - } - return object; - }; - - /** - * Converts this SCGameSubList to JSON. - * @function toJSON - * @memberof gamehall.SCGameSubList - * @instance - * @returns {Object.} JSON object - */ - SCGameSubList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGameSubList - * @function getTypeUrl - * @memberof gamehall.SCGameSubList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGameSubList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGameSubList"; - }; - - return SCGameSubList; - })(); - - gamehall.GameState = (function() { - - /** - * Properties of a GameState. - * @memberof gamehall - * @interface IGameState - * @property {number|null} [GameFreeId] GameState GameFreeId - * @property {number|Long|null} [Ts] GameState Ts - * @property {number|null} [Sec] GameState Sec - */ - - /** - * Constructs a new GameState. - * @memberof gamehall - * @classdesc Represents a GameState. - * @implements IGameState - * @constructor - * @param {gamehall.IGameState=} [properties] Properties to set - */ - function GameState(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GameState GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.GameState - * @instance - */ - GameState.prototype.GameFreeId = 0; - - /** - * GameState Ts. - * @member {number|Long} Ts - * @memberof gamehall.GameState - * @instance - */ - GameState.prototype.Ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * GameState Sec. - * @member {number} Sec - * @memberof gamehall.GameState - * @instance - */ - GameState.prototype.Sec = 0; - - /** - * Creates a new GameState instance using the specified properties. - * @function create - * @memberof gamehall.GameState - * @static - * @param {gamehall.IGameState=} [properties] Properties to set - * @returns {gamehall.GameState} GameState instance - */ - GameState.create = function create(properties) { - return new GameState(properties); - }; - - /** - * Encodes the specified GameState message. Does not implicitly {@link gamehall.GameState.verify|verify} messages. - * @function encode - * @memberof gamehall.GameState - * @static - * @param {gamehall.IGameState} message GameState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameState.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.Ts); - if (message.Sec != null && Object.hasOwnProperty.call(message, "Sec")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Sec); - return writer; - }; - - /** - * Encodes the specified GameState message, length delimited. Does not implicitly {@link gamehall.GameState.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.GameState - * @static - * @param {gamehall.IGameState} message GameState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameState.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GameState message from the specified reader or buffer. - * @function decode - * @memberof gamehall.GameState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.GameState} GameState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameState.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.GameState(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.Ts = reader.int64(); - break; - } - case 3: { - message.Sec = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GameState message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.GameState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.GameState} GameState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameState.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GameState message. - * @function verify - * @memberof gamehall.GameState - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GameState.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts) && !(message.Ts && $util.isInteger(message.Ts.low) && $util.isInteger(message.Ts.high))) - return "Ts: integer|Long expected"; - if (message.Sec != null && message.hasOwnProperty("Sec")) - if (!$util.isInteger(message.Sec)) - return "Sec: integer expected"; - return null; - }; - - /** - * Creates a GameState message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.GameState - * @static - * @param {Object.} object Plain object - * @returns {gamehall.GameState} GameState - */ - GameState.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.GameState) - return object; - var message = new $root.gamehall.GameState(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.Ts != null) - if ($util.Long) - (message.Ts = $util.Long.fromValue(object.Ts)).unsigned = false; - else if (typeof object.Ts === "string") - message.Ts = parseInt(object.Ts, 10); - else if (typeof object.Ts === "number") - message.Ts = object.Ts; - else if (typeof object.Ts === "object") - message.Ts = new $util.LongBits(object.Ts.low >>> 0, object.Ts.high >>> 0).toNumber(); - if (object.Sec != null) - message.Sec = object.Sec | 0; - return message; - }; - - /** - * Creates a plain object from a GameState message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.GameState - * @static - * @param {gamehall.GameState} message GameState - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GameState.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Ts = options.longs === String ? "0" : 0; - object.Sec = 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (typeof message.Ts === "number") - object.Ts = options.longs === String ? String(message.Ts) : message.Ts; - else - object.Ts = options.longs === String ? $util.Long.prototype.toString.call(message.Ts) : options.longs === Number ? new $util.LongBits(message.Ts.low >>> 0, message.Ts.high >>> 0).toNumber() : message.Ts; - if (message.Sec != null && message.hasOwnProperty("Sec")) - object.Sec = message.Sec; - return object; - }; - - /** - * Converts this GameState to JSON. - * @function toJSON - * @memberof gamehall.GameState - * @instance - * @returns {Object.} JSON object - */ - GameState.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GameState - * @function getTypeUrl - * @memberof gamehall.GameState - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GameState.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.GameState"; - }; - - return GameState; - })(); - - gamehall.SCGameState = (function() { - - /** - * Properties of a SCGameState. - * @memberof gamehall - * @interface ISCGameState - * @property {Array.|null} [List] SCGameState List - */ - - /** - * Constructs a new SCGameState. - * @memberof gamehall - * @classdesc Represents a SCGameState. - * @implements ISCGameState - * @constructor - * @param {gamehall.ISCGameState=} [properties] Properties to set - */ - function SCGameState(properties) { - this.List = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGameState List. - * @member {Array.} List - * @memberof gamehall.SCGameState - * @instance - */ - SCGameState.prototype.List = $util.emptyArray; - - /** - * Creates a new SCGameState instance using the specified properties. - * @function create - * @memberof gamehall.SCGameState - * @static - * @param {gamehall.ISCGameState=} [properties] Properties to set - * @returns {gamehall.SCGameState} SCGameState instance - */ - SCGameState.create = function create(properties) { - return new SCGameState(properties); - }; - - /** - * Encodes the specified SCGameState message. Does not implicitly {@link gamehall.SCGameState.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGameState - * @static - * @param {gamehall.ISCGameState} message SCGameState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGameState.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.List != null && message.List.length) - for (var i = 0; i < message.List.length; ++i) - $root.gamehall.GameState.encode(message.List[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCGameState message, length delimited. Does not implicitly {@link gamehall.SCGameState.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGameState - * @static - * @param {gamehall.ISCGameState} message SCGameState message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGameState.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGameState message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGameState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGameState} SCGameState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGameState.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGameState(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.List && message.List.length)) - message.List = []; - message.List.push($root.gamehall.GameState.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGameState message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGameState - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGameState} SCGameState - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGameState.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGameState message. - * @function verify - * @memberof gamehall.SCGameState - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGameState.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.List != null && message.hasOwnProperty("List")) { - if (!Array.isArray(message.List)) - return "List: array expected"; - for (var i = 0; i < message.List.length; ++i) { - var error = $root.gamehall.GameState.verify(message.List[i]); - if (error) - return "List." + error; - } - } - return null; - }; - - /** - * Creates a SCGameState message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGameState - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGameState} SCGameState - */ - SCGameState.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGameState) - return object; - var message = new $root.gamehall.SCGameState(); - if (object.List) { - if (!Array.isArray(object.List)) - throw TypeError(".gamehall.SCGameState.List: array expected"); - message.List = []; - for (var i = 0; i < object.List.length; ++i) { - if (typeof object.List[i] !== "object") - throw TypeError(".gamehall.SCGameState.List: object expected"); - message.List[i] = $root.gamehall.GameState.fromObject(object.List[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCGameState message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGameState - * @static - * @param {gamehall.SCGameState} message SCGameState - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGameState.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.List = []; - if (message.List && message.List.length) { - object.List = []; - for (var j = 0; j < message.List.length; ++j) - object.List[j] = $root.gamehall.GameState.toObject(message.List[j], options); - } - return object; - }; - - /** - * Converts this SCGameState to JSON. - * @function toJSON - * @memberof gamehall.SCGameState - * @instance - * @returns {Object.} JSON object - */ - SCGameState.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGameState - * @function getTypeUrl - * @memberof gamehall.SCGameState - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGameState.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGameState"; - }; - - return SCGameState; - })(); - - gamehall.LotteryData = (function() { - - /** - * Properties of a LotteryData. - * @memberof gamehall - * @interface ILotteryData - * @property {number|null} [GameFreeId] LotteryData GameFreeId - * @property {number|Long|null} [Value] LotteryData Value - */ - - /** - * Constructs a new LotteryData. - * @memberof gamehall - * @classdesc Represents a LotteryData. - * @implements ILotteryData - * @constructor - * @param {gamehall.ILotteryData=} [properties] Properties to set - */ - function LotteryData(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * LotteryData GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.LotteryData - * @instance - */ - LotteryData.prototype.GameFreeId = 0; - - /** - * LotteryData Value. - * @member {number|Long} Value - * @memberof gamehall.LotteryData - * @instance - */ - LotteryData.prototype.Value = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new LotteryData instance using the specified properties. - * @function create - * @memberof gamehall.LotteryData - * @static - * @param {gamehall.ILotteryData=} [properties] Properties to set - * @returns {gamehall.LotteryData} LotteryData instance - */ - LotteryData.create = function create(properties) { - return new LotteryData(properties); - }; - - /** - * Encodes the specified LotteryData message. Does not implicitly {@link gamehall.LotteryData.verify|verify} messages. - * @function encode - * @memberof gamehall.LotteryData - * @static - * @param {gamehall.ILotteryData} message LotteryData message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LotteryData.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.Value != null && Object.hasOwnProperty.call(message, "Value")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.Value); - return writer; - }; - - /** - * Encodes the specified LotteryData message, length delimited. Does not implicitly {@link gamehall.LotteryData.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.LotteryData - * @static - * @param {gamehall.ILotteryData} message LotteryData message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LotteryData.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a LotteryData message from the specified reader or buffer. - * @function decode - * @memberof gamehall.LotteryData - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.LotteryData} LotteryData - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LotteryData.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.LotteryData(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.Value = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a LotteryData message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.LotteryData - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.LotteryData} LotteryData - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LotteryData.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a LotteryData message. - * @function verify - * @memberof gamehall.LotteryData - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - LotteryData.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.Value != null && message.hasOwnProperty("Value")) - if (!$util.isInteger(message.Value) && !(message.Value && $util.isInteger(message.Value.low) && $util.isInteger(message.Value.high))) - return "Value: integer|Long expected"; - return null; - }; - - /** - * Creates a LotteryData message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.LotteryData - * @static - * @param {Object.} object Plain object - * @returns {gamehall.LotteryData} LotteryData - */ - LotteryData.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.LotteryData) - return object; - var message = new $root.gamehall.LotteryData(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.Value != null) - if ($util.Long) - (message.Value = $util.Long.fromValue(object.Value)).unsigned = false; - else if (typeof object.Value === "string") - message.Value = parseInt(object.Value, 10); - else if (typeof object.Value === "number") - message.Value = object.Value; - else if (typeof object.Value === "object") - message.Value = new $util.LongBits(object.Value.low >>> 0, object.Value.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a LotteryData message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.LotteryData - * @static - * @param {gamehall.LotteryData} message LotteryData - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - LotteryData.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Value = options.longs === String ? "0" : 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.Value != null && message.hasOwnProperty("Value")) - if (typeof message.Value === "number") - object.Value = options.longs === String ? String(message.Value) : message.Value; - else - object.Value = options.longs === String ? $util.Long.prototype.toString.call(message.Value) : options.longs === Number ? new $util.LongBits(message.Value.low >>> 0, message.Value.high >>> 0).toNumber() : message.Value; - return object; - }; - - /** - * Converts this LotteryData to JSON. - * @function toJSON - * @memberof gamehall.LotteryData - * @instance - * @returns {Object.} JSON object - */ - LotteryData.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for LotteryData - * @function getTypeUrl - * @memberof gamehall.LotteryData - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - LotteryData.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.LotteryData"; - }; - - return LotteryData; - })(); - - gamehall.SCLotterySync = (function() { - - /** - * Properties of a SCLotterySync. - * @memberof gamehall - * @interface ISCLotterySync - * @property {Array.|null} [Datas] SCLotterySync Datas - */ - - /** - * Constructs a new SCLotterySync. - * @memberof gamehall - * @classdesc Represents a SCLotterySync. - * @implements ISCLotterySync - * @constructor - * @param {gamehall.ISCLotterySync=} [properties] Properties to set - */ - function SCLotterySync(properties) { - this.Datas = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLotterySync Datas. - * @member {Array.} Datas - * @memberof gamehall.SCLotterySync - * @instance - */ - SCLotterySync.prototype.Datas = $util.emptyArray; - - /** - * Creates a new SCLotterySync instance using the specified properties. - * @function create - * @memberof gamehall.SCLotterySync - * @static - * @param {gamehall.ISCLotterySync=} [properties] Properties to set - * @returns {gamehall.SCLotterySync} SCLotterySync instance - */ - SCLotterySync.create = function create(properties) { - return new SCLotterySync(properties); - }; - - /** - * Encodes the specified SCLotterySync message. Does not implicitly {@link gamehall.SCLotterySync.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLotterySync - * @static - * @param {gamehall.ISCLotterySync} message SCLotterySync message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLotterySync.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Datas != null && message.Datas.length) - for (var i = 0; i < message.Datas.length; ++i) - $root.gamehall.LotteryData.encode(message.Datas[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCLotterySync message, length delimited. Does not implicitly {@link gamehall.SCLotterySync.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLotterySync - * @static - * @param {gamehall.ISCLotterySync} message SCLotterySync message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLotterySync.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLotterySync message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLotterySync - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLotterySync} SCLotterySync - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLotterySync.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLotterySync(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.Datas && message.Datas.length)) - message.Datas = []; - message.Datas.push($root.gamehall.LotteryData.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLotterySync message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLotterySync - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLotterySync} SCLotterySync - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLotterySync.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLotterySync message. - * @function verify - * @memberof gamehall.SCLotterySync - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLotterySync.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Datas != null && message.hasOwnProperty("Datas")) { - if (!Array.isArray(message.Datas)) - return "Datas: array expected"; - for (var i = 0; i < message.Datas.length; ++i) { - var error = $root.gamehall.LotteryData.verify(message.Datas[i]); - if (error) - return "Datas." + error; - } - } - return null; - }; - - /** - * Creates a SCLotterySync message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLotterySync - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLotterySync} SCLotterySync - */ - SCLotterySync.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLotterySync) - return object; - var message = new $root.gamehall.SCLotterySync(); - if (object.Datas) { - if (!Array.isArray(object.Datas)) - throw TypeError(".gamehall.SCLotterySync.Datas: array expected"); - message.Datas = []; - for (var i = 0; i < object.Datas.length; ++i) { - if (typeof object.Datas[i] !== "object") - throw TypeError(".gamehall.SCLotterySync.Datas: object expected"); - message.Datas[i] = $root.gamehall.LotteryData.fromObject(object.Datas[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCLotterySync message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLotterySync - * @static - * @param {gamehall.SCLotterySync} message SCLotterySync - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLotterySync.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Datas = []; - if (message.Datas && message.Datas.length) { - object.Datas = []; - for (var j = 0; j < message.Datas.length; ++j) - object.Datas[j] = $root.gamehall.LotteryData.toObject(message.Datas[j], options); - } - return object; - }; - - /** - * Converts this SCLotterySync to JSON. - * @function toJSON - * @memberof gamehall.SCLotterySync - * @instance - * @returns {Object.} JSON object - */ - SCLotterySync.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLotterySync - * @function getTypeUrl - * @memberof gamehall.SCLotterySync - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLotterySync.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLotterySync"; - }; - - return SCLotterySync; - })(); - - gamehall.CSLotteryLog = (function() { - - /** - * Properties of a CSLotteryLog. - * @memberof gamehall - * @interface ICSLotteryLog - * @property {number|null} [GameFreeId] CSLotteryLog GameFreeId - */ - - /** - * Constructs a new CSLotteryLog. - * @memberof gamehall - * @classdesc Represents a CSLotteryLog. - * @implements ICSLotteryLog - * @constructor - * @param {gamehall.ICSLotteryLog=} [properties] Properties to set - */ - function CSLotteryLog(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSLotteryLog GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.CSLotteryLog - * @instance - */ - CSLotteryLog.prototype.GameFreeId = 0; - - /** - * Creates a new CSLotteryLog instance using the specified properties. - * @function create - * @memberof gamehall.CSLotteryLog - * @static - * @param {gamehall.ICSLotteryLog=} [properties] Properties to set - * @returns {gamehall.CSLotteryLog} CSLotteryLog instance - */ - CSLotteryLog.create = function create(properties) { - return new CSLotteryLog(properties); - }; - - /** - * Encodes the specified CSLotteryLog message. Does not implicitly {@link gamehall.CSLotteryLog.verify|verify} messages. - * @function encode - * @memberof gamehall.CSLotteryLog - * @static - * @param {gamehall.ICSLotteryLog} message CSLotteryLog message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLotteryLog.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - return writer; - }; - - /** - * Encodes the specified CSLotteryLog message, length delimited. Does not implicitly {@link gamehall.CSLotteryLog.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSLotteryLog - * @static - * @param {gamehall.ICSLotteryLog} message CSLotteryLog message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSLotteryLog.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSLotteryLog message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSLotteryLog - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSLotteryLog} CSLotteryLog - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLotteryLog.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSLotteryLog(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSLotteryLog message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSLotteryLog - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSLotteryLog} CSLotteryLog - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSLotteryLog.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSLotteryLog message. - * @function verify - * @memberof gamehall.CSLotteryLog - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSLotteryLog.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - return null; - }; - - /** - * Creates a CSLotteryLog message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSLotteryLog - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSLotteryLog} CSLotteryLog - */ - CSLotteryLog.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSLotteryLog) - return object; - var message = new $root.gamehall.CSLotteryLog(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - return message; - }; - - /** - * Creates a plain object from a CSLotteryLog message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSLotteryLog - * @static - * @param {gamehall.CSLotteryLog} message CSLotteryLog - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSLotteryLog.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.GameFreeId = 0; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - return object; - }; - - /** - * Converts this CSLotteryLog to JSON. - * @function toJSON - * @memberof gamehall.CSLotteryLog - * @instance - * @returns {Object.} JSON object - */ - CSLotteryLog.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSLotteryLog - * @function getTypeUrl - * @memberof gamehall.CSLotteryLog - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSLotteryLog.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSLotteryLog"; - }; - - return CSLotteryLog; - })(); - - gamehall.LotteryLog = (function() { - - /** - * Properties of a LotteryLog. - * @memberof gamehall - * @interface ILotteryLog - * @property {number|null} [Time] LotteryLog Time - * @property {string|null} [NickName] LotteryLog NickName - * @property {Array.|null} [Card] LotteryLog Card - * @property {number|null} [Kind] LotteryLog Kind - * @property {number|null} [Coin] LotteryLog Coin - */ - - /** - * Constructs a new LotteryLog. - * @memberof gamehall - * @classdesc Represents a LotteryLog. - * @implements ILotteryLog - * @constructor - * @param {gamehall.ILotteryLog=} [properties] Properties to set - */ - function LotteryLog(properties) { - this.Card = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * LotteryLog Time. - * @member {number} Time - * @memberof gamehall.LotteryLog - * @instance - */ - LotteryLog.prototype.Time = 0; - - /** - * LotteryLog NickName. - * @member {string} NickName - * @memberof gamehall.LotteryLog - * @instance - */ - LotteryLog.prototype.NickName = ""; - - /** - * LotteryLog Card. - * @member {Array.} Card - * @memberof gamehall.LotteryLog - * @instance - */ - LotteryLog.prototype.Card = $util.emptyArray; - - /** - * LotteryLog Kind. - * @member {number} Kind - * @memberof gamehall.LotteryLog - * @instance - */ - LotteryLog.prototype.Kind = 0; - - /** - * LotteryLog Coin. - * @member {number} Coin - * @memberof gamehall.LotteryLog - * @instance - */ - LotteryLog.prototype.Coin = 0; - - /** - * Creates a new LotteryLog instance using the specified properties. - * @function create - * @memberof gamehall.LotteryLog - * @static - * @param {gamehall.ILotteryLog=} [properties] Properties to set - * @returns {gamehall.LotteryLog} LotteryLog instance - */ - LotteryLog.create = function create(properties) { - return new LotteryLog(properties); - }; - - /** - * Encodes the specified LotteryLog message. Does not implicitly {@link gamehall.LotteryLog.verify|verify} messages. - * @function encode - * @memberof gamehall.LotteryLog - * @static - * @param {gamehall.ILotteryLog} message LotteryLog message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LotteryLog.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Time != null && Object.hasOwnProperty.call(message, "Time")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Time); - if (message.NickName != null && Object.hasOwnProperty.call(message, "NickName")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.NickName); - if (message.Card != null && message.Card.length) { - writer.uint32(/* id 3, wireType 2 =*/26).fork(); - for (var i = 0; i < message.Card.length; ++i) - writer.int32(message.Card[i]); - writer.ldelim(); - } - if (message.Kind != null && Object.hasOwnProperty.call(message, "Kind")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.Kind); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.Coin); - return writer; - }; - - /** - * Encodes the specified LotteryLog message, length delimited. Does not implicitly {@link gamehall.LotteryLog.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.LotteryLog - * @static - * @param {gamehall.ILotteryLog} message LotteryLog message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - LotteryLog.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a LotteryLog message from the specified reader or buffer. - * @function decode - * @memberof gamehall.LotteryLog - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.LotteryLog} LotteryLog - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LotteryLog.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.LotteryLog(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Time = reader.int32(); - break; - } - case 2: { - message.NickName = reader.string(); - break; - } - case 3: { - if (!(message.Card && message.Card.length)) - message.Card = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Card.push(reader.int32()); - } else - message.Card.push(reader.int32()); - break; - } - case 4: { - message.Kind = reader.int32(); - break; - } - case 5: { - message.Coin = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a LotteryLog message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.LotteryLog - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.LotteryLog} LotteryLog - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - LotteryLog.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a LotteryLog message. - * @function verify - * @memberof gamehall.LotteryLog - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - LotteryLog.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Time != null && message.hasOwnProperty("Time")) - if (!$util.isInteger(message.Time)) - return "Time: integer expected"; - if (message.NickName != null && message.hasOwnProperty("NickName")) - if (!$util.isString(message.NickName)) - return "NickName: string expected"; - if (message.Card != null && message.hasOwnProperty("Card")) { - if (!Array.isArray(message.Card)) - return "Card: array expected"; - for (var i = 0; i < message.Card.length; ++i) - if (!$util.isInteger(message.Card[i])) - return "Card: integer[] expected"; - } - if (message.Kind != null && message.hasOwnProperty("Kind")) - if (!$util.isInteger(message.Kind)) - return "Kind: integer expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin)) - return "Coin: integer expected"; - return null; - }; - - /** - * Creates a LotteryLog message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.LotteryLog - * @static - * @param {Object.} object Plain object - * @returns {gamehall.LotteryLog} LotteryLog - */ - LotteryLog.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.LotteryLog) - return object; - var message = new $root.gamehall.LotteryLog(); - if (object.Time != null) - message.Time = object.Time | 0; - if (object.NickName != null) - message.NickName = String(object.NickName); - if (object.Card) { - if (!Array.isArray(object.Card)) - throw TypeError(".gamehall.LotteryLog.Card: array expected"); - message.Card = []; - for (var i = 0; i < object.Card.length; ++i) - message.Card[i] = object.Card[i] | 0; - } - if (object.Kind != null) - message.Kind = object.Kind | 0; - if (object.Coin != null) - message.Coin = object.Coin | 0; - return message; - }; - - /** - * Creates a plain object from a LotteryLog message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.LotteryLog - * @static - * @param {gamehall.LotteryLog} message LotteryLog - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - LotteryLog.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Card = []; - if (options.defaults) { - object.Time = 0; - object.NickName = ""; - object.Kind = 0; - object.Coin = 0; - } - if (message.Time != null && message.hasOwnProperty("Time")) - object.Time = message.Time; - if (message.NickName != null && message.hasOwnProperty("NickName")) - object.NickName = message.NickName; - if (message.Card && message.Card.length) { - object.Card = []; - for (var j = 0; j < message.Card.length; ++j) - object.Card[j] = message.Card[j]; - } - if (message.Kind != null && message.hasOwnProperty("Kind")) - object.Kind = message.Kind; - if (message.Coin != null && message.hasOwnProperty("Coin")) - object.Coin = message.Coin; - return object; - }; - - /** - * Converts this LotteryLog to JSON. - * @function toJSON - * @memberof gamehall.LotteryLog - * @instance - * @returns {Object.} JSON object - */ - LotteryLog.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for LotteryLog - * @function getTypeUrl - * @memberof gamehall.LotteryLog - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - LotteryLog.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.LotteryLog"; - }; - - return LotteryLog; - })(); - - gamehall.SCLotteryLog = (function() { - - /** - * Properties of a SCLotteryLog. - * @memberof gamehall - * @interface ISCLotteryLog - * @property {number|null} [GameFreeId] SCLotteryLog GameFreeId - * @property {Array.|null} [Logs] SCLotteryLog Logs - */ - - /** - * Constructs a new SCLotteryLog. - * @memberof gamehall - * @classdesc Represents a SCLotteryLog. - * @implements ISCLotteryLog - * @constructor - * @param {gamehall.ISCLotteryLog=} [properties] Properties to set - */ - function SCLotteryLog(properties) { - this.Logs = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLotteryLog GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.SCLotteryLog - * @instance - */ - SCLotteryLog.prototype.GameFreeId = 0; - - /** - * SCLotteryLog Logs. - * @member {Array.} Logs - * @memberof gamehall.SCLotteryLog - * @instance - */ - SCLotteryLog.prototype.Logs = $util.emptyArray; - - /** - * Creates a new SCLotteryLog instance using the specified properties. - * @function create - * @memberof gamehall.SCLotteryLog - * @static - * @param {gamehall.ISCLotteryLog=} [properties] Properties to set - * @returns {gamehall.SCLotteryLog} SCLotteryLog instance - */ - SCLotteryLog.create = function create(properties) { - return new SCLotteryLog(properties); - }; - - /** - * Encodes the specified SCLotteryLog message. Does not implicitly {@link gamehall.SCLotteryLog.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLotteryLog - * @static - * @param {gamehall.ISCLotteryLog} message SCLotteryLog message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLotteryLog.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.Logs != null && message.Logs.length) - for (var i = 0; i < message.Logs.length; ++i) - $root.gamehall.LotteryLog.encode(message.Logs[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCLotteryLog message, length delimited. Does not implicitly {@link gamehall.SCLotteryLog.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLotteryLog - * @static - * @param {gamehall.ISCLotteryLog} message SCLotteryLog message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLotteryLog.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLotteryLog message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLotteryLog - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLotteryLog} SCLotteryLog - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLotteryLog.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLotteryLog(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - if (!(message.Logs && message.Logs.length)) - message.Logs = []; - message.Logs.push($root.gamehall.LotteryLog.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLotteryLog message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLotteryLog - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLotteryLog} SCLotteryLog - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLotteryLog.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLotteryLog message. - * @function verify - * @memberof gamehall.SCLotteryLog - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLotteryLog.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.Logs != null && message.hasOwnProperty("Logs")) { - if (!Array.isArray(message.Logs)) - return "Logs: array expected"; - for (var i = 0; i < message.Logs.length; ++i) { - var error = $root.gamehall.LotteryLog.verify(message.Logs[i]); - if (error) - return "Logs." + error; - } - } - return null; - }; - - /** - * Creates a SCLotteryLog message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLotteryLog - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLotteryLog} SCLotteryLog - */ - SCLotteryLog.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLotteryLog) - return object; - var message = new $root.gamehall.SCLotteryLog(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.Logs) { - if (!Array.isArray(object.Logs)) - throw TypeError(".gamehall.SCLotteryLog.Logs: array expected"); - message.Logs = []; - for (var i = 0; i < object.Logs.length; ++i) { - if (typeof object.Logs[i] !== "object") - throw TypeError(".gamehall.SCLotteryLog.Logs: object expected"); - message.Logs[i] = $root.gamehall.LotteryLog.fromObject(object.Logs[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCLotteryLog message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLotteryLog - * @static - * @param {gamehall.SCLotteryLog} message SCLotteryLog - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLotteryLog.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Logs = []; - if (options.defaults) - object.GameFreeId = 0; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.Logs && message.Logs.length) { - object.Logs = []; - for (var j = 0; j < message.Logs.length; ++j) - object.Logs[j] = $root.gamehall.LotteryLog.toObject(message.Logs[j], options); - } - return object; - }; - - /** - * Converts this SCLotteryLog to JSON. - * @function toJSON - * @memberof gamehall.SCLotteryLog - * @instance - * @returns {Object.} JSON object - */ - SCLotteryLog.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLotteryLog - * @function getTypeUrl - * @memberof gamehall.SCLotteryLog - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLotteryLog.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLotteryLog"; - }; - - return SCLotteryLog; - })(); - - gamehall.SCLotteryBill = (function() { - - /** - * Properties of a SCLotteryBill. - * @memberof gamehall - * @interface ISCLotteryBill - * @property {number|null} [GameFreeId] SCLotteryBill GameFreeId - * @property {number|null} [SnId] SCLotteryBill SnId - * @property {string|null} [Name] SCLotteryBill Name - * @property {number|null} [Kind] SCLotteryBill Kind - * @property {Array.|null} [Card] SCLotteryBill Card - * @property {number|Long|null} [Value] SCLotteryBill Value - */ - - /** - * Constructs a new SCLotteryBill. - * @memberof gamehall - * @classdesc Represents a SCLotteryBill. - * @implements ISCLotteryBill - * @constructor - * @param {gamehall.ISCLotteryBill=} [properties] Properties to set - */ - function SCLotteryBill(properties) { - this.Card = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCLotteryBill GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.SCLotteryBill - * @instance - */ - SCLotteryBill.prototype.GameFreeId = 0; - - /** - * SCLotteryBill SnId. - * @member {number} SnId - * @memberof gamehall.SCLotteryBill - * @instance - */ - SCLotteryBill.prototype.SnId = 0; - - /** - * SCLotteryBill Name. - * @member {string} Name - * @memberof gamehall.SCLotteryBill - * @instance - */ - SCLotteryBill.prototype.Name = ""; - - /** - * SCLotteryBill Kind. - * @member {number} Kind - * @memberof gamehall.SCLotteryBill - * @instance - */ - SCLotteryBill.prototype.Kind = 0; - - /** - * SCLotteryBill Card. - * @member {Array.} Card - * @memberof gamehall.SCLotteryBill - * @instance - */ - SCLotteryBill.prototype.Card = $util.emptyArray; - - /** - * SCLotteryBill Value. - * @member {number|Long} Value - * @memberof gamehall.SCLotteryBill - * @instance - */ - SCLotteryBill.prototype.Value = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCLotteryBill instance using the specified properties. - * @function create - * @memberof gamehall.SCLotteryBill - * @static - * @param {gamehall.ISCLotteryBill=} [properties] Properties to set - * @returns {gamehall.SCLotteryBill} SCLotteryBill instance - */ - SCLotteryBill.create = function create(properties) { - return new SCLotteryBill(properties); - }; - - /** - * Encodes the specified SCLotteryBill message. Does not implicitly {@link gamehall.SCLotteryBill.verify|verify} messages. - * @function encode - * @memberof gamehall.SCLotteryBill - * @static - * @param {gamehall.ISCLotteryBill} message SCLotteryBill message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLotteryBill.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.SnId != null && Object.hasOwnProperty.call(message, "SnId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.SnId); - if (message.Name != null && Object.hasOwnProperty.call(message, "Name")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.Name); - if (message.Kind != null && Object.hasOwnProperty.call(message, "Kind")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.Kind); - if (message.Card != null && message.Card.length) { - writer.uint32(/* id 5, wireType 2 =*/42).fork(); - for (var i = 0; i < message.Card.length; ++i) - writer.int32(message.Card[i]); - writer.ldelim(); - } - if (message.Value != null && Object.hasOwnProperty.call(message, "Value")) - writer.uint32(/* id 6, wireType 0 =*/48).int64(message.Value); - return writer; - }; - - /** - * Encodes the specified SCLotteryBill message, length delimited. Does not implicitly {@link gamehall.SCLotteryBill.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCLotteryBill - * @static - * @param {gamehall.ISCLotteryBill} message SCLotteryBill message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCLotteryBill.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCLotteryBill message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCLotteryBill - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCLotteryBill} SCLotteryBill - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLotteryBill.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCLotteryBill(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.SnId = reader.int32(); - break; - } - case 3: { - message.Name = reader.string(); - break; - } - case 4: { - message.Kind = reader.int32(); - break; - } - case 5: { - if (!(message.Card && message.Card.length)) - message.Card = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Card.push(reader.int32()); - } else - message.Card.push(reader.int32()); - break; - } - case 6: { - message.Value = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCLotteryBill message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCLotteryBill - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCLotteryBill} SCLotteryBill - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCLotteryBill.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCLotteryBill message. - * @function verify - * @memberof gamehall.SCLotteryBill - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCLotteryBill.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.SnId != null && message.hasOwnProperty("SnId")) - if (!$util.isInteger(message.SnId)) - return "SnId: integer expected"; - if (message.Name != null && message.hasOwnProperty("Name")) - if (!$util.isString(message.Name)) - return "Name: string expected"; - if (message.Kind != null && message.hasOwnProperty("Kind")) - if (!$util.isInteger(message.Kind)) - return "Kind: integer expected"; - if (message.Card != null && message.hasOwnProperty("Card")) { - if (!Array.isArray(message.Card)) - return "Card: array expected"; - for (var i = 0; i < message.Card.length; ++i) - if (!$util.isInteger(message.Card[i])) - return "Card: integer[] expected"; - } - if (message.Value != null && message.hasOwnProperty("Value")) - if (!$util.isInteger(message.Value) && !(message.Value && $util.isInteger(message.Value.low) && $util.isInteger(message.Value.high))) - return "Value: integer|Long expected"; - return null; - }; - - /** - * Creates a SCLotteryBill message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCLotteryBill - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCLotteryBill} SCLotteryBill - */ - SCLotteryBill.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCLotteryBill) - return object; - var message = new $root.gamehall.SCLotteryBill(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.SnId != null) - message.SnId = object.SnId | 0; - if (object.Name != null) - message.Name = String(object.Name); - if (object.Kind != null) - message.Kind = object.Kind | 0; - if (object.Card) { - if (!Array.isArray(object.Card)) - throw TypeError(".gamehall.SCLotteryBill.Card: array expected"); - message.Card = []; - for (var i = 0; i < object.Card.length; ++i) - message.Card[i] = object.Card[i] | 0; - } - if (object.Value != null) - if ($util.Long) - (message.Value = $util.Long.fromValue(object.Value)).unsigned = false; - else if (typeof object.Value === "string") - message.Value = parseInt(object.Value, 10); - else if (typeof object.Value === "number") - message.Value = object.Value; - else if (typeof object.Value === "object") - message.Value = new $util.LongBits(object.Value.low >>> 0, object.Value.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCLotteryBill message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCLotteryBill - * @static - * @param {gamehall.SCLotteryBill} message SCLotteryBill - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCLotteryBill.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Card = []; - if (options.defaults) { - object.GameFreeId = 0; - object.SnId = 0; - object.Name = ""; - object.Kind = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Value = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Value = options.longs === String ? "0" : 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.SnId != null && message.hasOwnProperty("SnId")) - object.SnId = message.SnId; - if (message.Name != null && message.hasOwnProperty("Name")) - object.Name = message.Name; - if (message.Kind != null && message.hasOwnProperty("Kind")) - object.Kind = message.Kind; - if (message.Card && message.Card.length) { - object.Card = []; - for (var j = 0; j < message.Card.length; ++j) - object.Card[j] = message.Card[j]; - } - if (message.Value != null && message.hasOwnProperty("Value")) - if (typeof message.Value === "number") - object.Value = options.longs === String ? String(message.Value) : message.Value; - else - object.Value = options.longs === String ? $util.Long.prototype.toString.call(message.Value) : options.longs === Number ? new $util.LongBits(message.Value.low >>> 0, message.Value.high >>> 0).toNumber() : message.Value; - return object; - }; - - /** - * Converts this SCLotteryBill to JSON. - * @function toJSON - * @memberof gamehall.SCLotteryBill - * @instance - * @returns {Object.} JSON object - */ - SCLotteryBill.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCLotteryBill - * @function getTypeUrl - * @memberof gamehall.SCLotteryBill - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCLotteryBill.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCLotteryBill"; - }; - - return SCLotteryBill; - })(); - - gamehall.GameConfig1 = (function() { - - /** - * Properties of a GameConfig1. - * @memberof gamehall - * @interface IGameConfig1 - * @property {number|null} [LogicId] GameConfig1 LogicId - * @property {number|null} [LimitCoin] GameConfig1 LimitCoin - * @property {number|null} [MaxCoinLimit] GameConfig1 MaxCoinLimit - * @property {number|null} [BaseScore] GameConfig1 BaseScore - * @property {Array.|null} [OtherIntParams] GameConfig1 OtherIntParams - * @property {number|null} [BetScore] GameConfig1 BetScore - * @property {Array.|null} [MaxBetCoin] GameConfig1 MaxBetCoin - * @property {number|null} [MatchMode] GameConfig1 MatchMode - * @property {number|Long|null} [LotteryCoin] GameConfig1 LotteryCoin - * @property {string|null} [LotteryCfg] GameConfig1 LotteryCfg - * @property {boolean|null} [Status] GameConfig1 Status - */ - - /** - * Constructs a new GameConfig1. - * @memberof gamehall - * @classdesc Represents a GameConfig1. - * @implements IGameConfig1 - * @constructor - * @param {gamehall.IGameConfig1=} [properties] Properties to set - */ - function GameConfig1(properties) { - this.OtherIntParams = []; - this.MaxBetCoin = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GameConfig1 LogicId. - * @member {number} LogicId - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.LogicId = 0; - - /** - * GameConfig1 LimitCoin. - * @member {number} LimitCoin - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.LimitCoin = 0; - - /** - * GameConfig1 MaxCoinLimit. - * @member {number} MaxCoinLimit - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.MaxCoinLimit = 0; - - /** - * GameConfig1 BaseScore. - * @member {number} BaseScore - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.BaseScore = 0; - - /** - * GameConfig1 OtherIntParams. - * @member {Array.} OtherIntParams - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.OtherIntParams = $util.emptyArray; - - /** - * GameConfig1 BetScore. - * @member {number} BetScore - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.BetScore = 0; - - /** - * GameConfig1 MaxBetCoin. - * @member {Array.} MaxBetCoin - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.MaxBetCoin = $util.emptyArray; - - /** - * GameConfig1 MatchMode. - * @member {number} MatchMode - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.MatchMode = 0; - - /** - * GameConfig1 LotteryCoin. - * @member {number|Long} LotteryCoin - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.LotteryCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * GameConfig1 LotteryCfg. - * @member {string} LotteryCfg - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.LotteryCfg = ""; - - /** - * GameConfig1 Status. - * @member {boolean} Status - * @memberof gamehall.GameConfig1 - * @instance - */ - GameConfig1.prototype.Status = false; - - /** - * Creates a new GameConfig1 instance using the specified properties. - * @function create - * @memberof gamehall.GameConfig1 - * @static - * @param {gamehall.IGameConfig1=} [properties] Properties to set - * @returns {gamehall.GameConfig1} GameConfig1 instance - */ - GameConfig1.create = function create(properties) { - return new GameConfig1(properties); - }; - - /** - * Encodes the specified GameConfig1 message. Does not implicitly {@link gamehall.GameConfig1.verify|verify} messages. - * @function encode - * @memberof gamehall.GameConfig1 - * @static - * @param {gamehall.IGameConfig1} message GameConfig1 message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameConfig1.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.LogicId != null && Object.hasOwnProperty.call(message, "LogicId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.LogicId); - if (message.LimitCoin != null && Object.hasOwnProperty.call(message, "LimitCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.LimitCoin); - if (message.MaxCoinLimit != null && Object.hasOwnProperty.call(message, "MaxCoinLimit")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.MaxCoinLimit); - if (message.BaseScore != null && Object.hasOwnProperty.call(message, "BaseScore")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.BaseScore); - if (message.OtherIntParams != null && message.OtherIntParams.length) { - writer.uint32(/* id 5, wireType 2 =*/42).fork(); - for (var i = 0; i < message.OtherIntParams.length; ++i) - writer.int32(message.OtherIntParams[i]); - writer.ldelim(); - } - if (message.BetScore != null && Object.hasOwnProperty.call(message, "BetScore")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.BetScore); - if (message.MaxBetCoin != null && message.MaxBetCoin.length) { - writer.uint32(/* id 7, wireType 2 =*/58).fork(); - for (var i = 0; i < message.MaxBetCoin.length; ++i) - writer.int32(message.MaxBetCoin[i]); - writer.ldelim(); - } - if (message.MatchMode != null && Object.hasOwnProperty.call(message, "MatchMode")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.MatchMode); - if (message.LotteryCoin != null && Object.hasOwnProperty.call(message, "LotteryCoin")) - writer.uint32(/* id 9, wireType 0 =*/72).int64(message.LotteryCoin); - if (message.LotteryCfg != null && Object.hasOwnProperty.call(message, "LotteryCfg")) - writer.uint32(/* id 10, wireType 2 =*/82).string(message.LotteryCfg); - if (message.Status != null && Object.hasOwnProperty.call(message, "Status")) - writer.uint32(/* id 11, wireType 0 =*/88).bool(message.Status); - return writer; - }; - - /** - * Encodes the specified GameConfig1 message, length delimited. Does not implicitly {@link gamehall.GameConfig1.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.GameConfig1 - * @static - * @param {gamehall.IGameConfig1} message GameConfig1 message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameConfig1.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GameConfig1 message from the specified reader or buffer. - * @function decode - * @memberof gamehall.GameConfig1 - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.GameConfig1} GameConfig1 - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameConfig1.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.GameConfig1(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.LogicId = reader.int32(); - break; - } - case 2: { - message.LimitCoin = reader.int32(); - break; - } - case 3: { - message.MaxCoinLimit = reader.int32(); - break; - } - case 4: { - message.BaseScore = reader.int32(); - break; - } - case 5: { - if (!(message.OtherIntParams && message.OtherIntParams.length)) - message.OtherIntParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OtherIntParams.push(reader.int32()); - } else - message.OtherIntParams.push(reader.int32()); - break; - } - case 6: { - message.BetScore = reader.int32(); - break; - } - case 7: { - if (!(message.MaxBetCoin && message.MaxBetCoin.length)) - message.MaxBetCoin = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.MaxBetCoin.push(reader.int32()); - } else - message.MaxBetCoin.push(reader.int32()); - break; - } - case 8: { - message.MatchMode = reader.int32(); - break; - } - case 9: { - message.LotteryCoin = reader.int64(); - break; - } - case 10: { - message.LotteryCfg = reader.string(); - break; - } - case 11: { - message.Status = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GameConfig1 message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.GameConfig1 - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.GameConfig1} GameConfig1 - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameConfig1.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GameConfig1 message. - * @function verify - * @memberof gamehall.GameConfig1 - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GameConfig1.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.LogicId != null && message.hasOwnProperty("LogicId")) - if (!$util.isInteger(message.LogicId)) - return "LogicId: integer expected"; - if (message.LimitCoin != null && message.hasOwnProperty("LimitCoin")) - if (!$util.isInteger(message.LimitCoin)) - return "LimitCoin: integer expected"; - if (message.MaxCoinLimit != null && message.hasOwnProperty("MaxCoinLimit")) - if (!$util.isInteger(message.MaxCoinLimit)) - return "MaxCoinLimit: integer expected"; - if (message.BaseScore != null && message.hasOwnProperty("BaseScore")) - if (!$util.isInteger(message.BaseScore)) - return "BaseScore: integer expected"; - if (message.OtherIntParams != null && message.hasOwnProperty("OtherIntParams")) { - if (!Array.isArray(message.OtherIntParams)) - return "OtherIntParams: array expected"; - for (var i = 0; i < message.OtherIntParams.length; ++i) - if (!$util.isInteger(message.OtherIntParams[i])) - return "OtherIntParams: integer[] expected"; - } - if (message.BetScore != null && message.hasOwnProperty("BetScore")) - if (!$util.isInteger(message.BetScore)) - return "BetScore: integer expected"; - if (message.MaxBetCoin != null && message.hasOwnProperty("MaxBetCoin")) { - if (!Array.isArray(message.MaxBetCoin)) - return "MaxBetCoin: array expected"; - for (var i = 0; i < message.MaxBetCoin.length; ++i) - if (!$util.isInteger(message.MaxBetCoin[i])) - return "MaxBetCoin: integer[] expected"; - } - if (message.MatchMode != null && message.hasOwnProperty("MatchMode")) - if (!$util.isInteger(message.MatchMode)) - return "MatchMode: integer expected"; - if (message.LotteryCoin != null && message.hasOwnProperty("LotteryCoin")) - if (!$util.isInteger(message.LotteryCoin) && !(message.LotteryCoin && $util.isInteger(message.LotteryCoin.low) && $util.isInteger(message.LotteryCoin.high))) - return "LotteryCoin: integer|Long expected"; - if (message.LotteryCfg != null && message.hasOwnProperty("LotteryCfg")) - if (!$util.isString(message.LotteryCfg)) - return "LotteryCfg: string expected"; - if (message.Status != null && message.hasOwnProperty("Status")) - if (typeof message.Status !== "boolean") - return "Status: boolean expected"; - return null; - }; - - /** - * Creates a GameConfig1 message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.GameConfig1 - * @static - * @param {Object.} object Plain object - * @returns {gamehall.GameConfig1} GameConfig1 - */ - GameConfig1.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.GameConfig1) - return object; - var message = new $root.gamehall.GameConfig1(); - if (object.LogicId != null) - message.LogicId = object.LogicId | 0; - if (object.LimitCoin != null) - message.LimitCoin = object.LimitCoin | 0; - if (object.MaxCoinLimit != null) - message.MaxCoinLimit = object.MaxCoinLimit | 0; - if (object.BaseScore != null) - message.BaseScore = object.BaseScore | 0; - if (object.OtherIntParams) { - if (!Array.isArray(object.OtherIntParams)) - throw TypeError(".gamehall.GameConfig1.OtherIntParams: array expected"); - message.OtherIntParams = []; - for (var i = 0; i < object.OtherIntParams.length; ++i) - message.OtherIntParams[i] = object.OtherIntParams[i] | 0; - } - if (object.BetScore != null) - message.BetScore = object.BetScore | 0; - if (object.MaxBetCoin) { - if (!Array.isArray(object.MaxBetCoin)) - throw TypeError(".gamehall.GameConfig1.MaxBetCoin: array expected"); - message.MaxBetCoin = []; - for (var i = 0; i < object.MaxBetCoin.length; ++i) - message.MaxBetCoin[i] = object.MaxBetCoin[i] | 0; - } - if (object.MatchMode != null) - message.MatchMode = object.MatchMode | 0; - if (object.LotteryCoin != null) - if ($util.Long) - (message.LotteryCoin = $util.Long.fromValue(object.LotteryCoin)).unsigned = false; - else if (typeof object.LotteryCoin === "string") - message.LotteryCoin = parseInt(object.LotteryCoin, 10); - else if (typeof object.LotteryCoin === "number") - message.LotteryCoin = object.LotteryCoin; - else if (typeof object.LotteryCoin === "object") - message.LotteryCoin = new $util.LongBits(object.LotteryCoin.low >>> 0, object.LotteryCoin.high >>> 0).toNumber(); - if (object.LotteryCfg != null) - message.LotteryCfg = String(object.LotteryCfg); - if (object.Status != null) - message.Status = Boolean(object.Status); - return message; - }; - - /** - * Creates a plain object from a GameConfig1 message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.GameConfig1 - * @static - * @param {gamehall.GameConfig1} message GameConfig1 - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GameConfig1.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.OtherIntParams = []; - object.MaxBetCoin = []; - } - if (options.defaults) { - object.LogicId = 0; - object.LimitCoin = 0; - object.MaxCoinLimit = 0; - object.BaseScore = 0; - object.BetScore = 0; - object.MatchMode = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.LotteryCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.LotteryCoin = options.longs === String ? "0" : 0; - object.LotteryCfg = ""; - object.Status = false; - } - if (message.LogicId != null && message.hasOwnProperty("LogicId")) - object.LogicId = message.LogicId; - if (message.LimitCoin != null && message.hasOwnProperty("LimitCoin")) - object.LimitCoin = message.LimitCoin; - if (message.MaxCoinLimit != null && message.hasOwnProperty("MaxCoinLimit")) - object.MaxCoinLimit = message.MaxCoinLimit; - if (message.BaseScore != null && message.hasOwnProperty("BaseScore")) - object.BaseScore = message.BaseScore; - if (message.OtherIntParams && message.OtherIntParams.length) { - object.OtherIntParams = []; - for (var j = 0; j < message.OtherIntParams.length; ++j) - object.OtherIntParams[j] = message.OtherIntParams[j]; - } - if (message.BetScore != null && message.hasOwnProperty("BetScore")) - object.BetScore = message.BetScore; - if (message.MaxBetCoin && message.MaxBetCoin.length) { - object.MaxBetCoin = []; - for (var j = 0; j < message.MaxBetCoin.length; ++j) - object.MaxBetCoin[j] = message.MaxBetCoin[j]; - } - if (message.MatchMode != null && message.hasOwnProperty("MatchMode")) - object.MatchMode = message.MatchMode; - if (message.LotteryCoin != null && message.hasOwnProperty("LotteryCoin")) - if (typeof message.LotteryCoin === "number") - object.LotteryCoin = options.longs === String ? String(message.LotteryCoin) : message.LotteryCoin; - else - object.LotteryCoin = options.longs === String ? $util.Long.prototype.toString.call(message.LotteryCoin) : options.longs === Number ? new $util.LongBits(message.LotteryCoin.low >>> 0, message.LotteryCoin.high >>> 0).toNumber() : message.LotteryCoin; - if (message.LotteryCfg != null && message.hasOwnProperty("LotteryCfg")) - object.LotteryCfg = message.LotteryCfg; - if (message.Status != null && message.hasOwnProperty("Status")) - object.Status = message.Status; - return object; - }; - - /** - * Converts this GameConfig1 to JSON. - * @function toJSON - * @memberof gamehall.GameConfig1 - * @instance - * @returns {Object.} JSON object - */ - GameConfig1.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GameConfig1 - * @function getTypeUrl - * @memberof gamehall.GameConfig1 - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GameConfig1.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.GameConfig1"; - }; - - return GameConfig1; - })(); - - gamehall.CSGetGameConfig = (function() { - - /** - * Properties of a CSGetGameConfig. - * @memberof gamehall - * @interface ICSGetGameConfig - * @property {string|null} [Platform] CSGetGameConfig Platform - * @property {string|null} [Channel] CSGetGameConfig Channel - * @property {number|null} [GameId] CSGetGameConfig GameId - */ - - /** - * Constructs a new CSGetGameConfig. - * @memberof gamehall - * @classdesc Represents a CSGetGameConfig. - * @implements ICSGetGameConfig - * @constructor - * @param {gamehall.ICSGetGameConfig=} [properties] Properties to set - */ - function CSGetGameConfig(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSGetGameConfig Platform. - * @member {string} Platform - * @memberof gamehall.CSGetGameConfig - * @instance - */ - CSGetGameConfig.prototype.Platform = ""; - - /** - * CSGetGameConfig Channel. - * @member {string} Channel - * @memberof gamehall.CSGetGameConfig - * @instance - */ - CSGetGameConfig.prototype.Channel = ""; - - /** - * CSGetGameConfig GameId. - * @member {number} GameId - * @memberof gamehall.CSGetGameConfig - * @instance - */ - CSGetGameConfig.prototype.GameId = 0; - - /** - * Creates a new CSGetGameConfig instance using the specified properties. - * @function create - * @memberof gamehall.CSGetGameConfig - * @static - * @param {gamehall.ICSGetGameConfig=} [properties] Properties to set - * @returns {gamehall.CSGetGameConfig} CSGetGameConfig instance - */ - CSGetGameConfig.create = function create(properties) { - return new CSGetGameConfig(properties); - }; - - /** - * Encodes the specified CSGetGameConfig message. Does not implicitly {@link gamehall.CSGetGameConfig.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGetGameConfig - * @static - * @param {gamehall.ICSGetGameConfig} message CSGetGameConfig message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetGameConfig.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Platform != null && Object.hasOwnProperty.call(message, "Platform")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.Platform); - if (message.Channel != null && Object.hasOwnProperty.call(message, "Channel")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.Channel); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.GameId); - return writer; - }; - - /** - * Encodes the specified CSGetGameConfig message, length delimited. Does not implicitly {@link gamehall.CSGetGameConfig.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGetGameConfig - * @static - * @param {gamehall.ICSGetGameConfig} message CSGetGameConfig message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetGameConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetGameConfig message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGetGameConfig - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGetGameConfig} CSGetGameConfig - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetGameConfig.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGetGameConfig(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Platform = reader.string(); - break; - } - case 2: { - message.Channel = reader.string(); - break; - } - case 3: { - message.GameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetGameConfig message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGetGameConfig - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGetGameConfig} CSGetGameConfig - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetGameConfig.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetGameConfig message. - * @function verify - * @memberof gamehall.CSGetGameConfig - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetGameConfig.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Platform != null && message.hasOwnProperty("Platform")) - if (!$util.isString(message.Platform)) - return "Platform: string expected"; - if (message.Channel != null && message.hasOwnProperty("Channel")) - if (!$util.isString(message.Channel)) - return "Channel: string expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - return null; - }; - - /** - * Creates a CSGetGameConfig message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGetGameConfig - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGetGameConfig} CSGetGameConfig - */ - CSGetGameConfig.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGetGameConfig) - return object; - var message = new $root.gamehall.CSGetGameConfig(); - if (object.Platform != null) - message.Platform = String(object.Platform); - if (object.Channel != null) - message.Channel = String(object.Channel); - if (object.GameId != null) - message.GameId = object.GameId | 0; - return message; - }; - - /** - * Creates a plain object from a CSGetGameConfig message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGetGameConfig - * @static - * @param {gamehall.CSGetGameConfig} message CSGetGameConfig - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetGameConfig.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Platform = ""; - object.Channel = ""; - object.GameId = 0; - } - if (message.Platform != null && message.hasOwnProperty("Platform")) - object.Platform = message.Platform; - if (message.Channel != null && message.hasOwnProperty("Channel")) - object.Channel = message.Channel; - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - return object; - }; - - /** - * Converts this CSGetGameConfig to JSON. - * @function toJSON - * @memberof gamehall.CSGetGameConfig - * @instance - * @returns {Object.} JSON object - */ - CSGetGameConfig.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetGameConfig - * @function getTypeUrl - * @memberof gamehall.CSGetGameConfig - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetGameConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGetGameConfig"; - }; - - return CSGetGameConfig; - })(); - - gamehall.SCGetGameConfig = (function() { - - /** - * Properties of a SCGetGameConfig. - * @memberof gamehall - * @interface ISCGetGameConfig - * @property {Array.|null} [GameCfg] SCGetGameConfig GameCfg - * @property {number|null} [GameId] SCGetGameConfig GameId - */ - - /** - * Constructs a new SCGetGameConfig. - * @memberof gamehall - * @classdesc Represents a SCGetGameConfig. - * @implements ISCGetGameConfig - * @constructor - * @param {gamehall.ISCGetGameConfig=} [properties] Properties to set - */ - function SCGetGameConfig(properties) { - this.GameCfg = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGetGameConfig GameCfg. - * @member {Array.} GameCfg - * @memberof gamehall.SCGetGameConfig - * @instance - */ - SCGetGameConfig.prototype.GameCfg = $util.emptyArray; - - /** - * SCGetGameConfig GameId. - * @member {number} GameId - * @memberof gamehall.SCGetGameConfig - * @instance - */ - SCGetGameConfig.prototype.GameId = 0; - - /** - * Creates a new SCGetGameConfig instance using the specified properties. - * @function create - * @memberof gamehall.SCGetGameConfig - * @static - * @param {gamehall.ISCGetGameConfig=} [properties] Properties to set - * @returns {gamehall.SCGetGameConfig} SCGetGameConfig instance - */ - SCGetGameConfig.create = function create(properties) { - return new SCGetGameConfig(properties); - }; - - /** - * Encodes the specified SCGetGameConfig message. Does not implicitly {@link gamehall.SCGetGameConfig.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGetGameConfig - * @static - * @param {gamehall.ISCGetGameConfig} message SCGetGameConfig message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetGameConfig.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameCfg != null && message.GameCfg.length) - for (var i = 0; i < message.GameCfg.length; ++i) - $root.gamehall.GameConfig1.encode(message.GameCfg[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameId); - return writer; - }; - - /** - * Encodes the specified SCGetGameConfig message, length delimited. Does not implicitly {@link gamehall.SCGetGameConfig.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGetGameConfig - * @static - * @param {gamehall.ISCGetGameConfig} message SCGetGameConfig message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetGameConfig.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGetGameConfig message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGetGameConfig - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGetGameConfig} SCGetGameConfig - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetGameConfig.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGetGameConfig(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.GameCfg && message.GameCfg.length)) - message.GameCfg = []; - message.GameCfg.push($root.gamehall.GameConfig1.decode(reader, reader.uint32())); - break; - } - case 2: { - message.GameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGetGameConfig message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGetGameConfig - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGetGameConfig} SCGetGameConfig - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetGameConfig.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGetGameConfig message. - * @function verify - * @memberof gamehall.SCGetGameConfig - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGetGameConfig.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameCfg != null && message.hasOwnProperty("GameCfg")) { - if (!Array.isArray(message.GameCfg)) - return "GameCfg: array expected"; - for (var i = 0; i < message.GameCfg.length; ++i) { - var error = $root.gamehall.GameConfig1.verify(message.GameCfg[i]); - if (error) - return "GameCfg." + error; - } - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - return null; - }; - - /** - * Creates a SCGetGameConfig message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGetGameConfig - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGetGameConfig} SCGetGameConfig - */ - SCGetGameConfig.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGetGameConfig) - return object; - var message = new $root.gamehall.SCGetGameConfig(); - if (object.GameCfg) { - if (!Array.isArray(object.GameCfg)) - throw TypeError(".gamehall.SCGetGameConfig.GameCfg: array expected"); - message.GameCfg = []; - for (var i = 0; i < object.GameCfg.length; ++i) { - if (typeof object.GameCfg[i] !== "object") - throw TypeError(".gamehall.SCGetGameConfig.GameCfg: object expected"); - message.GameCfg[i] = $root.gamehall.GameConfig1.fromObject(object.GameCfg[i]); - } - } - if (object.GameId != null) - message.GameId = object.GameId | 0; - return message; - }; - - /** - * Creates a plain object from a SCGetGameConfig message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGetGameConfig - * @static - * @param {gamehall.SCGetGameConfig} message SCGetGameConfig - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGetGameConfig.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GameCfg = []; - if (options.defaults) - object.GameId = 0; - if (message.GameCfg && message.GameCfg.length) { - object.GameCfg = []; - for (var j = 0; j < message.GameCfg.length; ++j) - object.GameCfg[j] = $root.gamehall.GameConfig1.toObject(message.GameCfg[j], options); - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - return object; - }; - - /** - * Converts this SCGetGameConfig to JSON. - * @function toJSON - * @memberof gamehall.SCGetGameConfig - * @instance - * @returns {Object.} JSON object - */ - SCGetGameConfig.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGetGameConfig - * @function getTypeUrl - * @memberof gamehall.SCGetGameConfig - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGetGameConfig.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGetGameConfig"; - }; - - return SCGetGameConfig; - })(); - - gamehall.SCChangeGameStatus = (function() { - - /** - * Properties of a SCChangeGameStatus. - * @memberof gamehall - * @interface ISCChangeGameStatus - * @property {Array.|null} [GameCfg] SCChangeGameStatus GameCfg - */ - - /** - * Constructs a new SCChangeGameStatus. - * @memberof gamehall - * @classdesc Represents a SCChangeGameStatus. - * @implements ISCChangeGameStatus - * @constructor - * @param {gamehall.ISCChangeGameStatus=} [properties] Properties to set - */ - function SCChangeGameStatus(properties) { - this.GameCfg = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCChangeGameStatus GameCfg. - * @member {Array.} GameCfg - * @memberof gamehall.SCChangeGameStatus - * @instance - */ - SCChangeGameStatus.prototype.GameCfg = $util.emptyArray; - - /** - * Creates a new SCChangeGameStatus instance using the specified properties. - * @function create - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {gamehall.ISCChangeGameStatus=} [properties] Properties to set - * @returns {gamehall.SCChangeGameStatus} SCChangeGameStatus instance - */ - SCChangeGameStatus.create = function create(properties) { - return new SCChangeGameStatus(properties); - }; - - /** - * Encodes the specified SCChangeGameStatus message. Does not implicitly {@link gamehall.SCChangeGameStatus.verify|verify} messages. - * @function encode - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {gamehall.ISCChangeGameStatus} message SCChangeGameStatus message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCChangeGameStatus.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameCfg != null && message.GameCfg.length) - for (var i = 0; i < message.GameCfg.length; ++i) - $root.gamehall.GameConfig1.encode(message.GameCfg[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCChangeGameStatus message, length delimited. Does not implicitly {@link gamehall.SCChangeGameStatus.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {gamehall.ISCChangeGameStatus} message SCChangeGameStatus message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCChangeGameStatus.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCChangeGameStatus message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCChangeGameStatus} SCChangeGameStatus - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCChangeGameStatus.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCChangeGameStatus(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.GameCfg && message.GameCfg.length)) - message.GameCfg = []; - message.GameCfg.push($root.gamehall.GameConfig1.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCChangeGameStatus message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCChangeGameStatus} SCChangeGameStatus - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCChangeGameStatus.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCChangeGameStatus message. - * @function verify - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCChangeGameStatus.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameCfg != null && message.hasOwnProperty("GameCfg")) { - if (!Array.isArray(message.GameCfg)) - return "GameCfg: array expected"; - for (var i = 0; i < message.GameCfg.length; ++i) { - var error = $root.gamehall.GameConfig1.verify(message.GameCfg[i]); - if (error) - return "GameCfg." + error; - } - } - return null; - }; - - /** - * Creates a SCChangeGameStatus message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCChangeGameStatus} SCChangeGameStatus - */ - SCChangeGameStatus.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCChangeGameStatus) - return object; - var message = new $root.gamehall.SCChangeGameStatus(); - if (object.GameCfg) { - if (!Array.isArray(object.GameCfg)) - throw TypeError(".gamehall.SCChangeGameStatus.GameCfg: array expected"); - message.GameCfg = []; - for (var i = 0; i < object.GameCfg.length; ++i) { - if (typeof object.GameCfg[i] !== "object") - throw TypeError(".gamehall.SCChangeGameStatus.GameCfg: object expected"); - message.GameCfg[i] = $root.gamehall.GameConfig1.fromObject(object.GameCfg[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCChangeGameStatus message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {gamehall.SCChangeGameStatus} message SCChangeGameStatus - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCChangeGameStatus.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GameCfg = []; - if (message.GameCfg && message.GameCfg.length) { - object.GameCfg = []; - for (var j = 0; j < message.GameCfg.length; ++j) - object.GameCfg[j] = $root.gamehall.GameConfig1.toObject(message.GameCfg[j], options); - } - return object; - }; - - /** - * Converts this SCChangeGameStatus to JSON. - * @function toJSON - * @memberof gamehall.SCChangeGameStatus - * @instance - * @returns {Object.} JSON object - */ - SCChangeGameStatus.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCChangeGameStatus - * @function getTypeUrl - * @memberof gamehall.SCChangeGameStatus - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCChangeGameStatus.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCChangeGameStatus"; - }; - - return SCChangeGameStatus; - })(); - - gamehall.SCChangeEntrySwitch = (function() { - - /** - * Properties of a SCChangeEntrySwitch. - * @memberof gamehall - * @interface ISCChangeEntrySwitch - * @property {Array.|null} [GameCfg] SCChangeEntrySwitch GameCfg - */ - - /** - * Constructs a new SCChangeEntrySwitch. - * @memberof gamehall - * @classdesc Represents a SCChangeEntrySwitch. - * @implements ISCChangeEntrySwitch - * @constructor - * @param {gamehall.ISCChangeEntrySwitch=} [properties] Properties to set - */ - function SCChangeEntrySwitch(properties) { - this.GameCfg = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCChangeEntrySwitch GameCfg. - * @member {Array.} GameCfg - * @memberof gamehall.SCChangeEntrySwitch - * @instance - */ - SCChangeEntrySwitch.prototype.GameCfg = $util.emptyArray; - - /** - * Creates a new SCChangeEntrySwitch instance using the specified properties. - * @function create - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {gamehall.ISCChangeEntrySwitch=} [properties] Properties to set - * @returns {gamehall.SCChangeEntrySwitch} SCChangeEntrySwitch instance - */ - SCChangeEntrySwitch.create = function create(properties) { - return new SCChangeEntrySwitch(properties); - }; - - /** - * Encodes the specified SCChangeEntrySwitch message. Does not implicitly {@link gamehall.SCChangeEntrySwitch.verify|verify} messages. - * @function encode - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {gamehall.ISCChangeEntrySwitch} message SCChangeEntrySwitch message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCChangeEntrySwitch.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameCfg != null && message.GameCfg.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.GameCfg.length; ++i) - writer.int32(message.GameCfg[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCChangeEntrySwitch message, length delimited. Does not implicitly {@link gamehall.SCChangeEntrySwitch.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {gamehall.ISCChangeEntrySwitch} message SCChangeEntrySwitch message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCChangeEntrySwitch.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCChangeEntrySwitch message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCChangeEntrySwitch} SCChangeEntrySwitch - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCChangeEntrySwitch.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCChangeEntrySwitch(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.GameCfg && message.GameCfg.length)) - message.GameCfg = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.GameCfg.push(reader.int32()); - } else - message.GameCfg.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCChangeEntrySwitch message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCChangeEntrySwitch} SCChangeEntrySwitch - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCChangeEntrySwitch.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCChangeEntrySwitch message. - * @function verify - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCChangeEntrySwitch.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameCfg != null && message.hasOwnProperty("GameCfg")) { - if (!Array.isArray(message.GameCfg)) - return "GameCfg: array expected"; - for (var i = 0; i < message.GameCfg.length; ++i) - if (!$util.isInteger(message.GameCfg[i])) - return "GameCfg: integer[] expected"; - } - return null; - }; - - /** - * Creates a SCChangeEntrySwitch message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCChangeEntrySwitch} SCChangeEntrySwitch - */ - SCChangeEntrySwitch.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCChangeEntrySwitch) - return object; - var message = new $root.gamehall.SCChangeEntrySwitch(); - if (object.GameCfg) { - if (!Array.isArray(object.GameCfg)) - throw TypeError(".gamehall.SCChangeEntrySwitch.GameCfg: array expected"); - message.GameCfg = []; - for (var i = 0; i < object.GameCfg.length; ++i) - message.GameCfg[i] = object.GameCfg[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a SCChangeEntrySwitch message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {gamehall.SCChangeEntrySwitch} message SCChangeEntrySwitch - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCChangeEntrySwitch.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GameCfg = []; - if (message.GameCfg && message.GameCfg.length) { - object.GameCfg = []; - for (var j = 0; j < message.GameCfg.length; ++j) - object.GameCfg[j] = message.GameCfg[j]; - } - return object; - }; - - /** - * Converts this SCChangeEntrySwitch to JSON. - * @function toJSON - * @memberof gamehall.SCChangeEntrySwitch - * @instance - * @returns {Object.} JSON object - */ - SCChangeEntrySwitch.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCChangeEntrySwitch - * @function getTypeUrl - * @memberof gamehall.SCChangeEntrySwitch - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCChangeEntrySwitch.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCChangeEntrySwitch"; - }; - - return SCChangeEntrySwitch; - })(); - - gamehall.CSEnterGame = (function() { - - /** - * Properties of a CSEnterGame. - * @memberof gamehall - * @interface ICSEnterGame - * @property {number|null} [Id] CSEnterGame Id - * @property {Array.|null} [OpParams] CSEnterGame OpParams - * @property {string|null} [Platform] CSEnterGame Platform - * @property {number|null} [ApkVer] CSEnterGame ApkVer - * @property {number|null} [ResVer] CSEnterGame ResVer - */ - - /** - * Constructs a new CSEnterGame. - * @memberof gamehall - * @classdesc Represents a CSEnterGame. - * @implements ICSEnterGame - * @constructor - * @param {gamehall.ICSEnterGame=} [properties] Properties to set - */ - function CSEnterGame(properties) { - this.OpParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSEnterGame Id. - * @member {number} Id - * @memberof gamehall.CSEnterGame - * @instance - */ - CSEnterGame.prototype.Id = 0; - - /** - * CSEnterGame OpParams. - * @member {Array.} OpParams - * @memberof gamehall.CSEnterGame - * @instance - */ - CSEnterGame.prototype.OpParams = $util.emptyArray; - - /** - * CSEnterGame Platform. - * @member {string} Platform - * @memberof gamehall.CSEnterGame - * @instance - */ - CSEnterGame.prototype.Platform = ""; - - /** - * CSEnterGame ApkVer. - * @member {number} ApkVer - * @memberof gamehall.CSEnterGame - * @instance - */ - CSEnterGame.prototype.ApkVer = 0; - - /** - * CSEnterGame ResVer. - * @member {number} ResVer - * @memberof gamehall.CSEnterGame - * @instance - */ - CSEnterGame.prototype.ResVer = 0; - - /** - * Creates a new CSEnterGame instance using the specified properties. - * @function create - * @memberof gamehall.CSEnterGame - * @static - * @param {gamehall.ICSEnterGame=} [properties] Properties to set - * @returns {gamehall.CSEnterGame} CSEnterGame instance - */ - CSEnterGame.create = function create(properties) { - return new CSEnterGame(properties); - }; - - /** - * Encodes the specified CSEnterGame message. Does not implicitly {@link gamehall.CSEnterGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSEnterGame - * @static - * @param {gamehall.ICSEnterGame} message CSEnterGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.OpParams != null && message.OpParams.length) { - writer.uint32(/* id 2, wireType 2 =*/18).fork(); - for (var i = 0; i < message.OpParams.length; ++i) - writer.int32(message.OpParams[i]); - writer.ldelim(); - } - if (message.Platform != null && Object.hasOwnProperty.call(message, "Platform")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.Platform); - if (message.ApkVer != null && Object.hasOwnProperty.call(message, "ApkVer")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.ApkVer); - if (message.ResVer != null && Object.hasOwnProperty.call(message, "ResVer")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.ResVer); - return writer; - }; - - /** - * Encodes the specified CSEnterGame message, length delimited. Does not implicitly {@link gamehall.CSEnterGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSEnterGame - * @static - * @param {gamehall.ICSEnterGame} message CSEnterGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSEnterGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSEnterGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSEnterGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSEnterGame} CSEnterGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSEnterGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - if (!(message.OpParams && message.OpParams.length)) - message.OpParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OpParams.push(reader.int32()); - } else - message.OpParams.push(reader.int32()); - break; - } - case 3: { - message.Platform = reader.string(); - break; - } - case 4: { - message.ApkVer = reader.int32(); - break; - } - case 5: { - message.ResVer = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSEnterGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSEnterGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSEnterGame} CSEnterGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSEnterGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSEnterGame message. - * @function verify - * @memberof gamehall.CSEnterGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSEnterGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpParams != null && message.hasOwnProperty("OpParams")) { - if (!Array.isArray(message.OpParams)) - return "OpParams: array expected"; - for (var i = 0; i < message.OpParams.length; ++i) - if (!$util.isInteger(message.OpParams[i])) - return "OpParams: integer[] expected"; - } - if (message.Platform != null && message.hasOwnProperty("Platform")) - if (!$util.isString(message.Platform)) - return "Platform: string expected"; - if (message.ApkVer != null && message.hasOwnProperty("ApkVer")) - if (!$util.isInteger(message.ApkVer)) - return "ApkVer: integer expected"; - if (message.ResVer != null && message.hasOwnProperty("ResVer")) - if (!$util.isInteger(message.ResVer)) - return "ResVer: integer expected"; - return null; - }; - - /** - * Creates a CSEnterGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSEnterGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSEnterGame} CSEnterGame - */ - CSEnterGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSEnterGame) - return object; - var message = new $root.gamehall.CSEnterGame(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.OpParams) { - if (!Array.isArray(object.OpParams)) - throw TypeError(".gamehall.CSEnterGame.OpParams: array expected"); - message.OpParams = []; - for (var i = 0; i < object.OpParams.length; ++i) - message.OpParams[i] = object.OpParams[i] | 0; - } - if (object.Platform != null) - message.Platform = String(object.Platform); - if (object.ApkVer != null) - message.ApkVer = object.ApkVer | 0; - if (object.ResVer != null) - message.ResVer = object.ResVer | 0; - return message; - }; - - /** - * Creates a plain object from a CSEnterGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSEnterGame - * @static - * @param {gamehall.CSEnterGame} message CSEnterGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSEnterGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OpParams = []; - if (options.defaults) { - object.Id = 0; - object.Platform = ""; - object.ApkVer = 0; - object.ResVer = 0; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpParams && message.OpParams.length) { - object.OpParams = []; - for (var j = 0; j < message.OpParams.length; ++j) - object.OpParams[j] = message.OpParams[j]; - } - if (message.Platform != null && message.hasOwnProperty("Platform")) - object.Platform = message.Platform; - if (message.ApkVer != null && message.hasOwnProperty("ApkVer")) - object.ApkVer = message.ApkVer; - if (message.ResVer != null && message.hasOwnProperty("ResVer")) - object.ResVer = message.ResVer; - return object; - }; - - /** - * Converts this CSEnterGame to JSON. - * @function toJSON - * @memberof gamehall.CSEnterGame - * @instance - * @returns {Object.} JSON object - */ - CSEnterGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSEnterGame - * @function getTypeUrl - * @memberof gamehall.CSEnterGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSEnterGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSEnterGame"; - }; - - return CSEnterGame; - })(); - - gamehall.SCEnterGame = (function() { - - /** - * Properties of a SCEnterGame. - * @memberof gamehall - * @interface ISCEnterGame - * @property {gamehall.OpResultCode_Game|null} [OpCode] SCEnterGame OpCode - * @property {number|null} [Id] SCEnterGame Id - * @property {Array.|null} [OpParams] SCEnterGame OpParams - * @property {number|null} [MinApkVer] SCEnterGame MinApkVer - * @property {number|null} [LatestApkVer] SCEnterGame LatestApkVer - * @property {number|null} [MinResVer] SCEnterGame MinResVer - * @property {number|null} [LatestResVer] SCEnterGame LatestResVer - */ - - /** - * Constructs a new SCEnterGame. - * @memberof gamehall - * @classdesc Represents a SCEnterGame. - * @implements ISCEnterGame - * @constructor - * @param {gamehall.ISCEnterGame=} [properties] Properties to set - */ - function SCEnterGame(properties) { - this.OpParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCEnterGame OpCode. - * @member {gamehall.OpResultCode_Game} OpCode - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.OpCode = 0; - - /** - * SCEnterGame Id. - * @member {number} Id - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.Id = 0; - - /** - * SCEnterGame OpParams. - * @member {Array.} OpParams - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.OpParams = $util.emptyArray; - - /** - * SCEnterGame MinApkVer. - * @member {number} MinApkVer - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.MinApkVer = 0; - - /** - * SCEnterGame LatestApkVer. - * @member {number} LatestApkVer - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.LatestApkVer = 0; - - /** - * SCEnterGame MinResVer. - * @member {number} MinResVer - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.MinResVer = 0; - - /** - * SCEnterGame LatestResVer. - * @member {number} LatestResVer - * @memberof gamehall.SCEnterGame - * @instance - */ - SCEnterGame.prototype.LatestResVer = 0; - - /** - * Creates a new SCEnterGame instance using the specified properties. - * @function create - * @memberof gamehall.SCEnterGame - * @static - * @param {gamehall.ISCEnterGame=} [properties] Properties to set - * @returns {gamehall.SCEnterGame} SCEnterGame instance - */ - SCEnterGame.create = function create(properties) { - return new SCEnterGame(properties); - }; - - /** - * Encodes the specified SCEnterGame message. Does not implicitly {@link gamehall.SCEnterGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCEnterGame - * @static - * @param {gamehall.ISCEnterGame} message SCEnterGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpCode); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Id); - if (message.OpParams != null && message.OpParams.length) { - writer.uint32(/* id 3, wireType 2 =*/26).fork(); - for (var i = 0; i < message.OpParams.length; ++i) - writer.int32(message.OpParams[i]); - writer.ldelim(); - } - if (message.MinApkVer != null && Object.hasOwnProperty.call(message, "MinApkVer")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.MinApkVer); - if (message.LatestApkVer != null && Object.hasOwnProperty.call(message, "LatestApkVer")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.LatestApkVer); - if (message.MinResVer != null && Object.hasOwnProperty.call(message, "MinResVer")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.MinResVer); - if (message.LatestResVer != null && Object.hasOwnProperty.call(message, "LatestResVer")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.LatestResVer); - return writer; - }; - - /** - * Encodes the specified SCEnterGame message, length delimited. Does not implicitly {@link gamehall.SCEnterGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCEnterGame - * @static - * @param {gamehall.ISCEnterGame} message SCEnterGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCEnterGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCEnterGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCEnterGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCEnterGame} SCEnterGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCEnterGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpCode = reader.int32(); - break; - } - case 2: { - message.Id = reader.int32(); - break; - } - case 3: { - if (!(message.OpParams && message.OpParams.length)) - message.OpParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OpParams.push(reader.int32()); - } else - message.OpParams.push(reader.int32()); - break; - } - case 4: { - message.MinApkVer = reader.int32(); - break; - } - case 5: { - message.LatestApkVer = reader.int32(); - break; - } - case 6: { - message.MinResVer = reader.int32(); - break; - } - case 7: { - message.LatestResVer = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCEnterGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCEnterGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCEnterGame} SCEnterGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCEnterGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCEnterGame message. - * @function verify - * @memberof gamehall.SCEnterGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCEnterGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - switch (message.OpCode) { - default: - return "OpCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpParams != null && message.hasOwnProperty("OpParams")) { - if (!Array.isArray(message.OpParams)) - return "OpParams: array expected"; - for (var i = 0; i < message.OpParams.length; ++i) - if (!$util.isInteger(message.OpParams[i])) - return "OpParams: integer[] expected"; - } - if (message.MinApkVer != null && message.hasOwnProperty("MinApkVer")) - if (!$util.isInteger(message.MinApkVer)) - return "MinApkVer: integer expected"; - if (message.LatestApkVer != null && message.hasOwnProperty("LatestApkVer")) - if (!$util.isInteger(message.LatestApkVer)) - return "LatestApkVer: integer expected"; - if (message.MinResVer != null && message.hasOwnProperty("MinResVer")) - if (!$util.isInteger(message.MinResVer)) - return "MinResVer: integer expected"; - if (message.LatestResVer != null && message.hasOwnProperty("LatestResVer")) - if (!$util.isInteger(message.LatestResVer)) - return "LatestResVer: integer expected"; - return null; - }; - - /** - * Creates a SCEnterGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCEnterGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCEnterGame} SCEnterGame - */ - SCEnterGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCEnterGame) - return object; - var message = new $root.gamehall.SCEnterGame(); - switch (object.OpCode) { - default: - if (typeof object.OpCode === "number") { - message.OpCode = object.OpCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpCode = 9010; - break; - } - if (object.Id != null) - message.Id = object.Id | 0; - if (object.OpParams) { - if (!Array.isArray(object.OpParams)) - throw TypeError(".gamehall.SCEnterGame.OpParams: array expected"); - message.OpParams = []; - for (var i = 0; i < object.OpParams.length; ++i) - message.OpParams[i] = object.OpParams[i] | 0; - } - if (object.MinApkVer != null) - message.MinApkVer = object.MinApkVer | 0; - if (object.LatestApkVer != null) - message.LatestApkVer = object.LatestApkVer | 0; - if (object.MinResVer != null) - message.MinResVer = object.MinResVer | 0; - if (object.LatestResVer != null) - message.LatestResVer = object.LatestResVer | 0; - return message; - }; - - /** - * Creates a plain object from a SCEnterGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCEnterGame - * @static - * @param {gamehall.SCEnterGame} message SCEnterGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCEnterGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OpParams = []; - if (options.defaults) { - object.OpCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.Id = 0; - object.MinApkVer = 0; - object.LatestApkVer = 0; - object.MinResVer = 0; - object.LatestResVer = 0; - } - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - object.OpCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpCode] === undefined ? message.OpCode : $root.gamehall.OpResultCode_Game[message.OpCode] : message.OpCode; - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpParams && message.OpParams.length) { - object.OpParams = []; - for (var j = 0; j < message.OpParams.length; ++j) - object.OpParams[j] = message.OpParams[j]; - } - if (message.MinApkVer != null && message.hasOwnProperty("MinApkVer")) - object.MinApkVer = message.MinApkVer; - if (message.LatestApkVer != null && message.hasOwnProperty("LatestApkVer")) - object.LatestApkVer = message.LatestApkVer; - if (message.MinResVer != null && message.hasOwnProperty("MinResVer")) - object.MinResVer = message.MinResVer; - if (message.LatestResVer != null && message.hasOwnProperty("LatestResVer")) - object.LatestResVer = message.LatestResVer; - return object; - }; - - /** - * Converts this SCEnterGame to JSON. - * @function toJSON - * @memberof gamehall.SCEnterGame - * @instance - * @returns {Object.} JSON object - */ - SCEnterGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCEnterGame - * @function getTypeUrl - * @memberof gamehall.SCEnterGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCEnterGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCEnterGame"; - }; - - return SCEnterGame; - })(); - - gamehall.CSQuitGame = (function() { - - /** - * Properties of a CSQuitGame. - * @memberof gamehall - * @interface ICSQuitGame - * @property {number|null} [Id] CSQuitGame Id - * @property {boolean|null} [IsAudience] CSQuitGame IsAudience - */ - - /** - * Constructs a new CSQuitGame. - * @memberof gamehall - * @classdesc Represents a CSQuitGame. - * @implements ICSQuitGame - * @constructor - * @param {gamehall.ICSQuitGame=} [properties] Properties to set - */ - function CSQuitGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSQuitGame Id. - * @member {number} Id - * @memberof gamehall.CSQuitGame - * @instance - */ - CSQuitGame.prototype.Id = 0; - - /** - * CSQuitGame IsAudience. - * @member {boolean} IsAudience - * @memberof gamehall.CSQuitGame - * @instance - */ - CSQuitGame.prototype.IsAudience = false; - - /** - * Creates a new CSQuitGame instance using the specified properties. - * @function create - * @memberof gamehall.CSQuitGame - * @static - * @param {gamehall.ICSQuitGame=} [properties] Properties to set - * @returns {gamehall.CSQuitGame} CSQuitGame instance - */ - CSQuitGame.create = function create(properties) { - return new CSQuitGame(properties); - }; - - /** - * Encodes the specified CSQuitGame message. Does not implicitly {@link gamehall.CSQuitGame.verify|verify} messages. - * @function encode - * @memberof gamehall.CSQuitGame - * @static - * @param {gamehall.ICSQuitGame} message CSQuitGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSQuitGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.IsAudience != null && Object.hasOwnProperty.call(message, "IsAudience")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.IsAudience); - return writer; - }; - - /** - * Encodes the specified CSQuitGame message, length delimited. Does not implicitly {@link gamehall.CSQuitGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSQuitGame - * @static - * @param {gamehall.ICSQuitGame} message CSQuitGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSQuitGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSQuitGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSQuitGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSQuitGame} CSQuitGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSQuitGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSQuitGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.IsAudience = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSQuitGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSQuitGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSQuitGame} CSQuitGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSQuitGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSQuitGame message. - * @function verify - * @memberof gamehall.CSQuitGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSQuitGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.IsAudience != null && message.hasOwnProperty("IsAudience")) - if (typeof message.IsAudience !== "boolean") - return "IsAudience: boolean expected"; - return null; - }; - - /** - * Creates a CSQuitGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSQuitGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSQuitGame} CSQuitGame - */ - CSQuitGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSQuitGame) - return object; - var message = new $root.gamehall.CSQuitGame(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.IsAudience != null) - message.IsAudience = Boolean(object.IsAudience); - return message; - }; - - /** - * Creates a plain object from a CSQuitGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSQuitGame - * @static - * @param {gamehall.CSQuitGame} message CSQuitGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSQuitGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Id = 0; - object.IsAudience = false; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.IsAudience != null && message.hasOwnProperty("IsAudience")) - object.IsAudience = message.IsAudience; - return object; - }; - - /** - * Converts this CSQuitGame to JSON. - * @function toJSON - * @memberof gamehall.CSQuitGame - * @instance - * @returns {Object.} JSON object - */ - CSQuitGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSQuitGame - * @function getTypeUrl - * @memberof gamehall.CSQuitGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSQuitGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSQuitGame"; - }; - - return CSQuitGame; - })(); - - gamehall.SCQuitGame = (function() { - - /** - * Properties of a SCQuitGame. - * @memberof gamehall - * @interface ISCQuitGame - * @property {gamehall.OpResultCode_Game|null} [OpCode] SCQuitGame OpCode - * @property {number|null} [Id] SCQuitGame Id - * @property {number|null} [Reason] SCQuitGame Reason - */ - - /** - * Constructs a new SCQuitGame. - * @memberof gamehall - * @classdesc Represents a SCQuitGame. - * @implements ISCQuitGame - * @constructor - * @param {gamehall.ISCQuitGame=} [properties] Properties to set - */ - function SCQuitGame(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCQuitGame OpCode. - * @member {gamehall.OpResultCode_Game} OpCode - * @memberof gamehall.SCQuitGame - * @instance - */ - SCQuitGame.prototype.OpCode = 0; - - /** - * SCQuitGame Id. - * @member {number} Id - * @memberof gamehall.SCQuitGame - * @instance - */ - SCQuitGame.prototype.Id = 0; - - /** - * SCQuitGame Reason. - * @member {number} Reason - * @memberof gamehall.SCQuitGame - * @instance - */ - SCQuitGame.prototype.Reason = 0; - - /** - * Creates a new SCQuitGame instance using the specified properties. - * @function create - * @memberof gamehall.SCQuitGame - * @static - * @param {gamehall.ISCQuitGame=} [properties] Properties to set - * @returns {gamehall.SCQuitGame} SCQuitGame instance - */ - SCQuitGame.create = function create(properties) { - return new SCQuitGame(properties); - }; - - /** - * Encodes the specified SCQuitGame message. Does not implicitly {@link gamehall.SCQuitGame.verify|verify} messages. - * @function encode - * @memberof gamehall.SCQuitGame - * @static - * @param {gamehall.ISCQuitGame} message SCQuitGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCQuitGame.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpCode); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Id); - if (message.Reason != null && Object.hasOwnProperty.call(message, "Reason")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Reason); - return writer; - }; - - /** - * Encodes the specified SCQuitGame message, length delimited. Does not implicitly {@link gamehall.SCQuitGame.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCQuitGame - * @static - * @param {gamehall.ISCQuitGame} message SCQuitGame message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCQuitGame.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCQuitGame message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCQuitGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCQuitGame} SCQuitGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCQuitGame.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCQuitGame(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpCode = reader.int32(); - break; - } - case 2: { - message.Id = reader.int32(); - break; - } - case 3: { - message.Reason = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCQuitGame message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCQuitGame - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCQuitGame} SCQuitGame - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCQuitGame.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCQuitGame message. - * @function verify - * @memberof gamehall.SCQuitGame - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCQuitGame.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - switch (message.OpCode) { - default: - return "OpCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.Reason != null && message.hasOwnProperty("Reason")) - if (!$util.isInteger(message.Reason)) - return "Reason: integer expected"; - return null; - }; - - /** - * Creates a SCQuitGame message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCQuitGame - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCQuitGame} SCQuitGame - */ - SCQuitGame.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCQuitGame) - return object; - var message = new $root.gamehall.SCQuitGame(); - switch (object.OpCode) { - default: - if (typeof object.OpCode === "number") { - message.OpCode = object.OpCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpCode = 9010; - break; - } - if (object.Id != null) - message.Id = object.Id | 0; - if (object.Reason != null) - message.Reason = object.Reason | 0; - return message; - }; - - /** - * Creates a plain object from a SCQuitGame message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCQuitGame - * @static - * @param {gamehall.SCQuitGame} message SCQuitGame - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCQuitGame.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - object.Id = 0; - object.Reason = 0; - } - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - object.OpCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpCode] === undefined ? message.OpCode : $root.gamehall.OpResultCode_Game[message.OpCode] : message.OpCode; - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.Reason != null && message.hasOwnProperty("Reason")) - object.Reason = message.Reason; - return object; - }; - - /** - * Converts this SCQuitGame to JSON. - * @function toJSON - * @memberof gamehall.SCQuitGame - * @instance - * @returns {Object.} JSON object - */ - SCQuitGame.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCQuitGame - * @function getTypeUrl - * @memberof gamehall.SCQuitGame - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCQuitGame.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCQuitGame"; - }; - - return SCQuitGame; - })(); - - gamehall.CSUploadLoc = (function() { - - /** - * Properties of a CSUploadLoc. - * @memberof gamehall - * @interface ICSUploadLoc - * @property {number|null} [Longitude] CSUploadLoc Longitude - * @property {number|null} [Latitude] CSUploadLoc Latitude - * @property {string|null} [City] CSUploadLoc City - */ - - /** - * Constructs a new CSUploadLoc. - * @memberof gamehall - * @classdesc Represents a CSUploadLoc. - * @implements ICSUploadLoc - * @constructor - * @param {gamehall.ICSUploadLoc=} [properties] Properties to set - */ - function CSUploadLoc(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSUploadLoc Longitude. - * @member {number} Longitude - * @memberof gamehall.CSUploadLoc - * @instance - */ - CSUploadLoc.prototype.Longitude = 0; - - /** - * CSUploadLoc Latitude. - * @member {number} Latitude - * @memberof gamehall.CSUploadLoc - * @instance - */ - CSUploadLoc.prototype.Latitude = 0; - - /** - * CSUploadLoc City. - * @member {string} City - * @memberof gamehall.CSUploadLoc - * @instance - */ - CSUploadLoc.prototype.City = ""; - - /** - * Creates a new CSUploadLoc instance using the specified properties. - * @function create - * @memberof gamehall.CSUploadLoc - * @static - * @param {gamehall.ICSUploadLoc=} [properties] Properties to set - * @returns {gamehall.CSUploadLoc} CSUploadLoc instance - */ - CSUploadLoc.create = function create(properties) { - return new CSUploadLoc(properties); - }; - - /** - * Encodes the specified CSUploadLoc message. Does not implicitly {@link gamehall.CSUploadLoc.verify|verify} messages. - * @function encode - * @memberof gamehall.CSUploadLoc - * @static - * @param {gamehall.ICSUploadLoc} message CSUploadLoc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSUploadLoc.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Longitude != null && Object.hasOwnProperty.call(message, "Longitude")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Longitude); - if (message.Latitude != null && Object.hasOwnProperty.call(message, "Latitude")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Latitude); - if (message.City != null && Object.hasOwnProperty.call(message, "City")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.City); - return writer; - }; - - /** - * Encodes the specified CSUploadLoc message, length delimited. Does not implicitly {@link gamehall.CSUploadLoc.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSUploadLoc - * @static - * @param {gamehall.ICSUploadLoc} message CSUploadLoc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSUploadLoc.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSUploadLoc message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSUploadLoc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSUploadLoc} CSUploadLoc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSUploadLoc.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSUploadLoc(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Longitude = reader.int32(); - break; - } - case 2: { - message.Latitude = reader.int32(); - break; - } - case 3: { - message.City = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSUploadLoc message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSUploadLoc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSUploadLoc} CSUploadLoc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSUploadLoc.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSUploadLoc message. - * @function verify - * @memberof gamehall.CSUploadLoc - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSUploadLoc.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Longitude != null && message.hasOwnProperty("Longitude")) - if (!$util.isInteger(message.Longitude)) - return "Longitude: integer expected"; - if (message.Latitude != null && message.hasOwnProperty("Latitude")) - if (!$util.isInteger(message.Latitude)) - return "Latitude: integer expected"; - if (message.City != null && message.hasOwnProperty("City")) - if (!$util.isString(message.City)) - return "City: string expected"; - return null; - }; - - /** - * Creates a CSUploadLoc message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSUploadLoc - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSUploadLoc} CSUploadLoc - */ - CSUploadLoc.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSUploadLoc) - return object; - var message = new $root.gamehall.CSUploadLoc(); - if (object.Longitude != null) - message.Longitude = object.Longitude | 0; - if (object.Latitude != null) - message.Latitude = object.Latitude | 0; - if (object.City != null) - message.City = String(object.City); - return message; - }; - - /** - * Creates a plain object from a CSUploadLoc message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSUploadLoc - * @static - * @param {gamehall.CSUploadLoc} message CSUploadLoc - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSUploadLoc.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Longitude = 0; - object.Latitude = 0; - object.City = ""; - } - if (message.Longitude != null && message.hasOwnProperty("Longitude")) - object.Longitude = message.Longitude; - if (message.Latitude != null && message.hasOwnProperty("Latitude")) - object.Latitude = message.Latitude; - if (message.City != null && message.hasOwnProperty("City")) - object.City = message.City; - return object; - }; - - /** - * Converts this CSUploadLoc to JSON. - * @function toJSON - * @memberof gamehall.CSUploadLoc - * @instance - * @returns {Object.} JSON object - */ - CSUploadLoc.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSUploadLoc - * @function getTypeUrl - * @memberof gamehall.CSUploadLoc - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSUploadLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSUploadLoc"; - }; - - return CSUploadLoc; - })(); - - gamehall.SCUploadLoc = (function() { - - /** - * Properties of a SCUploadLoc. - * @memberof gamehall - * @interface ISCUploadLoc - * @property {number|null} [Pos] SCUploadLoc Pos - * @property {number|null} [Longitude] SCUploadLoc Longitude - * @property {number|null} [Latitude] SCUploadLoc Latitude - * @property {string|null} [City] SCUploadLoc City - */ - - /** - * Constructs a new SCUploadLoc. - * @memberof gamehall - * @classdesc Represents a SCUploadLoc. - * @implements ISCUploadLoc - * @constructor - * @param {gamehall.ISCUploadLoc=} [properties] Properties to set - */ - function SCUploadLoc(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCUploadLoc Pos. - * @member {number} Pos - * @memberof gamehall.SCUploadLoc - * @instance - */ - SCUploadLoc.prototype.Pos = 0; - - /** - * SCUploadLoc Longitude. - * @member {number} Longitude - * @memberof gamehall.SCUploadLoc - * @instance - */ - SCUploadLoc.prototype.Longitude = 0; - - /** - * SCUploadLoc Latitude. - * @member {number} Latitude - * @memberof gamehall.SCUploadLoc - * @instance - */ - SCUploadLoc.prototype.Latitude = 0; - - /** - * SCUploadLoc City. - * @member {string} City - * @memberof gamehall.SCUploadLoc - * @instance - */ - SCUploadLoc.prototype.City = ""; - - /** - * Creates a new SCUploadLoc instance using the specified properties. - * @function create - * @memberof gamehall.SCUploadLoc - * @static - * @param {gamehall.ISCUploadLoc=} [properties] Properties to set - * @returns {gamehall.SCUploadLoc} SCUploadLoc instance - */ - SCUploadLoc.create = function create(properties) { - return new SCUploadLoc(properties); - }; - - /** - * Encodes the specified SCUploadLoc message. Does not implicitly {@link gamehall.SCUploadLoc.verify|verify} messages. - * @function encode - * @memberof gamehall.SCUploadLoc - * @static - * @param {gamehall.ISCUploadLoc} message SCUploadLoc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCUploadLoc.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Pos != null && Object.hasOwnProperty.call(message, "Pos")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Pos); - if (message.Longitude != null && Object.hasOwnProperty.call(message, "Longitude")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Longitude); - if (message.Latitude != null && Object.hasOwnProperty.call(message, "Latitude")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Latitude); - if (message.City != null && Object.hasOwnProperty.call(message, "City")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.City); - return writer; - }; - - /** - * Encodes the specified SCUploadLoc message, length delimited. Does not implicitly {@link gamehall.SCUploadLoc.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCUploadLoc - * @static - * @param {gamehall.ISCUploadLoc} message SCUploadLoc message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCUploadLoc.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCUploadLoc message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCUploadLoc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCUploadLoc} SCUploadLoc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCUploadLoc.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCUploadLoc(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Pos = reader.int32(); - break; - } - case 2: { - message.Longitude = reader.int32(); - break; - } - case 3: { - message.Latitude = reader.int32(); - break; - } - case 4: { - message.City = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCUploadLoc message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCUploadLoc - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCUploadLoc} SCUploadLoc - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCUploadLoc.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCUploadLoc message. - * @function verify - * @memberof gamehall.SCUploadLoc - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCUploadLoc.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Pos != null && message.hasOwnProperty("Pos")) - if (!$util.isInteger(message.Pos)) - return "Pos: integer expected"; - if (message.Longitude != null && message.hasOwnProperty("Longitude")) - if (!$util.isInteger(message.Longitude)) - return "Longitude: integer expected"; - if (message.Latitude != null && message.hasOwnProperty("Latitude")) - if (!$util.isInteger(message.Latitude)) - return "Latitude: integer expected"; - if (message.City != null && message.hasOwnProperty("City")) - if (!$util.isString(message.City)) - return "City: string expected"; - return null; - }; - - /** - * Creates a SCUploadLoc message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCUploadLoc - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCUploadLoc} SCUploadLoc - */ - SCUploadLoc.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCUploadLoc) - return object; - var message = new $root.gamehall.SCUploadLoc(); - if (object.Pos != null) - message.Pos = object.Pos | 0; - if (object.Longitude != null) - message.Longitude = object.Longitude | 0; - if (object.Latitude != null) - message.Latitude = object.Latitude | 0; - if (object.City != null) - message.City = String(object.City); - return message; - }; - - /** - * Creates a plain object from a SCUploadLoc message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCUploadLoc - * @static - * @param {gamehall.SCUploadLoc} message SCUploadLoc - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCUploadLoc.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Pos = 0; - object.Longitude = 0; - object.Latitude = 0; - object.City = ""; - } - if (message.Pos != null && message.hasOwnProperty("Pos")) - object.Pos = message.Pos; - if (message.Longitude != null && message.hasOwnProperty("Longitude")) - object.Longitude = message.Longitude; - if (message.Latitude != null && message.hasOwnProperty("Latitude")) - object.Latitude = message.Latitude; - if (message.City != null && message.hasOwnProperty("City")) - object.City = message.City; - return object; - }; - - /** - * Converts this SCUploadLoc to JSON. - * @function toJSON - * @memberof gamehall.SCUploadLoc - * @instance - * @returns {Object.} JSON object - */ - SCUploadLoc.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCUploadLoc - * @function getTypeUrl - * @memberof gamehall.SCUploadLoc - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCUploadLoc.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCUploadLoc"; - }; - - return SCUploadLoc; - })(); - - gamehall.CSAudienceSit = (function() { - - /** - * Properties of a CSAudienceSit. - * @memberof gamehall - * @interface ICSAudienceSit - * @property {number|null} [RoomId] CSAudienceSit RoomId - */ - - /** - * Constructs a new CSAudienceSit. - * @memberof gamehall - * @classdesc Represents a CSAudienceSit. - * @implements ICSAudienceSit - * @constructor - * @param {gamehall.ICSAudienceSit=} [properties] Properties to set - */ - function CSAudienceSit(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSAudienceSit RoomId. - * @member {number} RoomId - * @memberof gamehall.CSAudienceSit - * @instance - */ - CSAudienceSit.prototype.RoomId = 0; - - /** - * Creates a new CSAudienceSit instance using the specified properties. - * @function create - * @memberof gamehall.CSAudienceSit - * @static - * @param {gamehall.ICSAudienceSit=} [properties] Properties to set - * @returns {gamehall.CSAudienceSit} CSAudienceSit instance - */ - CSAudienceSit.create = function create(properties) { - return new CSAudienceSit(properties); - }; - - /** - * Encodes the specified CSAudienceSit message. Does not implicitly {@link gamehall.CSAudienceSit.verify|verify} messages. - * @function encode - * @memberof gamehall.CSAudienceSit - * @static - * @param {gamehall.ICSAudienceSit} message CSAudienceSit message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSAudienceSit.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - return writer; - }; - - /** - * Encodes the specified CSAudienceSit message, length delimited. Does not implicitly {@link gamehall.CSAudienceSit.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSAudienceSit - * @static - * @param {gamehall.ICSAudienceSit} message CSAudienceSit message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSAudienceSit.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSAudienceSit message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSAudienceSit - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSAudienceSit} CSAudienceSit - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSAudienceSit.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSAudienceSit(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSAudienceSit message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSAudienceSit - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSAudienceSit} CSAudienceSit - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSAudienceSit.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSAudienceSit message. - * @function verify - * @memberof gamehall.CSAudienceSit - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSAudienceSit.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - return null; - }; - - /** - * Creates a CSAudienceSit message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSAudienceSit - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSAudienceSit} CSAudienceSit - */ - CSAudienceSit.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSAudienceSit) - return object; - var message = new $root.gamehall.CSAudienceSit(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - return message; - }; - - /** - * Creates a plain object from a CSAudienceSit message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSAudienceSit - * @static - * @param {gamehall.CSAudienceSit} message CSAudienceSit - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSAudienceSit.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.RoomId = 0; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - return object; - }; - - /** - * Converts this CSAudienceSit to JSON. - * @function toJSON - * @memberof gamehall.CSAudienceSit - * @instance - * @returns {Object.} JSON object - */ - CSAudienceSit.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSAudienceSit - * @function getTypeUrl - * @memberof gamehall.CSAudienceSit - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSAudienceSit.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSAudienceSit"; - }; - - return CSAudienceSit; - })(); - - gamehall.SCAudienceSit = (function() { - - /** - * Properties of a SCAudienceSit. - * @memberof gamehall - * @interface ISCAudienceSit - * @property {number|null} [RoomId] SCAudienceSit RoomId - * @property {gamehall.OpResultCode_Game|null} [OpCode] SCAudienceSit OpCode - */ - - /** - * Constructs a new SCAudienceSit. - * @memberof gamehall - * @classdesc Represents a SCAudienceSit. - * @implements ISCAudienceSit - * @constructor - * @param {gamehall.ISCAudienceSit=} [properties] Properties to set - */ - function SCAudienceSit(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCAudienceSit RoomId. - * @member {number} RoomId - * @memberof gamehall.SCAudienceSit - * @instance - */ - SCAudienceSit.prototype.RoomId = 0; - - /** - * SCAudienceSit OpCode. - * @member {gamehall.OpResultCode_Game} OpCode - * @memberof gamehall.SCAudienceSit - * @instance - */ - SCAudienceSit.prototype.OpCode = 0; - - /** - * Creates a new SCAudienceSit instance using the specified properties. - * @function create - * @memberof gamehall.SCAudienceSit - * @static - * @param {gamehall.ISCAudienceSit=} [properties] Properties to set - * @returns {gamehall.SCAudienceSit} SCAudienceSit instance - */ - SCAudienceSit.create = function create(properties) { - return new SCAudienceSit(properties); - }; - - /** - * Encodes the specified SCAudienceSit message. Does not implicitly {@link gamehall.SCAudienceSit.verify|verify} messages. - * @function encode - * @memberof gamehall.SCAudienceSit - * @static - * @param {gamehall.ISCAudienceSit} message SCAudienceSit message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCAudienceSit.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RoomId != null && Object.hasOwnProperty.call(message, "RoomId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.RoomId); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpCode); - return writer; - }; - - /** - * Encodes the specified SCAudienceSit message, length delimited. Does not implicitly {@link gamehall.SCAudienceSit.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCAudienceSit - * @static - * @param {gamehall.ISCAudienceSit} message SCAudienceSit message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCAudienceSit.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCAudienceSit message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCAudienceSit - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCAudienceSit} SCAudienceSit - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCAudienceSit.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCAudienceSit(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RoomId = reader.int32(); - break; - } - case 2: { - message.OpCode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCAudienceSit message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCAudienceSit - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCAudienceSit} SCAudienceSit - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCAudienceSit.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCAudienceSit message. - * @function verify - * @memberof gamehall.SCAudienceSit - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCAudienceSit.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - if (!$util.isInteger(message.RoomId)) - return "RoomId: integer expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - switch (message.OpCode) { - default: - return "OpCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - return null; - }; - - /** - * Creates a SCAudienceSit message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCAudienceSit - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCAudienceSit} SCAudienceSit - */ - SCAudienceSit.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCAudienceSit) - return object; - var message = new $root.gamehall.SCAudienceSit(); - if (object.RoomId != null) - message.RoomId = object.RoomId | 0; - switch (object.OpCode) { - default: - if (typeof object.OpCode === "number") { - message.OpCode = object.OpCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpCode = 9010; - break; - } - return message; - }; - - /** - * Creates a plain object from a SCAudienceSit message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCAudienceSit - * @static - * @param {gamehall.SCAudienceSit} message SCAudienceSit - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCAudienceSit.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.RoomId = 0; - object.OpCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - } - if (message.RoomId != null && message.hasOwnProperty("RoomId")) - object.RoomId = message.RoomId; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - object.OpCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpCode] === undefined ? message.OpCode : $root.gamehall.OpResultCode_Game[message.OpCode] : message.OpCode; - return object; - }; - - /** - * Converts this SCAudienceSit to JSON. - * @function toJSON - * @memberof gamehall.SCAudienceSit - * @instance - * @returns {Object.} JSON object - */ - SCAudienceSit.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCAudienceSit - * @function getTypeUrl - * @memberof gamehall.SCAudienceSit - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCAudienceSit.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCAudienceSit"; - }; - - return SCAudienceSit; - })(); - - gamehall.CSRecordAndNotice = (function() { - - /** - * Properties of a CSRecordAndNotice. - * @memberof gamehall - * @interface ICSRecordAndNotice - * @property {number|null} [PageNo] CSRecordAndNotice PageNo - * @property {number|null} [PageSize] CSRecordAndNotice PageSize - * @property {number|null} [Opt] CSRecordAndNotice Opt - * @property {number|Long|null} [StartTime] CSRecordAndNotice StartTime - */ - - /** - * Constructs a new CSRecordAndNotice. - * @memberof gamehall - * @classdesc Represents a CSRecordAndNotice. - * @implements ICSRecordAndNotice - * @constructor - * @param {gamehall.ICSRecordAndNotice=} [properties] Properties to set - */ - function CSRecordAndNotice(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSRecordAndNotice PageNo. - * @member {number} PageNo - * @memberof gamehall.CSRecordAndNotice - * @instance - */ - CSRecordAndNotice.prototype.PageNo = 0; - - /** - * CSRecordAndNotice PageSize. - * @member {number} PageSize - * @memberof gamehall.CSRecordAndNotice - * @instance - */ - CSRecordAndNotice.prototype.PageSize = 0; - - /** - * CSRecordAndNotice Opt. - * @member {number} Opt - * @memberof gamehall.CSRecordAndNotice - * @instance - */ - CSRecordAndNotice.prototype.Opt = 0; - - /** - * CSRecordAndNotice StartTime. - * @member {number|Long} StartTime - * @memberof gamehall.CSRecordAndNotice - * @instance - */ - CSRecordAndNotice.prototype.StartTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new CSRecordAndNotice instance using the specified properties. - * @function create - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {gamehall.ICSRecordAndNotice=} [properties] Properties to set - * @returns {gamehall.CSRecordAndNotice} CSRecordAndNotice instance - */ - CSRecordAndNotice.create = function create(properties) { - return new CSRecordAndNotice(properties); - }; - - /** - * Encodes the specified CSRecordAndNotice message. Does not implicitly {@link gamehall.CSRecordAndNotice.verify|verify} messages. - * @function encode - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {gamehall.ICSRecordAndNotice} message CSRecordAndNotice message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSRecordAndNotice.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.PageNo); - if (message.PageSize != null && Object.hasOwnProperty.call(message, "PageSize")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.PageSize); - if (message.Opt != null && Object.hasOwnProperty.call(message, "Opt")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Opt); - if (message.StartTime != null && Object.hasOwnProperty.call(message, "StartTime")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.StartTime); - return writer; - }; - - /** - * Encodes the specified CSRecordAndNotice message, length delimited. Does not implicitly {@link gamehall.CSRecordAndNotice.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {gamehall.ICSRecordAndNotice} message CSRecordAndNotice message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSRecordAndNotice.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSRecordAndNotice message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSRecordAndNotice} CSRecordAndNotice - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSRecordAndNotice.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSRecordAndNotice(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.PageNo = reader.int32(); - break; - } - case 2: { - message.PageSize = reader.int32(); - break; - } - case 3: { - message.Opt = reader.int32(); - break; - } - case 4: { - message.StartTime = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSRecordAndNotice message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSRecordAndNotice} CSRecordAndNotice - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSRecordAndNotice.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSRecordAndNotice message. - * @function verify - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSRecordAndNotice.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - if (!$util.isInteger(message.PageSize)) - return "PageSize: integer expected"; - if (message.Opt != null && message.hasOwnProperty("Opt")) - if (!$util.isInteger(message.Opt)) - return "Opt: integer expected"; - if (message.StartTime != null && message.hasOwnProperty("StartTime")) - if (!$util.isInteger(message.StartTime) && !(message.StartTime && $util.isInteger(message.StartTime.low) && $util.isInteger(message.StartTime.high))) - return "StartTime: integer|Long expected"; - return null; - }; - - /** - * Creates a CSRecordAndNotice message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSRecordAndNotice} CSRecordAndNotice - */ - CSRecordAndNotice.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSRecordAndNotice) - return object; - var message = new $root.gamehall.CSRecordAndNotice(); - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - if (object.PageSize != null) - message.PageSize = object.PageSize | 0; - if (object.Opt != null) - message.Opt = object.Opt | 0; - if (object.StartTime != null) - if ($util.Long) - (message.StartTime = $util.Long.fromValue(object.StartTime)).unsigned = false; - else if (typeof object.StartTime === "string") - message.StartTime = parseInt(object.StartTime, 10); - else if (typeof object.StartTime === "number") - message.StartTime = object.StartTime; - else if (typeof object.StartTime === "object") - message.StartTime = new $util.LongBits(object.StartTime.low >>> 0, object.StartTime.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a CSRecordAndNotice message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {gamehall.CSRecordAndNotice} message CSRecordAndNotice - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSRecordAndNotice.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.PageNo = 0; - object.PageSize = 0; - object.Opt = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.StartTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.StartTime = options.longs === String ? "0" : 0; - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - object.PageSize = message.PageSize; - if (message.Opt != null && message.hasOwnProperty("Opt")) - object.Opt = message.Opt; - if (message.StartTime != null && message.hasOwnProperty("StartTime")) - if (typeof message.StartTime === "number") - object.StartTime = options.longs === String ? String(message.StartTime) : message.StartTime; - else - object.StartTime = options.longs === String ? $util.Long.prototype.toString.call(message.StartTime) : options.longs === Number ? new $util.LongBits(message.StartTime.low >>> 0, message.StartTime.high >>> 0).toNumber() : message.StartTime; - return object; - }; - - /** - * Converts this CSRecordAndNotice to JSON. - * @function toJSON - * @memberof gamehall.CSRecordAndNotice - * @instance - * @returns {Object.} JSON object - */ - CSRecordAndNotice.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSRecordAndNotice - * @function getTypeUrl - * @memberof gamehall.CSRecordAndNotice - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSRecordAndNotice.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSRecordAndNotice"; - }; - - return CSRecordAndNotice; - })(); - - gamehall.CommonNotice = (function() { - - /** - * Properties of a CommonNotice. - * @memberof gamehall - * @interface ICommonNotice - * @property {number|null} [Sort] CommonNotice Sort - * @property {string|null} [Title] CommonNotice Title - * @property {string|null} [Content] CommonNotice Content - * @property {string|null} [TypeName] CommonNotice TypeName - * @property {number|null} [Type] CommonNotice Type - * @property {number|null} [StartTime] CommonNotice StartTime - * @property {number|null} [EndTime] CommonNotice EndTime - * @property {string|null} [Platform] CommonNotice Platform - */ - - /** - * Constructs a new CommonNotice. - * @memberof gamehall - * @classdesc Represents a CommonNotice. - * @implements ICommonNotice - * @constructor - * @param {gamehall.ICommonNotice=} [properties] Properties to set - */ - function CommonNotice(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CommonNotice Sort. - * @member {number} Sort - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.Sort = 0; - - /** - * CommonNotice Title. - * @member {string} Title - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.Title = ""; - - /** - * CommonNotice Content. - * @member {string} Content - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.Content = ""; - - /** - * CommonNotice TypeName. - * @member {string} TypeName - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.TypeName = ""; - - /** - * CommonNotice Type. - * @member {number} Type - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.Type = 0; - - /** - * CommonNotice StartTime. - * @member {number} StartTime - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.StartTime = 0; - - /** - * CommonNotice EndTime. - * @member {number} EndTime - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.EndTime = 0; - - /** - * CommonNotice Platform. - * @member {string} Platform - * @memberof gamehall.CommonNotice - * @instance - */ - CommonNotice.prototype.Platform = ""; - - /** - * Creates a new CommonNotice instance using the specified properties. - * @function create - * @memberof gamehall.CommonNotice - * @static - * @param {gamehall.ICommonNotice=} [properties] Properties to set - * @returns {gamehall.CommonNotice} CommonNotice instance - */ - CommonNotice.create = function create(properties) { - return new CommonNotice(properties); - }; - - /** - * Encodes the specified CommonNotice message. Does not implicitly {@link gamehall.CommonNotice.verify|verify} messages. - * @function encode - * @memberof gamehall.CommonNotice - * @static - * @param {gamehall.ICommonNotice} message CommonNotice message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommonNotice.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Sort != null && Object.hasOwnProperty.call(message, "Sort")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Sort); - if (message.Title != null && Object.hasOwnProperty.call(message, "Title")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.Title); - if (message.Content != null && Object.hasOwnProperty.call(message, "Content")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.Content); - if (message.TypeName != null && Object.hasOwnProperty.call(message, "TypeName")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.TypeName); - if (message.Type != null && Object.hasOwnProperty.call(message, "Type")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.Type); - if (message.StartTime != null && Object.hasOwnProperty.call(message, "StartTime")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.StartTime); - if (message.EndTime != null && Object.hasOwnProperty.call(message, "EndTime")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.EndTime); - if (message.Platform != null && Object.hasOwnProperty.call(message, "Platform")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.Platform); - return writer; - }; - - /** - * Encodes the specified CommonNotice message, length delimited. Does not implicitly {@link gamehall.CommonNotice.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CommonNotice - * @static - * @param {gamehall.ICommonNotice} message CommonNotice message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CommonNotice.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CommonNotice message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CommonNotice - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CommonNotice} CommonNotice - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommonNotice.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CommonNotice(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Sort = reader.int32(); - break; - } - case 2: { - message.Title = reader.string(); - break; - } - case 3: { - message.Content = reader.string(); - break; - } - case 4: { - message.TypeName = reader.string(); - break; - } - case 5: { - message.Type = reader.int32(); - break; - } - case 6: { - message.StartTime = reader.int32(); - break; - } - case 7: { - message.EndTime = reader.int32(); - break; - } - case 8: { - message.Platform = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CommonNotice message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CommonNotice - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CommonNotice} CommonNotice - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CommonNotice.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CommonNotice message. - * @function verify - * @memberof gamehall.CommonNotice - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CommonNotice.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Sort != null && message.hasOwnProperty("Sort")) - if (!$util.isInteger(message.Sort)) - return "Sort: integer expected"; - if (message.Title != null && message.hasOwnProperty("Title")) - if (!$util.isString(message.Title)) - return "Title: string expected"; - if (message.Content != null && message.hasOwnProperty("Content")) - if (!$util.isString(message.Content)) - return "Content: string expected"; - if (message.TypeName != null && message.hasOwnProperty("TypeName")) - if (!$util.isString(message.TypeName)) - return "TypeName: string expected"; - if (message.Type != null && message.hasOwnProperty("Type")) - if (!$util.isInteger(message.Type)) - return "Type: integer expected"; - if (message.StartTime != null && message.hasOwnProperty("StartTime")) - if (!$util.isInteger(message.StartTime)) - return "StartTime: integer expected"; - if (message.EndTime != null && message.hasOwnProperty("EndTime")) - if (!$util.isInteger(message.EndTime)) - return "EndTime: integer expected"; - if (message.Platform != null && message.hasOwnProperty("Platform")) - if (!$util.isString(message.Platform)) - return "Platform: string expected"; - return null; - }; - - /** - * Creates a CommonNotice message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CommonNotice - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CommonNotice} CommonNotice - */ - CommonNotice.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CommonNotice) - return object; - var message = new $root.gamehall.CommonNotice(); - if (object.Sort != null) - message.Sort = object.Sort | 0; - if (object.Title != null) - message.Title = String(object.Title); - if (object.Content != null) - message.Content = String(object.Content); - if (object.TypeName != null) - message.TypeName = String(object.TypeName); - if (object.Type != null) - message.Type = object.Type | 0; - if (object.StartTime != null) - message.StartTime = object.StartTime | 0; - if (object.EndTime != null) - message.EndTime = object.EndTime | 0; - if (object.Platform != null) - message.Platform = String(object.Platform); - return message; - }; - - /** - * Creates a plain object from a CommonNotice message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CommonNotice - * @static - * @param {gamehall.CommonNotice} message CommonNotice - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CommonNotice.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Sort = 0; - object.Title = ""; - object.Content = ""; - object.TypeName = ""; - object.Type = 0; - object.StartTime = 0; - object.EndTime = 0; - object.Platform = ""; - } - if (message.Sort != null && message.hasOwnProperty("Sort")) - object.Sort = message.Sort; - if (message.Title != null && message.hasOwnProperty("Title")) - object.Title = message.Title; - if (message.Content != null && message.hasOwnProperty("Content")) - object.Content = message.Content; - if (message.TypeName != null && message.hasOwnProperty("TypeName")) - object.TypeName = message.TypeName; - if (message.Type != null && message.hasOwnProperty("Type")) - object.Type = message.Type; - if (message.StartTime != null && message.hasOwnProperty("StartTime")) - object.StartTime = message.StartTime; - if (message.EndTime != null && message.hasOwnProperty("EndTime")) - object.EndTime = message.EndTime; - if (message.Platform != null && message.hasOwnProperty("Platform")) - object.Platform = message.Platform; - return object; - }; - - /** - * Converts this CommonNotice to JSON. - * @function toJSON - * @memberof gamehall.CommonNotice - * @instance - * @returns {Object.} JSON object - */ - CommonNotice.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CommonNotice - * @function getTypeUrl - * @memberof gamehall.CommonNotice - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CommonNotice.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CommonNotice"; - }; - - return CommonNotice; - })(); - - gamehall.PlayerRecord = (function() { - - /** - * Properties of a PlayerRecord. - * @memberof gamehall - * @interface IPlayerRecord - * @property {number|null} [GameFreeid] PlayerRecord GameFreeid - * @property {string|null} [GameDetailedLogId] PlayerRecord GameDetailedLogId - * @property {number|Long|null} [TotalIn] PlayerRecord TotalIn - * @property {number|Long|null} [TotalOut] PlayerRecord TotalOut - * @property {number|null} [Ts] PlayerRecord Ts - * @property {number|null} [MatchType] PlayerRecord MatchType - */ - - /** - * Constructs a new PlayerRecord. - * @memberof gamehall - * @classdesc Represents a PlayerRecord. - * @implements IPlayerRecord - * @constructor - * @param {gamehall.IPlayerRecord=} [properties] Properties to set - */ - function PlayerRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PlayerRecord GameFreeid. - * @member {number} GameFreeid - * @memberof gamehall.PlayerRecord - * @instance - */ - PlayerRecord.prototype.GameFreeid = 0; - - /** - * PlayerRecord GameDetailedLogId. - * @member {string} GameDetailedLogId - * @memberof gamehall.PlayerRecord - * @instance - */ - PlayerRecord.prototype.GameDetailedLogId = ""; - - /** - * PlayerRecord TotalIn. - * @member {number|Long} TotalIn - * @memberof gamehall.PlayerRecord - * @instance - */ - PlayerRecord.prototype.TotalIn = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerRecord TotalOut. - * @member {number|Long} TotalOut - * @memberof gamehall.PlayerRecord - * @instance - */ - PlayerRecord.prototype.TotalOut = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerRecord Ts. - * @member {number} Ts - * @memberof gamehall.PlayerRecord - * @instance - */ - PlayerRecord.prototype.Ts = 0; - - /** - * PlayerRecord MatchType. - * @member {number} MatchType - * @memberof gamehall.PlayerRecord - * @instance - */ - PlayerRecord.prototype.MatchType = 0; - - /** - * Creates a new PlayerRecord instance using the specified properties. - * @function create - * @memberof gamehall.PlayerRecord - * @static - * @param {gamehall.IPlayerRecord=} [properties] Properties to set - * @returns {gamehall.PlayerRecord} PlayerRecord instance - */ - PlayerRecord.create = function create(properties) { - return new PlayerRecord(properties); - }; - - /** - * Encodes the specified PlayerRecord message. Does not implicitly {@link gamehall.PlayerRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.PlayerRecord - * @static - * @param {gamehall.IPlayerRecord} message PlayerRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PlayerRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeid != null && Object.hasOwnProperty.call(message, "GameFreeid")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeid); - if (message.GameDetailedLogId != null && Object.hasOwnProperty.call(message, "GameDetailedLogId")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.GameDetailedLogId); - if (message.TotalIn != null && Object.hasOwnProperty.call(message, "TotalIn")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.TotalIn); - if (message.TotalOut != null && Object.hasOwnProperty.call(message, "TotalOut")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.TotalOut); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.Ts); - if (message.MatchType != null && Object.hasOwnProperty.call(message, "MatchType")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.MatchType); - return writer; - }; - - /** - * Encodes the specified PlayerRecord message, length delimited. Does not implicitly {@link gamehall.PlayerRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.PlayerRecord - * @static - * @param {gamehall.IPlayerRecord} message PlayerRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PlayerRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PlayerRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.PlayerRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.PlayerRecord} PlayerRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PlayerRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.PlayerRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeid = reader.int32(); - break; - } - case 2: { - message.GameDetailedLogId = reader.string(); - break; - } - case 3: { - message.TotalIn = reader.int64(); - break; - } - case 4: { - message.TotalOut = reader.int64(); - break; - } - case 5: { - message.Ts = reader.int32(); - break; - } - case 6: { - message.MatchType = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PlayerRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.PlayerRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.PlayerRecord} PlayerRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PlayerRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PlayerRecord message. - * @function verify - * @memberof gamehall.PlayerRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PlayerRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeid != null && message.hasOwnProperty("GameFreeid")) - if (!$util.isInteger(message.GameFreeid)) - return "GameFreeid: integer expected"; - if (message.GameDetailedLogId != null && message.hasOwnProperty("GameDetailedLogId")) - if (!$util.isString(message.GameDetailedLogId)) - return "GameDetailedLogId: string expected"; - if (message.TotalIn != null && message.hasOwnProperty("TotalIn")) - if (!$util.isInteger(message.TotalIn) && !(message.TotalIn && $util.isInteger(message.TotalIn.low) && $util.isInteger(message.TotalIn.high))) - return "TotalIn: integer|Long expected"; - if (message.TotalOut != null && message.hasOwnProperty("TotalOut")) - if (!$util.isInteger(message.TotalOut) && !(message.TotalOut && $util.isInteger(message.TotalOut.low) && $util.isInteger(message.TotalOut.high))) - return "TotalOut: integer|Long expected"; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts)) - return "Ts: integer expected"; - if (message.MatchType != null && message.hasOwnProperty("MatchType")) - if (!$util.isInteger(message.MatchType)) - return "MatchType: integer expected"; - return null; - }; - - /** - * Creates a PlayerRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.PlayerRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.PlayerRecord} PlayerRecord - */ - PlayerRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.PlayerRecord) - return object; - var message = new $root.gamehall.PlayerRecord(); - if (object.GameFreeid != null) - message.GameFreeid = object.GameFreeid | 0; - if (object.GameDetailedLogId != null) - message.GameDetailedLogId = String(object.GameDetailedLogId); - if (object.TotalIn != null) - if ($util.Long) - (message.TotalIn = $util.Long.fromValue(object.TotalIn)).unsigned = false; - else if (typeof object.TotalIn === "string") - message.TotalIn = parseInt(object.TotalIn, 10); - else if (typeof object.TotalIn === "number") - message.TotalIn = object.TotalIn; - else if (typeof object.TotalIn === "object") - message.TotalIn = new $util.LongBits(object.TotalIn.low >>> 0, object.TotalIn.high >>> 0).toNumber(); - if (object.TotalOut != null) - if ($util.Long) - (message.TotalOut = $util.Long.fromValue(object.TotalOut)).unsigned = false; - else if (typeof object.TotalOut === "string") - message.TotalOut = parseInt(object.TotalOut, 10); - else if (typeof object.TotalOut === "number") - message.TotalOut = object.TotalOut; - else if (typeof object.TotalOut === "object") - message.TotalOut = new $util.LongBits(object.TotalOut.low >>> 0, object.TotalOut.high >>> 0).toNumber(); - if (object.Ts != null) - message.Ts = object.Ts | 0; - if (object.MatchType != null) - message.MatchType = object.MatchType | 0; - return message; - }; - - /** - * Creates a plain object from a PlayerRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.PlayerRecord - * @static - * @param {gamehall.PlayerRecord} message PlayerRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PlayerRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeid = 0; - object.GameDetailedLogId = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalIn = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalIn = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalOut = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalOut = options.longs === String ? "0" : 0; - object.Ts = 0; - object.MatchType = 0; - } - if (message.GameFreeid != null && message.hasOwnProperty("GameFreeid")) - object.GameFreeid = message.GameFreeid; - if (message.GameDetailedLogId != null && message.hasOwnProperty("GameDetailedLogId")) - object.GameDetailedLogId = message.GameDetailedLogId; - if (message.TotalIn != null && message.hasOwnProperty("TotalIn")) - if (typeof message.TotalIn === "number") - object.TotalIn = options.longs === String ? String(message.TotalIn) : message.TotalIn; - else - object.TotalIn = options.longs === String ? $util.Long.prototype.toString.call(message.TotalIn) : options.longs === Number ? new $util.LongBits(message.TotalIn.low >>> 0, message.TotalIn.high >>> 0).toNumber() : message.TotalIn; - if (message.TotalOut != null && message.hasOwnProperty("TotalOut")) - if (typeof message.TotalOut === "number") - object.TotalOut = options.longs === String ? String(message.TotalOut) : message.TotalOut; - else - object.TotalOut = options.longs === String ? $util.Long.prototype.toString.call(message.TotalOut) : options.longs === Number ? new $util.LongBits(message.TotalOut.low >>> 0, message.TotalOut.high >>> 0).toNumber() : message.TotalOut; - if (message.Ts != null && message.hasOwnProperty("Ts")) - object.Ts = message.Ts; - if (message.MatchType != null && message.hasOwnProperty("MatchType")) - object.MatchType = message.MatchType; - return object; - }; - - /** - * Converts this PlayerRecord to JSON. - * @function toJSON - * @memberof gamehall.PlayerRecord - * @instance - * @returns {Object.} JSON object - */ - PlayerRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PlayerRecord - * @function getTypeUrl - * @memberof gamehall.PlayerRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PlayerRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.PlayerRecord"; - }; - - return PlayerRecord; - })(); - - gamehall.SCRecordAndNotice = (function() { - - /** - * Properties of a SCRecordAndNotice. - * @memberof gamehall - * @interface ISCRecordAndNotice - * @property {gamehall.OpResultCode_Game|null} [OpCode] SCRecordAndNotice OpCode - * @property {Array.|null} [List] SCRecordAndNotice List - * @property {Array.|null} [Glist] SCRecordAndNotice Glist - * @property {Array.|null} [GlistTs] SCRecordAndNotice GlistTs - */ - - /** - * Constructs a new SCRecordAndNotice. - * @memberof gamehall - * @classdesc Represents a SCRecordAndNotice. - * @implements ISCRecordAndNotice - * @constructor - * @param {gamehall.ISCRecordAndNotice=} [properties] Properties to set - */ - function SCRecordAndNotice(properties) { - this.List = []; - this.Glist = []; - this.GlistTs = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRecordAndNotice OpCode. - * @member {gamehall.OpResultCode_Game} OpCode - * @memberof gamehall.SCRecordAndNotice - * @instance - */ - SCRecordAndNotice.prototype.OpCode = 0; - - /** - * SCRecordAndNotice List. - * @member {Array.} List - * @memberof gamehall.SCRecordAndNotice - * @instance - */ - SCRecordAndNotice.prototype.List = $util.emptyArray; - - /** - * SCRecordAndNotice Glist. - * @member {Array.} Glist - * @memberof gamehall.SCRecordAndNotice - * @instance - */ - SCRecordAndNotice.prototype.Glist = $util.emptyArray; - - /** - * SCRecordAndNotice GlistTs. - * @member {Array.} GlistTs - * @memberof gamehall.SCRecordAndNotice - * @instance - */ - SCRecordAndNotice.prototype.GlistTs = $util.emptyArray; - - /** - * Creates a new SCRecordAndNotice instance using the specified properties. - * @function create - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {gamehall.ISCRecordAndNotice=} [properties] Properties to set - * @returns {gamehall.SCRecordAndNotice} SCRecordAndNotice instance - */ - SCRecordAndNotice.create = function create(properties) { - return new SCRecordAndNotice(properties); - }; - - /** - * Encodes the specified SCRecordAndNotice message. Does not implicitly {@link gamehall.SCRecordAndNotice.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {gamehall.ISCRecordAndNotice} message SCRecordAndNotice message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRecordAndNotice.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpCode); - if (message.List != null && message.List.length) - for (var i = 0; i < message.List.length; ++i) - $root.gamehall.CommonNotice.encode(message.List[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.Glist != null && message.Glist.length) - for (var i = 0; i < message.Glist.length; ++i) - $root.gamehall.PlayerRecord.encode(message.Glist[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.GlistTs != null && message.GlistTs.length) { - writer.uint32(/* id 4, wireType 2 =*/34).fork(); - for (var i = 0; i < message.GlistTs.length; ++i) - writer.int64(message.GlistTs[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCRecordAndNotice message, length delimited. Does not implicitly {@link gamehall.SCRecordAndNotice.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {gamehall.ISCRecordAndNotice} message SCRecordAndNotice message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRecordAndNotice.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRecordAndNotice message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRecordAndNotice} SCRecordAndNotice - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRecordAndNotice.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRecordAndNotice(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpCode = reader.int32(); - break; - } - case 2: { - if (!(message.List && message.List.length)) - message.List = []; - message.List.push($root.gamehall.CommonNotice.decode(reader, reader.uint32())); - break; - } - case 3: { - if (!(message.Glist && message.Glist.length)) - message.Glist = []; - message.Glist.push($root.gamehall.PlayerRecord.decode(reader, reader.uint32())); - break; - } - case 4: { - if (!(message.GlistTs && message.GlistTs.length)) - message.GlistTs = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.GlistTs.push(reader.int64()); - } else - message.GlistTs.push(reader.int64()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRecordAndNotice message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRecordAndNotice} SCRecordAndNotice - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRecordAndNotice.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRecordAndNotice message. - * @function verify - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRecordAndNotice.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - switch (message.OpCode) { - default: - return "OpCode: enum value expected"; - case 0: - case 1: - case 1016: - case 1017: - case 1018: - case 1019: - case 1020: - case 1022: - case 1024: - case 1040: - case 1042: - case 1043: - case 1044: - case 1045: - case 1048: - case 1050: - case 1053: - case 1054: - case 1055: - case 1056: - case 1058: - case 1059: - case 1082: - case 1097: - case 1098: - case 1075: - case 1076: - case 1077: - case 1078: - case 1096: - case 1103: - case 1113: - case 5023: - case 9000: - case 9001: - case 9002: - case 9003: - case 9010: - break; - } - if (message.List != null && message.hasOwnProperty("List")) { - if (!Array.isArray(message.List)) - return "List: array expected"; - for (var i = 0; i < message.List.length; ++i) { - var error = $root.gamehall.CommonNotice.verify(message.List[i]); - if (error) - return "List." + error; - } - } - if (message.Glist != null && message.hasOwnProperty("Glist")) { - if (!Array.isArray(message.Glist)) - return "Glist: array expected"; - for (var i = 0; i < message.Glist.length; ++i) { - var error = $root.gamehall.PlayerRecord.verify(message.Glist[i]); - if (error) - return "Glist." + error; - } - } - if (message.GlistTs != null && message.hasOwnProperty("GlistTs")) { - if (!Array.isArray(message.GlistTs)) - return "GlistTs: array expected"; - for (var i = 0; i < message.GlistTs.length; ++i) - if (!$util.isInteger(message.GlistTs[i]) && !(message.GlistTs[i] && $util.isInteger(message.GlistTs[i].low) && $util.isInteger(message.GlistTs[i].high))) - return "GlistTs: integer|Long[] expected"; - } - return null; - }; - - /** - * Creates a SCRecordAndNotice message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRecordAndNotice} SCRecordAndNotice - */ - SCRecordAndNotice.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRecordAndNotice) - return object; - var message = new $root.gamehall.SCRecordAndNotice(); - switch (object.OpCode) { - default: - if (typeof object.OpCode === "number") { - message.OpCode = object.OpCode; - break; - } - break; - case "OPRC_Sucess_Game": - case 0: - message.OpCode = 0; - break; - case "OPRC_Error_Game": - case 1: - message.OpCode = 1; - break; - case "OPRC_RoomNotExist_Game": - case 1016: - message.OpCode = 1016; - break; - case "OPRC_GameNotExist_Game": - case 1017: - message.OpCode = 1017; - break; - case "OPRC_GameHadClosed": - case 1018: - message.OpCode = 1018; - break; - case "OPRC_RoomIsFull_Game": - case 1019: - message.OpCode = 1019; - break; - case "OPRC_RoomHadExist_Game": - case 1020: - message.OpCode = 1020; - break; - case "OPRC_GameStarting_Game": - case 1022: - message.OpCode = 1022; - break; - case "OPRC_CannotWatchReasonInOther_Game": - case 1024: - message.OpCode = 1024; - break; - case "OPRC_MoneyNotEnough_Game": - case 1040: - message.OpCode = 1040; - break; - case "OPRC_CannotWatchReasonRoomNotStart_Game": - case 1042: - message.OpCode = 1042; - break; - case "OPRC_OnlyAllowClubMemberEnter_Game": - case 1043: - message.OpCode = 1043; - break; - case "OPRC_YourResVerIsLow_Game": - case 1044: - message.OpCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Game": - case 1045: - message.OpCode = 1045; - break; - case "OPRC_ScenePosFull_Game": - case 1048: - message.OpCode = 1048; - break; - case "OPRC_SceneEnterForWatcher_Game": - case 1050: - message.OpCode = 1050; - break; - case "OPRC_RoomHadClosed_Game": - case 1053: - message.OpCode = 1053; - break; - case "OPRC_SceneServerMaintain_Game": - case 1054: - message.OpCode = 1054; - break; - case "OPRC_SameIpForbid_Game": - case 1055: - message.OpCode = 1055; - break; - case "OPRC_CoinNotEnough_Game": - case 1056: - message.OpCode = 1056; - break; - case "OPRC_CoinTooMore_Game": - case 1058: - message.OpCode = 1058; - break; - case "OPRC_InOtherGameIng_Game": - case 1059: - message.OpCode = 1059; - break; - case "OPRC_OpYield_Game": - case 1082: - message.OpCode = 1082; - break; - case "OPRC_AllocRoomIdFailed_Game": - case 1097: - message.OpCode = 1097; - break; - case "OPRC_PrivateRoomCountLimit_Game": - case 1098: - message.OpCode = 1098; - break; - case "OPRC_LowerRice_ScenceMax_Game": - case 1075: - message.OpCode = 1075; - break; - case "OPRC_LowerRice_PlayerMax_Game": - case 1076: - message.OpCode = 1076; - break; - case "OPRC_LowerRice_PlayerDownMax_Game": - case 1077: - message.OpCode = 1077; - break; - case "OPRC_YourAreGamingCannotLeave_Game": - case 1078: - message.OpCode = 1078; - break; - case "OPRC_ThirdPltProcessing_Game": - case 1096: - message.OpCode = 1096; - break; - case "OPRC_RoomGameTimes_Game": - case 1103: - message.OpCode = 1103; - break; - case "OPRC_MustBindPromoter_Game": - case 1113: - message.OpCode = 1113; - break; - case "Oprc_Club_ClubIsClose_Game": - case 5023: - message.OpCode = 5023; - break; - case "OPRC_Dg_RegistErr_Game": - case 9000: - message.OpCode = 9000; - break; - case "OPRC_Dg_LoginErr_Game": - case 9001: - message.OpCode = 9001; - break; - case "OPRC_Dg_PlatErr_Game": - case 9002: - message.OpCode = 9002; - break; - case "OPRC_Dg_QuotaNotEnough_Game": - case 9003: - message.OpCode = 9003; - break; - case "OPRC_Thr_GameClose_Game": - case 9010: - message.OpCode = 9010; - break; - } - if (object.List) { - if (!Array.isArray(object.List)) - throw TypeError(".gamehall.SCRecordAndNotice.List: array expected"); - message.List = []; - for (var i = 0; i < object.List.length; ++i) { - if (typeof object.List[i] !== "object") - throw TypeError(".gamehall.SCRecordAndNotice.List: object expected"); - message.List[i] = $root.gamehall.CommonNotice.fromObject(object.List[i]); - } - } - if (object.Glist) { - if (!Array.isArray(object.Glist)) - throw TypeError(".gamehall.SCRecordAndNotice.Glist: array expected"); - message.Glist = []; - for (var i = 0; i < object.Glist.length; ++i) { - if (typeof object.Glist[i] !== "object") - throw TypeError(".gamehall.SCRecordAndNotice.Glist: object expected"); - message.Glist[i] = $root.gamehall.PlayerRecord.fromObject(object.Glist[i]); - } - } - if (object.GlistTs) { - if (!Array.isArray(object.GlistTs)) - throw TypeError(".gamehall.SCRecordAndNotice.GlistTs: array expected"); - message.GlistTs = []; - for (var i = 0; i < object.GlistTs.length; ++i) - if ($util.Long) - (message.GlistTs[i] = $util.Long.fromValue(object.GlistTs[i])).unsigned = false; - else if (typeof object.GlistTs[i] === "string") - message.GlistTs[i] = parseInt(object.GlistTs[i], 10); - else if (typeof object.GlistTs[i] === "number") - message.GlistTs[i] = object.GlistTs[i]; - else if (typeof object.GlistTs[i] === "object") - message.GlistTs[i] = new $util.LongBits(object.GlistTs[i].low >>> 0, object.GlistTs[i].high >>> 0).toNumber(); - } - return message; - }; - - /** - * Creates a plain object from a SCRecordAndNotice message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {gamehall.SCRecordAndNotice} message SCRecordAndNotice - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRecordAndNotice.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.List = []; - object.Glist = []; - object.GlistTs = []; - } - if (options.defaults) - object.OpCode = options.enums === String ? "OPRC_Sucess_Game" : 0; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - object.OpCode = options.enums === String ? $root.gamehall.OpResultCode_Game[message.OpCode] === undefined ? message.OpCode : $root.gamehall.OpResultCode_Game[message.OpCode] : message.OpCode; - if (message.List && message.List.length) { - object.List = []; - for (var j = 0; j < message.List.length; ++j) - object.List[j] = $root.gamehall.CommonNotice.toObject(message.List[j], options); - } - if (message.Glist && message.Glist.length) { - object.Glist = []; - for (var j = 0; j < message.Glist.length; ++j) - object.Glist[j] = $root.gamehall.PlayerRecord.toObject(message.Glist[j], options); - } - if (message.GlistTs && message.GlistTs.length) { - object.GlistTs = []; - for (var j = 0; j < message.GlistTs.length; ++j) - if (typeof message.GlistTs[j] === "number") - object.GlistTs[j] = options.longs === String ? String(message.GlistTs[j]) : message.GlistTs[j]; - else - object.GlistTs[j] = options.longs === String ? $util.Long.prototype.toString.call(message.GlistTs[j]) : options.longs === Number ? new $util.LongBits(message.GlistTs[j].low >>> 0, message.GlistTs[j].high >>> 0).toNumber() : message.GlistTs[j]; - } - return object; - }; - - /** - * Converts this SCRecordAndNotice to JSON. - * @function toJSON - * @memberof gamehall.SCRecordAndNotice - * @instance - * @returns {Object.} JSON object - */ - SCRecordAndNotice.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRecordAndNotice - * @function getTypeUrl - * @memberof gamehall.SCRecordAndNotice - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRecordAndNotice.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRecordAndNotice"; - }; - - return SCRecordAndNotice; - })(); - - /** - * OpResultCode_Hall enum. - * @name gamehall.OpResultCode_Hall - * @enum {number} - * @property {number} OPRC_Sucess_Hall=0 OPRC_Sucess_Hall value - * @property {number} OPRC_Error_Hall=1 OPRC_Error_Hall value - * @property {number} OPRC_OnlineReward_Info_FindPlatform_Fail_Hall=10008 OPRC_OnlineReward_Info_FindPlatform_Fail_Hall value - */ - gamehall.OpResultCode_Hall = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPRC_Sucess_Hall"] = 0; - values[valuesById[1] = "OPRC_Error_Hall"] = 1; - values[valuesById[10008] = "OPRC_OnlineReward_Info_FindPlatform_Fail_Hall"] = 10008; - return values; - })(); - - /** - * 大厅协议 2340-2379 - * @name gamehall.HallPacketID - * @enum {number} - * @property {number} PACKET_Hall_ZERO=0 PACKET_Hall_ZERO value - * @property {number} PACKET_CS_REBATE_LIST=2340 PACKET_CS_REBATE_LIST value - * @property {number} PACKET_SC_REBATE_LIST=2341 PACKET_SC_REBATE_LIST value - * @property {number} PACKET_CS_REBATE_RECEIVE=2342 PACKET_CS_REBATE_RECEIVE value - * @property {number} PACKET_SC_REBATE_RECEIVE=2343 PACKET_SC_REBATE_RECEIVE value - * @property {number} PACKET_SC_HALL_REDCTRL=2344 PACKET_SC_HALL_REDCTRL value - * @property {number} PACKET_CS_NEWPLAYERINFO=2345 新个人中心 - * @property {number} PACKET_SC_NEWPLAYERINFO=2346 PACKET_SC_NEWPLAYERINFO value - * @property {number} PACKET_CS_CODETYPERECORD=2347 PACKET_CS_CODETYPERECORD value - * @property {number} PACKET_SC_CODETYPERECORD=2348 PACKET_SC_CODETYPERECORD value - * @property {number} PACKET_CS_BETCOINRECORD=2349 PACKET_CS_BETCOINRECORD value - * @property {number} PACKET_SC_BETCOINRECORD=2350 PACKET_SC_BETCOINRECORD value - * @property {number} PACKET_CS_COINDETAILED=2351 PACKET_CS_COINDETAILED value - * @property {number} PACKET_SC_COINDETAILEDTOTAL=2352 PACKET_SC_COINDETAILEDTOTAL value - * @property {number} PACKET_SC_COINTOTAL=2353 PACKET_SC_COINTOTAL value - * @property {number} PACKET_CS_REPORTFORM=2354 PACKET_CS_REPORTFORM value - * @property {number} PACKET_SC_REPORTFORM=2355 PACKET_SC_REPORTFORM value - * @property {number} PACKET_CS_HISTORYRECORD=2356 PACKET_CS_HISTORYRECORD value - * @property {number} PACKET_SC_HISTORYRECORD=2357 PACKET_SC_HISTORYRECORD value - * @property {number} PACKET_CS_RECEIVECODECOIN=2358 PACKET_CS_RECEIVECODECOIN value - * @property {number} PACKET_SC_RECEIVECODECOIN=2359 PACKET_SC_RECEIVECODECOIN value - * @property {number} PACKET_SC_REBATETOTALINFO=2360 PACKET_SC_REBATETOTALINFO value - * @property {number} PACKET_CS_GETISCANREBATE=2362 PACKET_CS_GETISCANREBATE value - * @property {number} PACKET_SC_GETISCANREBATE=2363 PACKET_SC_GETISCANREBATE value - * @property {number} PACKET_CS_GETRANKINFO=2364 PACKET_CS_GETRANKINFO value - * @property {number} PACKET_SC_GETRANKINFO=2365 PACKET_SC_GETRANKINFO value - * @property {number} PACKET_SC_SHOWRED=2366 PACKET_SC_SHOWRED value - */ - gamehall.HallPacketID = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "PACKET_Hall_ZERO"] = 0; - values[valuesById[2340] = "PACKET_CS_REBATE_LIST"] = 2340; - values[valuesById[2341] = "PACKET_SC_REBATE_LIST"] = 2341; - values[valuesById[2342] = "PACKET_CS_REBATE_RECEIVE"] = 2342; - values[valuesById[2343] = "PACKET_SC_REBATE_RECEIVE"] = 2343; - values[valuesById[2344] = "PACKET_SC_HALL_REDCTRL"] = 2344; - values[valuesById[2345] = "PACKET_CS_NEWPLAYERINFO"] = 2345; - values[valuesById[2346] = "PACKET_SC_NEWPLAYERINFO"] = 2346; - values[valuesById[2347] = "PACKET_CS_CODETYPERECORD"] = 2347; - values[valuesById[2348] = "PACKET_SC_CODETYPERECORD"] = 2348; - values[valuesById[2349] = "PACKET_CS_BETCOINRECORD"] = 2349; - values[valuesById[2350] = "PACKET_SC_BETCOINRECORD"] = 2350; - values[valuesById[2351] = "PACKET_CS_COINDETAILED"] = 2351; - values[valuesById[2352] = "PACKET_SC_COINDETAILEDTOTAL"] = 2352; - values[valuesById[2353] = "PACKET_SC_COINTOTAL"] = 2353; - values[valuesById[2354] = "PACKET_CS_REPORTFORM"] = 2354; - values[valuesById[2355] = "PACKET_SC_REPORTFORM"] = 2355; - values[valuesById[2356] = "PACKET_CS_HISTORYRECORD"] = 2356; - values[valuesById[2357] = "PACKET_SC_HISTORYRECORD"] = 2357; - values[valuesById[2358] = "PACKET_CS_RECEIVECODECOIN"] = 2358; - values[valuesById[2359] = "PACKET_SC_RECEIVECODECOIN"] = 2359; - values[valuesById[2360] = "PACKET_SC_REBATETOTALINFO"] = 2360; - values[valuesById[2362] = "PACKET_CS_GETISCANREBATE"] = 2362; - values[valuesById[2363] = "PACKET_SC_GETISCANREBATE"] = 2363; - values[valuesById[2364] = "PACKET_CS_GETRANKINFO"] = 2364; - values[valuesById[2365] = "PACKET_SC_GETRANKINFO"] = 2365; - values[valuesById[2366] = "PACKET_SC_SHOWRED"] = 2366; - return values; - })(); - - gamehall.RebateInfo = (function() { - - /** - * Properties of a RebateInfo. - * @memberof gamehall - * @interface IRebateInfo - * @property {string|null} [Platform] RebateInfo Platform - * @property {number|Long|null} [validBetTotal] RebateInfo validBetTotal - */ - - /** - * Constructs a new RebateInfo. - * @memberof gamehall - * @classdesc rebatetask - * @implements IRebateInfo - * @constructor - * @param {gamehall.IRebateInfo=} [properties] Properties to set - */ - function RebateInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * RebateInfo Platform. - * @member {string} Platform - * @memberof gamehall.RebateInfo - * @instance - */ - RebateInfo.prototype.Platform = ""; - - /** - * RebateInfo validBetTotal. - * @member {number|Long} validBetTotal - * @memberof gamehall.RebateInfo - * @instance - */ - RebateInfo.prototype.validBetTotal = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new RebateInfo instance using the specified properties. - * @function create - * @memberof gamehall.RebateInfo - * @static - * @param {gamehall.IRebateInfo=} [properties] Properties to set - * @returns {gamehall.RebateInfo} RebateInfo instance - */ - RebateInfo.create = function create(properties) { - return new RebateInfo(properties); - }; - - /** - * Encodes the specified RebateInfo message. Does not implicitly {@link gamehall.RebateInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.RebateInfo - * @static - * @param {gamehall.IRebateInfo} message RebateInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RebateInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Platform != null && Object.hasOwnProperty.call(message, "Platform")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.Platform); - if (message.validBetTotal != null && Object.hasOwnProperty.call(message, "validBetTotal")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.validBetTotal); - return writer; - }; - - /** - * Encodes the specified RebateInfo message, length delimited. Does not implicitly {@link gamehall.RebateInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.RebateInfo - * @static - * @param {gamehall.IRebateInfo} message RebateInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RebateInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a RebateInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.RebateInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.RebateInfo} RebateInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RebateInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.RebateInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Platform = reader.string(); - break; - } - case 2: { - message.validBetTotal = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a RebateInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.RebateInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.RebateInfo} RebateInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RebateInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a RebateInfo message. - * @function verify - * @memberof gamehall.RebateInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RebateInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Platform != null && message.hasOwnProperty("Platform")) - if (!$util.isString(message.Platform)) - return "Platform: string expected"; - if (message.validBetTotal != null && message.hasOwnProperty("validBetTotal")) - if (!$util.isInteger(message.validBetTotal) && !(message.validBetTotal && $util.isInteger(message.validBetTotal.low) && $util.isInteger(message.validBetTotal.high))) - return "validBetTotal: integer|Long expected"; - return null; - }; - - /** - * Creates a RebateInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.RebateInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.RebateInfo} RebateInfo - */ - RebateInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.RebateInfo) - return object; - var message = new $root.gamehall.RebateInfo(); - if (object.Platform != null) - message.Platform = String(object.Platform); - if (object.validBetTotal != null) - if ($util.Long) - (message.validBetTotal = $util.Long.fromValue(object.validBetTotal)).unsigned = false; - else if (typeof object.validBetTotal === "string") - message.validBetTotal = parseInt(object.validBetTotal, 10); - else if (typeof object.validBetTotal === "number") - message.validBetTotal = object.validBetTotal; - else if (typeof object.validBetTotal === "object") - message.validBetTotal = new $util.LongBits(object.validBetTotal.low >>> 0, object.validBetTotal.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a RebateInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.RebateInfo - * @static - * @param {gamehall.RebateInfo} message RebateInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RebateInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Platform = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.validBetTotal = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.validBetTotal = options.longs === String ? "0" : 0; - } - if (message.Platform != null && message.hasOwnProperty("Platform")) - object.Platform = message.Platform; - if (message.validBetTotal != null && message.hasOwnProperty("validBetTotal")) - if (typeof message.validBetTotal === "number") - object.validBetTotal = options.longs === String ? String(message.validBetTotal) : message.validBetTotal; - else - object.validBetTotal = options.longs === String ? $util.Long.prototype.toString.call(message.validBetTotal) : options.longs === Number ? new $util.LongBits(message.validBetTotal.low >>> 0, message.validBetTotal.high >>> 0).toNumber() : message.validBetTotal; - return object; - }; - - /** - * Converts this RebateInfo to JSON. - * @function toJSON - * @memberof gamehall.RebateInfo - * @instance - * @returns {Object.} JSON object - */ - RebateInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for RebateInfo - * @function getTypeUrl - * @memberof gamehall.RebateInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RebateInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.RebateInfo"; - }; - - return RebateInfo; - })(); - - gamehall.CSRebateList = (function() { - - /** - * Properties of a CSRebateList. - * @memberof gamehall - * @interface ICSRebateList - */ - - /** - * Constructs a new CSRebateList. - * @memberof gamehall - * @classdesc Represents a CSRebateList. - * @implements ICSRebateList - * @constructor - * @param {gamehall.ICSRebateList=} [properties] Properties to set - */ - function CSRebateList(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSRebateList instance using the specified properties. - * @function create - * @memberof gamehall.CSRebateList - * @static - * @param {gamehall.ICSRebateList=} [properties] Properties to set - * @returns {gamehall.CSRebateList} CSRebateList instance - */ - CSRebateList.create = function create(properties) { - return new CSRebateList(properties); - }; - - /** - * Encodes the specified CSRebateList message. Does not implicitly {@link gamehall.CSRebateList.verify|verify} messages. - * @function encode - * @memberof gamehall.CSRebateList - * @static - * @param {gamehall.ICSRebateList} message CSRebateList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSRebateList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSRebateList message, length delimited. Does not implicitly {@link gamehall.CSRebateList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSRebateList - * @static - * @param {gamehall.ICSRebateList} message CSRebateList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSRebateList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSRebateList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSRebateList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSRebateList} CSRebateList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSRebateList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSRebateList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSRebateList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSRebateList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSRebateList} CSRebateList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSRebateList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSRebateList message. - * @function verify - * @memberof gamehall.CSRebateList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSRebateList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSRebateList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSRebateList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSRebateList} CSRebateList - */ - CSRebateList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSRebateList) - return object; - return new $root.gamehall.CSRebateList(); - }; - - /** - * Creates a plain object from a CSRebateList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSRebateList - * @static - * @param {gamehall.CSRebateList} message CSRebateList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSRebateList.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSRebateList to JSON. - * @function toJSON - * @memberof gamehall.CSRebateList - * @instance - * @returns {Object.} JSON object - */ - CSRebateList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSRebateList - * @function getTypeUrl - * @memberof gamehall.CSRebateList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSRebateList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSRebateList"; - }; - - return CSRebateList; - })(); - - gamehall.SCRebateList = (function() { - - /** - * Properties of a SCRebateList. - * @memberof gamehall - * @interface ISCRebateList - * @property {Array.|null} [RebateList] SCRebateList RebateList - * @property {number|Long|null} [RebateTotalCoin] SCRebateList RebateTotalCoin - */ - - /** - * Constructs a new SCRebateList. - * @memberof gamehall - * @classdesc Represents a SCRebateList. - * @implements ISCRebateList - * @constructor - * @param {gamehall.ISCRebateList=} [properties] Properties to set - */ - function SCRebateList(properties) { - this.RebateList = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRebateList RebateList. - * @member {Array.} RebateList - * @memberof gamehall.SCRebateList - * @instance - */ - SCRebateList.prototype.RebateList = $util.emptyArray; - - /** - * SCRebateList RebateTotalCoin. - * @member {number|Long} RebateTotalCoin - * @memberof gamehall.SCRebateList - * @instance - */ - SCRebateList.prototype.RebateTotalCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCRebateList instance using the specified properties. - * @function create - * @memberof gamehall.SCRebateList - * @static - * @param {gamehall.ISCRebateList=} [properties] Properties to set - * @returns {gamehall.SCRebateList} SCRebateList instance - */ - SCRebateList.create = function create(properties) { - return new SCRebateList(properties); - }; - - /** - * Encodes the specified SCRebateList message. Does not implicitly {@link gamehall.SCRebateList.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRebateList - * @static - * @param {gamehall.ISCRebateList} message SCRebateList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRebateList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RebateList != null && message.RebateList.length) - for (var i = 0; i < message.RebateList.length; ++i) - $root.gamehall.RebateInfo.encode(message.RebateList[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.RebateTotalCoin != null && Object.hasOwnProperty.call(message, "RebateTotalCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.RebateTotalCoin); - return writer; - }; - - /** - * Encodes the specified SCRebateList message, length delimited. Does not implicitly {@link gamehall.SCRebateList.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRebateList - * @static - * @param {gamehall.ISCRebateList} message SCRebateList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRebateList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRebateList message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRebateList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRebateList} SCRebateList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRebateList.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRebateList(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.RebateList && message.RebateList.length)) - message.RebateList = []; - message.RebateList.push($root.gamehall.RebateInfo.decode(reader, reader.uint32())); - break; - } - case 2: { - message.RebateTotalCoin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRebateList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRebateList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRebateList} SCRebateList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRebateList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRebateList message. - * @function verify - * @memberof gamehall.SCRebateList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRebateList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RebateList != null && message.hasOwnProperty("RebateList")) { - if (!Array.isArray(message.RebateList)) - return "RebateList: array expected"; - for (var i = 0; i < message.RebateList.length; ++i) { - var error = $root.gamehall.RebateInfo.verify(message.RebateList[i]); - if (error) - return "RebateList." + error; - } - } - if (message.RebateTotalCoin != null && message.hasOwnProperty("RebateTotalCoin")) - if (!$util.isInteger(message.RebateTotalCoin) && !(message.RebateTotalCoin && $util.isInteger(message.RebateTotalCoin.low) && $util.isInteger(message.RebateTotalCoin.high))) - return "RebateTotalCoin: integer|Long expected"; - return null; - }; - - /** - * Creates a SCRebateList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRebateList - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRebateList} SCRebateList - */ - SCRebateList.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRebateList) - return object; - var message = new $root.gamehall.SCRebateList(); - if (object.RebateList) { - if (!Array.isArray(object.RebateList)) - throw TypeError(".gamehall.SCRebateList.RebateList: array expected"); - message.RebateList = []; - for (var i = 0; i < object.RebateList.length; ++i) { - if (typeof object.RebateList[i] !== "object") - throw TypeError(".gamehall.SCRebateList.RebateList: object expected"); - message.RebateList[i] = $root.gamehall.RebateInfo.fromObject(object.RebateList[i]); - } - } - if (object.RebateTotalCoin != null) - if ($util.Long) - (message.RebateTotalCoin = $util.Long.fromValue(object.RebateTotalCoin)).unsigned = false; - else if (typeof object.RebateTotalCoin === "string") - message.RebateTotalCoin = parseInt(object.RebateTotalCoin, 10); - else if (typeof object.RebateTotalCoin === "number") - message.RebateTotalCoin = object.RebateTotalCoin; - else if (typeof object.RebateTotalCoin === "object") - message.RebateTotalCoin = new $util.LongBits(object.RebateTotalCoin.low >>> 0, object.RebateTotalCoin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCRebateList message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRebateList - * @static - * @param {gamehall.SCRebateList} message SCRebateList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRebateList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.RebateList = []; - if (options.defaults) - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.RebateTotalCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.RebateTotalCoin = options.longs === String ? "0" : 0; - if (message.RebateList && message.RebateList.length) { - object.RebateList = []; - for (var j = 0; j < message.RebateList.length; ++j) - object.RebateList[j] = $root.gamehall.RebateInfo.toObject(message.RebateList[j], options); - } - if (message.RebateTotalCoin != null && message.hasOwnProperty("RebateTotalCoin")) - if (typeof message.RebateTotalCoin === "number") - object.RebateTotalCoin = options.longs === String ? String(message.RebateTotalCoin) : message.RebateTotalCoin; - else - object.RebateTotalCoin = options.longs === String ? $util.Long.prototype.toString.call(message.RebateTotalCoin) : options.longs === Number ? new $util.LongBits(message.RebateTotalCoin.low >>> 0, message.RebateTotalCoin.high >>> 0).toNumber() : message.RebateTotalCoin; - return object; - }; - - /** - * Converts this SCRebateList to JSON. - * @function toJSON - * @memberof gamehall.SCRebateList - * @instance - * @returns {Object.} JSON object - */ - SCRebateList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRebateList - * @function getTypeUrl - * @memberof gamehall.SCRebateList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRebateList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRebateList"; - }; - - return SCRebateList; - })(); - - gamehall.CSReceiveRebate = (function() { - - /** - * Properties of a CSReceiveRebate. - * @memberof gamehall - * @interface ICSReceiveRebate - */ - - /** - * Constructs a new CSReceiveRebate. - * @memberof gamehall - * @classdesc Represents a CSReceiveRebate. - * @implements ICSReceiveRebate - * @constructor - * @param {gamehall.ICSReceiveRebate=} [properties] Properties to set - */ - function CSReceiveRebate(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSReceiveRebate instance using the specified properties. - * @function create - * @memberof gamehall.CSReceiveRebate - * @static - * @param {gamehall.ICSReceiveRebate=} [properties] Properties to set - * @returns {gamehall.CSReceiveRebate} CSReceiveRebate instance - */ - CSReceiveRebate.create = function create(properties) { - return new CSReceiveRebate(properties); - }; - - /** - * Encodes the specified CSReceiveRebate message. Does not implicitly {@link gamehall.CSReceiveRebate.verify|verify} messages. - * @function encode - * @memberof gamehall.CSReceiveRebate - * @static - * @param {gamehall.ICSReceiveRebate} message CSReceiveRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReceiveRebate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSReceiveRebate message, length delimited. Does not implicitly {@link gamehall.CSReceiveRebate.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSReceiveRebate - * @static - * @param {gamehall.ICSReceiveRebate} message CSReceiveRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReceiveRebate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSReceiveRebate message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSReceiveRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSReceiveRebate} CSReceiveRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReceiveRebate.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSReceiveRebate(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSReceiveRebate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSReceiveRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSReceiveRebate} CSReceiveRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReceiveRebate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSReceiveRebate message. - * @function verify - * @memberof gamehall.CSReceiveRebate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSReceiveRebate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSReceiveRebate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSReceiveRebate - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSReceiveRebate} CSReceiveRebate - */ - CSReceiveRebate.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSReceiveRebate) - return object; - return new $root.gamehall.CSReceiveRebate(); - }; - - /** - * Creates a plain object from a CSReceiveRebate message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSReceiveRebate - * @static - * @param {gamehall.CSReceiveRebate} message CSReceiveRebate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSReceiveRebate.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSReceiveRebate to JSON. - * @function toJSON - * @memberof gamehall.CSReceiveRebate - * @instance - * @returns {Object.} JSON object - */ - CSReceiveRebate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSReceiveRebate - * @function getTypeUrl - * @memberof gamehall.CSReceiveRebate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSReceiveRebate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSReceiveRebate"; - }; - - return CSReceiveRebate; - })(); - - gamehall.SCReceiveRebate = (function() { - - /** - * Properties of a SCReceiveRebate. - * @memberof gamehall - * @interface ISCReceiveRebate - * @property {gamehall.OpResultCode_Hall|null} [OpRetCode] SCReceiveRebate OpRetCode - * @property {number|Long|null} [Coin] SCReceiveRebate Coin - */ - - /** - * Constructs a new SCReceiveRebate. - * @memberof gamehall - * @classdesc Represents a SCReceiveRebate. - * @implements ISCReceiveRebate - * @constructor - * @param {gamehall.ISCReceiveRebate=} [properties] Properties to set - */ - function SCReceiveRebate(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCReceiveRebate OpRetCode. - * @member {gamehall.OpResultCode_Hall} OpRetCode - * @memberof gamehall.SCReceiveRebate - * @instance - */ - SCReceiveRebate.prototype.OpRetCode = 0; - - /** - * SCReceiveRebate Coin. - * @member {number|Long} Coin - * @memberof gamehall.SCReceiveRebate - * @instance - */ - SCReceiveRebate.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCReceiveRebate instance using the specified properties. - * @function create - * @memberof gamehall.SCReceiveRebate - * @static - * @param {gamehall.ISCReceiveRebate=} [properties] Properties to set - * @returns {gamehall.SCReceiveRebate} SCReceiveRebate instance - */ - SCReceiveRebate.create = function create(properties) { - return new SCReceiveRebate(properties); - }; - - /** - * Encodes the specified SCReceiveRebate message. Does not implicitly {@link gamehall.SCReceiveRebate.verify|verify} messages. - * @function encode - * @memberof gamehall.SCReceiveRebate - * @static - * @param {gamehall.ISCReceiveRebate} message SCReceiveRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReceiveRebate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.Coin); - return writer; - }; - - /** - * Encodes the specified SCReceiveRebate message, length delimited. Does not implicitly {@link gamehall.SCReceiveRebate.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCReceiveRebate - * @static - * @param {gamehall.ISCReceiveRebate} message SCReceiveRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReceiveRebate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCReceiveRebate message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCReceiveRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCReceiveRebate} SCReceiveRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReceiveRebate.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCReceiveRebate(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.Coin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCReceiveRebate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCReceiveRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCReceiveRebate} SCReceiveRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReceiveRebate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCReceiveRebate message. - * @function verify - * @memberof gamehall.SCReceiveRebate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCReceiveRebate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 10008: - break; - } - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - return null; - }; - - /** - * Creates a SCReceiveRebate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCReceiveRebate - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCReceiveRebate} SCReceiveRebate - */ - SCReceiveRebate.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCReceiveRebate) - return object; - var message = new $root.gamehall.SCReceiveRebate(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Hall": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Hall": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_OnlineReward_Info_FindPlatform_Fail_Hall": - case 10008: - message.OpRetCode = 10008; - break; - } - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCReceiveRebate message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCReceiveRebate - * @static - * @param {gamehall.SCReceiveRebate} message SCReceiveRebate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCReceiveRebate.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Hall" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Hall[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Hall[message.OpRetCode] : message.OpRetCode; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - return object; - }; - - /** - * Converts this SCReceiveRebate to JSON. - * @function toJSON - * @memberof gamehall.SCReceiveRebate - * @instance - * @returns {Object.} JSON object - */ - SCReceiveRebate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCReceiveRebate - * @function getTypeUrl - * @memberof gamehall.SCReceiveRebate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCReceiveRebate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCReceiveRebate"; - }; - - return SCReceiveRebate; - })(); - - gamehall.SCRedCtrl = (function() { - - /** - * Properties of a SCRedCtrl. - * @memberof gamehall - * @interface ISCRedCtrl - * @property {number|Long|null} [OpCode] SCRedCtrl OpCode - * @property {boolean|null} [IsFShow] SCRedCtrl IsFShow - */ - - /** - * Constructs a new SCRedCtrl. - * @memberof gamehall - * @classdesc Represents a SCRedCtrl. - * @implements ISCRedCtrl - * @constructor - * @param {gamehall.ISCRedCtrl=} [properties] Properties to set - */ - function SCRedCtrl(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRedCtrl OpCode. - * @member {number|Long} OpCode - * @memberof gamehall.SCRedCtrl - * @instance - */ - SCRedCtrl.prototype.OpCode = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCRedCtrl IsFShow. - * @member {boolean} IsFShow - * @memberof gamehall.SCRedCtrl - * @instance - */ - SCRedCtrl.prototype.IsFShow = false; - - /** - * Creates a new SCRedCtrl instance using the specified properties. - * @function create - * @memberof gamehall.SCRedCtrl - * @static - * @param {gamehall.ISCRedCtrl=} [properties] Properties to set - * @returns {gamehall.SCRedCtrl} SCRedCtrl instance - */ - SCRedCtrl.create = function create(properties) { - return new SCRedCtrl(properties); - }; - - /** - * Encodes the specified SCRedCtrl message. Does not implicitly {@link gamehall.SCRedCtrl.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRedCtrl - * @static - * @param {gamehall.ISCRedCtrl} message SCRedCtrl message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRedCtrl.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.OpCode); - if (message.IsFShow != null && Object.hasOwnProperty.call(message, "IsFShow")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.IsFShow); - return writer; - }; - - /** - * Encodes the specified SCRedCtrl message, length delimited. Does not implicitly {@link gamehall.SCRedCtrl.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRedCtrl - * @static - * @param {gamehall.ISCRedCtrl} message SCRedCtrl message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRedCtrl.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRedCtrl message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRedCtrl - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRedCtrl} SCRedCtrl - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRedCtrl.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRedCtrl(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpCode = reader.int64(); - break; - } - case 2: { - message.IsFShow = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRedCtrl message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRedCtrl - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRedCtrl} SCRedCtrl - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRedCtrl.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRedCtrl message. - * @function verify - * @memberof gamehall.SCRedCtrl - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRedCtrl.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - if (!$util.isInteger(message.OpCode) && !(message.OpCode && $util.isInteger(message.OpCode.low) && $util.isInteger(message.OpCode.high))) - return "OpCode: integer|Long expected"; - if (message.IsFShow != null && message.hasOwnProperty("IsFShow")) - if (typeof message.IsFShow !== "boolean") - return "IsFShow: boolean expected"; - return null; - }; - - /** - * Creates a SCRedCtrl message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRedCtrl - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRedCtrl} SCRedCtrl - */ - SCRedCtrl.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRedCtrl) - return object; - var message = new $root.gamehall.SCRedCtrl(); - if (object.OpCode != null) - if ($util.Long) - (message.OpCode = $util.Long.fromValue(object.OpCode)).unsigned = false; - else if (typeof object.OpCode === "string") - message.OpCode = parseInt(object.OpCode, 10); - else if (typeof object.OpCode === "number") - message.OpCode = object.OpCode; - else if (typeof object.OpCode === "object") - message.OpCode = new $util.LongBits(object.OpCode.low >>> 0, object.OpCode.high >>> 0).toNumber(); - if (object.IsFShow != null) - message.IsFShow = Boolean(object.IsFShow); - return message; - }; - - /** - * Creates a plain object from a SCRedCtrl message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRedCtrl - * @static - * @param {gamehall.SCRedCtrl} message SCRedCtrl - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRedCtrl.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.OpCode = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.OpCode = options.longs === String ? "0" : 0; - object.IsFShow = false; - } - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - if (typeof message.OpCode === "number") - object.OpCode = options.longs === String ? String(message.OpCode) : message.OpCode; - else - object.OpCode = options.longs === String ? $util.Long.prototype.toString.call(message.OpCode) : options.longs === Number ? new $util.LongBits(message.OpCode.low >>> 0, message.OpCode.high >>> 0).toNumber() : message.OpCode; - if (message.IsFShow != null && message.hasOwnProperty("IsFShow")) - object.IsFShow = message.IsFShow; - return object; - }; - - /** - * Converts this SCRedCtrl to JSON. - * @function toJSON - * @memberof gamehall.SCRedCtrl - * @instance - * @returns {Object.} JSON object - */ - SCRedCtrl.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRedCtrl - * @function getTypeUrl - * @memberof gamehall.SCRedCtrl - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRedCtrl.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRedCtrl"; - }; - - return SCRedCtrl; - })(); - - gamehall.CSGetIsCanRebate = (function() { - - /** - * Properties of a CSGetIsCanRebate. - * @memberof gamehall - * @interface ICSGetIsCanRebate - */ - - /** - * Constructs a new CSGetIsCanRebate. - * @memberof gamehall - * @classdesc Represents a CSGetIsCanRebate. - * @implements ICSGetIsCanRebate - * @constructor - * @param {gamehall.ICSGetIsCanRebate=} [properties] Properties to set - */ - function CSGetIsCanRebate(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSGetIsCanRebate instance using the specified properties. - * @function create - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {gamehall.ICSGetIsCanRebate=} [properties] Properties to set - * @returns {gamehall.CSGetIsCanRebate} CSGetIsCanRebate instance - */ - CSGetIsCanRebate.create = function create(properties) { - return new CSGetIsCanRebate(properties); - }; - - /** - * Encodes the specified CSGetIsCanRebate message. Does not implicitly {@link gamehall.CSGetIsCanRebate.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {gamehall.ICSGetIsCanRebate} message CSGetIsCanRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetIsCanRebate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSGetIsCanRebate message, length delimited. Does not implicitly {@link gamehall.CSGetIsCanRebate.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {gamehall.ICSGetIsCanRebate} message CSGetIsCanRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetIsCanRebate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetIsCanRebate message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGetIsCanRebate} CSGetIsCanRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetIsCanRebate.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGetIsCanRebate(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetIsCanRebate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGetIsCanRebate} CSGetIsCanRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetIsCanRebate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetIsCanRebate message. - * @function verify - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetIsCanRebate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSGetIsCanRebate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGetIsCanRebate} CSGetIsCanRebate - */ - CSGetIsCanRebate.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGetIsCanRebate) - return object; - return new $root.gamehall.CSGetIsCanRebate(); - }; - - /** - * Creates a plain object from a CSGetIsCanRebate message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {gamehall.CSGetIsCanRebate} message CSGetIsCanRebate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetIsCanRebate.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSGetIsCanRebate to JSON. - * @function toJSON - * @memberof gamehall.CSGetIsCanRebate - * @instance - * @returns {Object.} JSON object - */ - CSGetIsCanRebate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetIsCanRebate - * @function getTypeUrl - * @memberof gamehall.CSGetIsCanRebate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetIsCanRebate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGetIsCanRebate"; - }; - - return CSGetIsCanRebate; - })(); - - gamehall.SCGetIsCanRebate = (function() { - - /** - * Properties of a SCGetIsCanRebate. - * @memberof gamehall - * @interface ISCGetIsCanRebate - * @property {gamehall.OpResultCode_Hall|null} [OpRetCode] SCGetIsCanRebate OpRetCode - * @property {number|Long|null} [IsCan] SCGetIsCanRebate IsCan - * @property {string|null} [Url] SCGetIsCanRebate Url - * @property {string|null} [WX] SCGetIsCanRebate WX - */ - - /** - * Constructs a new SCGetIsCanRebate. - * @memberof gamehall - * @classdesc Represents a SCGetIsCanRebate. - * @implements ISCGetIsCanRebate - * @constructor - * @param {gamehall.ISCGetIsCanRebate=} [properties] Properties to set - */ - function SCGetIsCanRebate(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGetIsCanRebate OpRetCode. - * @member {gamehall.OpResultCode_Hall} OpRetCode - * @memberof gamehall.SCGetIsCanRebate - * @instance - */ - SCGetIsCanRebate.prototype.OpRetCode = 0; - - /** - * SCGetIsCanRebate IsCan. - * @member {number|Long} IsCan - * @memberof gamehall.SCGetIsCanRebate - * @instance - */ - SCGetIsCanRebate.prototype.IsCan = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCGetIsCanRebate Url. - * @member {string} Url - * @memberof gamehall.SCGetIsCanRebate - * @instance - */ - SCGetIsCanRebate.prototype.Url = ""; - - /** - * SCGetIsCanRebate WX. - * @member {string} WX - * @memberof gamehall.SCGetIsCanRebate - * @instance - */ - SCGetIsCanRebate.prototype.WX = ""; - - /** - * Creates a new SCGetIsCanRebate instance using the specified properties. - * @function create - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {gamehall.ISCGetIsCanRebate=} [properties] Properties to set - * @returns {gamehall.SCGetIsCanRebate} SCGetIsCanRebate instance - */ - SCGetIsCanRebate.create = function create(properties) { - return new SCGetIsCanRebate(properties); - }; - - /** - * Encodes the specified SCGetIsCanRebate message. Does not implicitly {@link gamehall.SCGetIsCanRebate.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {gamehall.ISCGetIsCanRebate} message SCGetIsCanRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetIsCanRebate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.IsCan != null && Object.hasOwnProperty.call(message, "IsCan")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.IsCan); - if (message.Url != null && Object.hasOwnProperty.call(message, "Url")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.Url); - if (message.WX != null && Object.hasOwnProperty.call(message, "WX")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.WX); - return writer; - }; - - /** - * Encodes the specified SCGetIsCanRebate message, length delimited. Does not implicitly {@link gamehall.SCGetIsCanRebate.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {gamehall.ISCGetIsCanRebate} message SCGetIsCanRebate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetIsCanRebate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGetIsCanRebate message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGetIsCanRebate} SCGetIsCanRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetIsCanRebate.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGetIsCanRebate(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.IsCan = reader.int64(); - break; - } - case 3: { - message.Url = reader.string(); - break; - } - case 4: { - message.WX = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGetIsCanRebate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGetIsCanRebate} SCGetIsCanRebate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetIsCanRebate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGetIsCanRebate message. - * @function verify - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGetIsCanRebate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 10008: - break; - } - if (message.IsCan != null && message.hasOwnProperty("IsCan")) - if (!$util.isInteger(message.IsCan) && !(message.IsCan && $util.isInteger(message.IsCan.low) && $util.isInteger(message.IsCan.high))) - return "IsCan: integer|Long expected"; - if (message.Url != null && message.hasOwnProperty("Url")) - if (!$util.isString(message.Url)) - return "Url: string expected"; - if (message.WX != null && message.hasOwnProperty("WX")) - if (!$util.isString(message.WX)) - return "WX: string expected"; - return null; - }; - - /** - * Creates a SCGetIsCanRebate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGetIsCanRebate} SCGetIsCanRebate - */ - SCGetIsCanRebate.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGetIsCanRebate) - return object; - var message = new $root.gamehall.SCGetIsCanRebate(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Hall": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Hall": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_OnlineReward_Info_FindPlatform_Fail_Hall": - case 10008: - message.OpRetCode = 10008; - break; - } - if (object.IsCan != null) - if ($util.Long) - (message.IsCan = $util.Long.fromValue(object.IsCan)).unsigned = false; - else if (typeof object.IsCan === "string") - message.IsCan = parseInt(object.IsCan, 10); - else if (typeof object.IsCan === "number") - message.IsCan = object.IsCan; - else if (typeof object.IsCan === "object") - message.IsCan = new $util.LongBits(object.IsCan.low >>> 0, object.IsCan.high >>> 0).toNumber(); - if (object.Url != null) - message.Url = String(object.Url); - if (object.WX != null) - message.WX = String(object.WX); - return message; - }; - - /** - * Creates a plain object from a SCGetIsCanRebate message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {gamehall.SCGetIsCanRebate} message SCGetIsCanRebate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGetIsCanRebate.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Hall" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.IsCan = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.IsCan = options.longs === String ? "0" : 0; - object.Url = ""; - object.WX = ""; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Hall[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Hall[message.OpRetCode] : message.OpRetCode; - if (message.IsCan != null && message.hasOwnProperty("IsCan")) - if (typeof message.IsCan === "number") - object.IsCan = options.longs === String ? String(message.IsCan) : message.IsCan; - else - object.IsCan = options.longs === String ? $util.Long.prototype.toString.call(message.IsCan) : options.longs === Number ? new $util.LongBits(message.IsCan.low >>> 0, message.IsCan.high >>> 0).toNumber() : message.IsCan; - if (message.Url != null && message.hasOwnProperty("Url")) - object.Url = message.Url; - if (message.WX != null && message.hasOwnProperty("WX")) - object.WX = message.WX; - return object; - }; - - /** - * Converts this SCGetIsCanRebate to JSON. - * @function toJSON - * @memberof gamehall.SCGetIsCanRebate - * @instance - * @returns {Object.} JSON object - */ - SCGetIsCanRebate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGetIsCanRebate - * @function getTypeUrl - * @memberof gamehall.SCGetIsCanRebate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGetIsCanRebate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGetIsCanRebate"; - }; - - return SCGetIsCanRebate; - })(); - - gamehall.HallGameType = (function() { - - /** - * Properties of a HallGameType. - * @memberof gamehall - * @interface IHallGameType - * @property {number|null} [GameId] HallGameType GameId - * @property {number|null} [GameMode] HallGameType GameMode - */ - - /** - * Constructs a new HallGameType. - * @memberof gamehall - * @classdesc 个人信息////////////////////////////////////////////////////////////// - * @implements IHallGameType - * @constructor - * @param {gamehall.IHallGameType=} [properties] Properties to set - */ - function HallGameType(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * HallGameType GameId. - * @member {number} GameId - * @memberof gamehall.HallGameType - * @instance - */ - HallGameType.prototype.GameId = 0; - - /** - * HallGameType GameMode. - * @member {number} GameMode - * @memberof gamehall.HallGameType - * @instance - */ - HallGameType.prototype.GameMode = 0; - - /** - * Creates a new HallGameType instance using the specified properties. - * @function create - * @memberof gamehall.HallGameType - * @static - * @param {gamehall.IHallGameType=} [properties] Properties to set - * @returns {gamehall.HallGameType} HallGameType instance - */ - HallGameType.create = function create(properties) { - return new HallGameType(properties); - }; - - /** - * Encodes the specified HallGameType message. Does not implicitly {@link gamehall.HallGameType.verify|verify} messages. - * @function encode - * @memberof gamehall.HallGameType - * @static - * @param {gamehall.IHallGameType} message HallGameType message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallGameType.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.GameMode != null && Object.hasOwnProperty.call(message, "GameMode")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameMode); - return writer; - }; - - /** - * Encodes the specified HallGameType message, length delimited. Does not implicitly {@link gamehall.HallGameType.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.HallGameType - * @static - * @param {gamehall.IHallGameType} message HallGameType message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HallGameType.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a HallGameType message from the specified reader or buffer. - * @function decode - * @memberof gamehall.HallGameType - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.HallGameType} HallGameType - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallGameType.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.HallGameType(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.GameMode = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a HallGameType message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.HallGameType - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.HallGameType} HallGameType - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HallGameType.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a HallGameType message. - * @function verify - * @memberof gamehall.HallGameType - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - HallGameType.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.GameMode != null && message.hasOwnProperty("GameMode")) - if (!$util.isInteger(message.GameMode)) - return "GameMode: integer expected"; - return null; - }; - - /** - * Creates a HallGameType message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.HallGameType - * @static - * @param {Object.} object Plain object - * @returns {gamehall.HallGameType} HallGameType - */ - HallGameType.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.HallGameType) - return object; - var message = new $root.gamehall.HallGameType(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.GameMode != null) - message.GameMode = object.GameMode | 0; - return message; - }; - - /** - * Creates a plain object from a HallGameType message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.HallGameType - * @static - * @param {gamehall.HallGameType} message HallGameType - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - HallGameType.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameId = 0; - object.GameMode = 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.GameMode != null && message.hasOwnProperty("GameMode")) - object.GameMode = message.GameMode; - return object; - }; - - /** - * Converts this HallGameType to JSON. - * @function toJSON - * @memberof gamehall.HallGameType - * @instance - * @returns {Object.} JSON object - */ - HallGameType.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for HallGameType - * @function getTypeUrl - * @memberof gamehall.HallGameType - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - HallGameType.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.HallGameType"; - }; - - return HallGameType; - })(); - - /** - * HallOperaCode enum. - * @name gamehall.HallOperaCode - * @enum {number} - * @property {number} HallOperaZero=0 HallOperaZero value - * @property {number} HallChessGame=1 HallChessGame value - * @property {number} HallElectronicGame=2 HallElectronicGame value - * @property {number} HallFishingGame=3 HallFishingGame value - * @property {number} HallLiveVideo=4 HallLiveVideo value - * @property {number} HallLotteryGame=5 HallLotteryGame value - * @property {number} HallSportsGame=6 HallSportsGame value - * @property {number} HallPrivateRoom=7 HallPrivateRoom value - * @property {number} HallClubRoom=8 HallClubRoom value - * @property {number} HallThirdPlt=101 HallThirdPlt value - */ - gamehall.HallOperaCode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "HallOperaZero"] = 0; - values[valuesById[1] = "HallChessGame"] = 1; - values[valuesById[2] = "HallElectronicGame"] = 2; - values[valuesById[3] = "HallFishingGame"] = 3; - values[valuesById[4] = "HallLiveVideo"] = 4; - values[valuesById[5] = "HallLotteryGame"] = 5; - values[valuesById[6] = "HallSportsGame"] = 6; - values[valuesById[7] = "HallPrivateRoom"] = 7; - values[valuesById[8] = "HallClubRoom"] = 8; - values[valuesById[101] = "HallThirdPlt"] = 101; - return values; - })(); - - gamehall.CSNewPlayerInfo = (function() { - - /** - * Properties of a CSNewPlayerInfo. - * @memberof gamehall - * @interface ICSNewPlayerInfo - */ - - /** - * Constructs a new CSNewPlayerInfo. - * @memberof gamehall - * @classdesc Represents a CSNewPlayerInfo. - * @implements ICSNewPlayerInfo - * @constructor - * @param {gamehall.ICSNewPlayerInfo=} [properties] Properties to set - */ - function CSNewPlayerInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSNewPlayerInfo instance using the specified properties. - * @function create - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {gamehall.ICSNewPlayerInfo=} [properties] Properties to set - * @returns {gamehall.CSNewPlayerInfo} CSNewPlayerInfo instance - */ - CSNewPlayerInfo.create = function create(properties) { - return new CSNewPlayerInfo(properties); - }; - - /** - * Encodes the specified CSNewPlayerInfo message. Does not implicitly {@link gamehall.CSNewPlayerInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {gamehall.ICSNewPlayerInfo} message CSNewPlayerInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSNewPlayerInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSNewPlayerInfo message, length delimited. Does not implicitly {@link gamehall.CSNewPlayerInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {gamehall.ICSNewPlayerInfo} message CSNewPlayerInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSNewPlayerInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSNewPlayerInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSNewPlayerInfo} CSNewPlayerInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSNewPlayerInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSNewPlayerInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSNewPlayerInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSNewPlayerInfo} CSNewPlayerInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSNewPlayerInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSNewPlayerInfo message. - * @function verify - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSNewPlayerInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSNewPlayerInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSNewPlayerInfo} CSNewPlayerInfo - */ - CSNewPlayerInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSNewPlayerInfo) - return object; - return new $root.gamehall.CSNewPlayerInfo(); - }; - - /** - * Creates a plain object from a CSNewPlayerInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {gamehall.CSNewPlayerInfo} message CSNewPlayerInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSNewPlayerInfo.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSNewPlayerInfo to JSON. - * @function toJSON - * @memberof gamehall.CSNewPlayerInfo - * @instance - * @returns {Object.} JSON object - */ - CSNewPlayerInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSNewPlayerInfo - * @function getTypeUrl - * @memberof gamehall.CSNewPlayerInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSNewPlayerInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSNewPlayerInfo"; - }; - - return CSNewPlayerInfo; - })(); - - gamehall.SCNewPlayerInfo = (function() { - - /** - * Properties of a SCNewPlayerInfo. - * @memberof gamehall - * @interface ISCNewPlayerInfo - * @property {number|null} [GameTotalNum] SCNewPlayerInfo GameTotalNum - * @property {string|null} [GameMostPartake] SCNewPlayerInfo GameMostPartake - * @property {string|null} [GameMostProfit] SCNewPlayerInfo GameMostProfit - * @property {number|null} [GameMostProfitNum] SCNewPlayerInfo GameMostProfitNum - * @property {number|null} [CreateRoomNum] SCNewPlayerInfo CreateRoomNum - * @property {string|null} [CreateRoomMost] SCNewPlayerInfo CreateRoomMost - * @property {number|null} [CreateClubNum] SCNewPlayerInfo CreateClubNum - * @property {string|null} [CreateClubRoomMost] SCNewPlayerInfo CreateClubRoomMost - * @property {number|null} [TeamNum] SCNewPlayerInfo TeamNum - * @property {number|null} [AchievementTotal] SCNewPlayerInfo AchievementTotal - * @property {number|null} [RewardTotal] SCNewPlayerInfo RewardTotal - * @property {number|Long|null} [TotalCoin] SCNewPlayerInfo TotalCoin - * @property {number|Long|null} [LastGetCoinTime] SCNewPlayerInfo LastGetCoinTime - * @property {number|Long|null} [Coin] SCNewPlayerInfo Coin - * @property {number|null} [CodeType] SCNewPlayerInfo CodeType - * @property {Array.|null} [ClassType] SCNewPlayerInfo ClassType - */ - - /** - * Constructs a new SCNewPlayerInfo. - * @memberof gamehall - * @classdesc Represents a SCNewPlayerInfo. - * @implements ISCNewPlayerInfo - * @constructor - * @param {gamehall.ISCNewPlayerInfo=} [properties] Properties to set - */ - function SCNewPlayerInfo(properties) { - this.ClassType = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCNewPlayerInfo GameTotalNum. - * @member {number} GameTotalNum - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.GameTotalNum = 0; - - /** - * SCNewPlayerInfo GameMostPartake. - * @member {string} GameMostPartake - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.GameMostPartake = ""; - - /** - * SCNewPlayerInfo GameMostProfit. - * @member {string} GameMostProfit - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.GameMostProfit = ""; - - /** - * SCNewPlayerInfo GameMostProfitNum. - * @member {number} GameMostProfitNum - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.GameMostProfitNum = 0; - - /** - * SCNewPlayerInfo CreateRoomNum. - * @member {number} CreateRoomNum - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.CreateRoomNum = 0; - - /** - * SCNewPlayerInfo CreateRoomMost. - * @member {string} CreateRoomMost - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.CreateRoomMost = ""; - - /** - * SCNewPlayerInfo CreateClubNum. - * @member {number} CreateClubNum - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.CreateClubNum = 0; - - /** - * SCNewPlayerInfo CreateClubRoomMost. - * @member {string} CreateClubRoomMost - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.CreateClubRoomMost = ""; - - /** - * SCNewPlayerInfo TeamNum. - * @member {number} TeamNum - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.TeamNum = 0; - - /** - * SCNewPlayerInfo AchievementTotal. - * @member {number} AchievementTotal - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.AchievementTotal = 0; - - /** - * SCNewPlayerInfo RewardTotal. - * @member {number} RewardTotal - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.RewardTotal = 0; - - /** - * SCNewPlayerInfo TotalCoin. - * @member {number|Long} TotalCoin - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.TotalCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCNewPlayerInfo LastGetCoinTime. - * @member {number|Long} LastGetCoinTime - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.LastGetCoinTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCNewPlayerInfo Coin. - * @member {number|Long} Coin - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCNewPlayerInfo CodeType. - * @member {number} CodeType - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.CodeType = 0; - - /** - * SCNewPlayerInfo ClassType. - * @member {Array.} ClassType - * @memberof gamehall.SCNewPlayerInfo - * @instance - */ - SCNewPlayerInfo.prototype.ClassType = $util.emptyArray; - - /** - * Creates a new SCNewPlayerInfo instance using the specified properties. - * @function create - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {gamehall.ISCNewPlayerInfo=} [properties] Properties to set - * @returns {gamehall.SCNewPlayerInfo} SCNewPlayerInfo instance - */ - SCNewPlayerInfo.create = function create(properties) { - return new SCNewPlayerInfo(properties); - }; - - /** - * Encodes the specified SCNewPlayerInfo message. Does not implicitly {@link gamehall.SCNewPlayerInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {gamehall.ISCNewPlayerInfo} message SCNewPlayerInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCNewPlayerInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameTotalNum != null && Object.hasOwnProperty.call(message, "GameTotalNum")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameTotalNum); - if (message.GameMostPartake != null && Object.hasOwnProperty.call(message, "GameMostPartake")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.GameMostPartake); - if (message.GameMostProfit != null && Object.hasOwnProperty.call(message, "GameMostProfit")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.GameMostProfit); - if (message.GameMostProfitNum != null && Object.hasOwnProperty.call(message, "GameMostProfitNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.GameMostProfitNum); - if (message.CreateRoomNum != null && Object.hasOwnProperty.call(message, "CreateRoomNum")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.CreateRoomNum); - if (message.CreateRoomMost != null && Object.hasOwnProperty.call(message, "CreateRoomMost")) - writer.uint32(/* id 6, wireType 2 =*/50).string(message.CreateRoomMost); - if (message.CreateClubNum != null && Object.hasOwnProperty.call(message, "CreateClubNum")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.CreateClubNum); - if (message.CreateClubRoomMost != null && Object.hasOwnProperty.call(message, "CreateClubRoomMost")) - writer.uint32(/* id 8, wireType 2 =*/66).string(message.CreateClubRoomMost); - if (message.TeamNum != null && Object.hasOwnProperty.call(message, "TeamNum")) - writer.uint32(/* id 9, wireType 0 =*/72).int32(message.TeamNum); - if (message.AchievementTotal != null && Object.hasOwnProperty.call(message, "AchievementTotal")) - writer.uint32(/* id 10, wireType 0 =*/80).int32(message.AchievementTotal); - if (message.RewardTotal != null && Object.hasOwnProperty.call(message, "RewardTotal")) - writer.uint32(/* id 11, wireType 0 =*/88).int32(message.RewardTotal); - if (message.TotalCoin != null && Object.hasOwnProperty.call(message, "TotalCoin")) - writer.uint32(/* id 12, wireType 0 =*/96).int64(message.TotalCoin); - if (message.LastGetCoinTime != null && Object.hasOwnProperty.call(message, "LastGetCoinTime")) - writer.uint32(/* id 13, wireType 0 =*/104).int64(message.LastGetCoinTime); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 14, wireType 0 =*/112).int64(message.Coin); - if (message.CodeType != null && Object.hasOwnProperty.call(message, "CodeType")) - writer.uint32(/* id 15, wireType 0 =*/120).int32(message.CodeType); - if (message.ClassType != null && message.ClassType.length) { - writer.uint32(/* id 16, wireType 2 =*/130).fork(); - for (var i = 0; i < message.ClassType.length; ++i) - writer.int32(message.ClassType[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCNewPlayerInfo message, length delimited. Does not implicitly {@link gamehall.SCNewPlayerInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {gamehall.ISCNewPlayerInfo} message SCNewPlayerInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCNewPlayerInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCNewPlayerInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCNewPlayerInfo} SCNewPlayerInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCNewPlayerInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCNewPlayerInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameTotalNum = reader.int32(); - break; - } - case 2: { - message.GameMostPartake = reader.string(); - break; - } - case 3: { - message.GameMostProfit = reader.string(); - break; - } - case 4: { - message.GameMostProfitNum = reader.int32(); - break; - } - case 5: { - message.CreateRoomNum = reader.int32(); - break; - } - case 6: { - message.CreateRoomMost = reader.string(); - break; - } - case 7: { - message.CreateClubNum = reader.int32(); - break; - } - case 8: { - message.CreateClubRoomMost = reader.string(); - break; - } - case 9: { - message.TeamNum = reader.int32(); - break; - } - case 10: { - message.AchievementTotal = reader.int32(); - break; - } - case 11: { - message.RewardTotal = reader.int32(); - break; - } - case 12: { - message.TotalCoin = reader.int64(); - break; - } - case 13: { - message.LastGetCoinTime = reader.int64(); - break; - } - case 14: { - message.Coin = reader.int64(); - break; - } - case 15: { - message.CodeType = reader.int32(); - break; - } - case 16: { - if (!(message.ClassType && message.ClassType.length)) - message.ClassType = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.ClassType.push(reader.int32()); - } else - message.ClassType.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCNewPlayerInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCNewPlayerInfo} SCNewPlayerInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCNewPlayerInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCNewPlayerInfo message. - * @function verify - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCNewPlayerInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameTotalNum != null && message.hasOwnProperty("GameTotalNum")) - if (!$util.isInteger(message.GameTotalNum)) - return "GameTotalNum: integer expected"; - if (message.GameMostPartake != null && message.hasOwnProperty("GameMostPartake")) - if (!$util.isString(message.GameMostPartake)) - return "GameMostPartake: string expected"; - if (message.GameMostProfit != null && message.hasOwnProperty("GameMostProfit")) - if (!$util.isString(message.GameMostProfit)) - return "GameMostProfit: string expected"; - if (message.GameMostProfitNum != null && message.hasOwnProperty("GameMostProfitNum")) - if (!$util.isInteger(message.GameMostProfitNum)) - return "GameMostProfitNum: integer expected"; - if (message.CreateRoomNum != null && message.hasOwnProperty("CreateRoomNum")) - if (!$util.isInteger(message.CreateRoomNum)) - return "CreateRoomNum: integer expected"; - if (message.CreateRoomMost != null && message.hasOwnProperty("CreateRoomMost")) - if (!$util.isString(message.CreateRoomMost)) - return "CreateRoomMost: string expected"; - if (message.CreateClubNum != null && message.hasOwnProperty("CreateClubNum")) - if (!$util.isInteger(message.CreateClubNum)) - return "CreateClubNum: integer expected"; - if (message.CreateClubRoomMost != null && message.hasOwnProperty("CreateClubRoomMost")) - if (!$util.isString(message.CreateClubRoomMost)) - return "CreateClubRoomMost: string expected"; - if (message.TeamNum != null && message.hasOwnProperty("TeamNum")) - if (!$util.isInteger(message.TeamNum)) - return "TeamNum: integer expected"; - if (message.AchievementTotal != null && message.hasOwnProperty("AchievementTotal")) - if (!$util.isInteger(message.AchievementTotal)) - return "AchievementTotal: integer expected"; - if (message.RewardTotal != null && message.hasOwnProperty("RewardTotal")) - if (!$util.isInteger(message.RewardTotal)) - return "RewardTotal: integer expected"; - if (message.TotalCoin != null && message.hasOwnProperty("TotalCoin")) - if (!$util.isInteger(message.TotalCoin) && !(message.TotalCoin && $util.isInteger(message.TotalCoin.low) && $util.isInteger(message.TotalCoin.high))) - return "TotalCoin: integer|Long expected"; - if (message.LastGetCoinTime != null && message.hasOwnProperty("LastGetCoinTime")) - if (!$util.isInteger(message.LastGetCoinTime) && !(message.LastGetCoinTime && $util.isInteger(message.LastGetCoinTime.low) && $util.isInteger(message.LastGetCoinTime.high))) - return "LastGetCoinTime: integer|Long expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - if (message.CodeType != null && message.hasOwnProperty("CodeType")) - if (!$util.isInteger(message.CodeType)) - return "CodeType: integer expected"; - if (message.ClassType != null && message.hasOwnProperty("ClassType")) { - if (!Array.isArray(message.ClassType)) - return "ClassType: array expected"; - for (var i = 0; i < message.ClassType.length; ++i) - if (!$util.isInteger(message.ClassType[i])) - return "ClassType: integer[] expected"; - } - return null; - }; - - /** - * Creates a SCNewPlayerInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCNewPlayerInfo} SCNewPlayerInfo - */ - SCNewPlayerInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCNewPlayerInfo) - return object; - var message = new $root.gamehall.SCNewPlayerInfo(); - if (object.GameTotalNum != null) - message.GameTotalNum = object.GameTotalNum | 0; - if (object.GameMostPartake != null) - message.GameMostPartake = String(object.GameMostPartake); - if (object.GameMostProfit != null) - message.GameMostProfit = String(object.GameMostProfit); - if (object.GameMostProfitNum != null) - message.GameMostProfitNum = object.GameMostProfitNum | 0; - if (object.CreateRoomNum != null) - message.CreateRoomNum = object.CreateRoomNum | 0; - if (object.CreateRoomMost != null) - message.CreateRoomMost = String(object.CreateRoomMost); - if (object.CreateClubNum != null) - message.CreateClubNum = object.CreateClubNum | 0; - if (object.CreateClubRoomMost != null) - message.CreateClubRoomMost = String(object.CreateClubRoomMost); - if (object.TeamNum != null) - message.TeamNum = object.TeamNum | 0; - if (object.AchievementTotal != null) - message.AchievementTotal = object.AchievementTotal | 0; - if (object.RewardTotal != null) - message.RewardTotal = object.RewardTotal | 0; - if (object.TotalCoin != null) - if ($util.Long) - (message.TotalCoin = $util.Long.fromValue(object.TotalCoin)).unsigned = false; - else if (typeof object.TotalCoin === "string") - message.TotalCoin = parseInt(object.TotalCoin, 10); - else if (typeof object.TotalCoin === "number") - message.TotalCoin = object.TotalCoin; - else if (typeof object.TotalCoin === "object") - message.TotalCoin = new $util.LongBits(object.TotalCoin.low >>> 0, object.TotalCoin.high >>> 0).toNumber(); - if (object.LastGetCoinTime != null) - if ($util.Long) - (message.LastGetCoinTime = $util.Long.fromValue(object.LastGetCoinTime)).unsigned = false; - else if (typeof object.LastGetCoinTime === "string") - message.LastGetCoinTime = parseInt(object.LastGetCoinTime, 10); - else if (typeof object.LastGetCoinTime === "number") - message.LastGetCoinTime = object.LastGetCoinTime; - else if (typeof object.LastGetCoinTime === "object") - message.LastGetCoinTime = new $util.LongBits(object.LastGetCoinTime.low >>> 0, object.LastGetCoinTime.high >>> 0).toNumber(); - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - if (object.CodeType != null) - message.CodeType = object.CodeType | 0; - if (object.ClassType) { - if (!Array.isArray(object.ClassType)) - throw TypeError(".gamehall.SCNewPlayerInfo.ClassType: array expected"); - message.ClassType = []; - for (var i = 0; i < object.ClassType.length; ++i) - message.ClassType[i] = object.ClassType[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a SCNewPlayerInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {gamehall.SCNewPlayerInfo} message SCNewPlayerInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCNewPlayerInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.ClassType = []; - if (options.defaults) { - object.GameTotalNum = 0; - object.GameMostPartake = ""; - object.GameMostProfit = ""; - object.GameMostProfitNum = 0; - object.CreateRoomNum = 0; - object.CreateRoomMost = ""; - object.CreateClubNum = 0; - object.CreateClubRoomMost = ""; - object.TeamNum = 0; - object.AchievementTotal = 0; - object.RewardTotal = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.LastGetCoinTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.LastGetCoinTime = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - object.CodeType = 0; - } - if (message.GameTotalNum != null && message.hasOwnProperty("GameTotalNum")) - object.GameTotalNum = message.GameTotalNum; - if (message.GameMostPartake != null && message.hasOwnProperty("GameMostPartake")) - object.GameMostPartake = message.GameMostPartake; - if (message.GameMostProfit != null && message.hasOwnProperty("GameMostProfit")) - object.GameMostProfit = message.GameMostProfit; - if (message.GameMostProfitNum != null && message.hasOwnProperty("GameMostProfitNum")) - object.GameMostProfitNum = message.GameMostProfitNum; - if (message.CreateRoomNum != null && message.hasOwnProperty("CreateRoomNum")) - object.CreateRoomNum = message.CreateRoomNum; - if (message.CreateRoomMost != null && message.hasOwnProperty("CreateRoomMost")) - object.CreateRoomMost = message.CreateRoomMost; - if (message.CreateClubNum != null && message.hasOwnProperty("CreateClubNum")) - object.CreateClubNum = message.CreateClubNum; - if (message.CreateClubRoomMost != null && message.hasOwnProperty("CreateClubRoomMost")) - object.CreateClubRoomMost = message.CreateClubRoomMost; - if (message.TeamNum != null && message.hasOwnProperty("TeamNum")) - object.TeamNum = message.TeamNum; - if (message.AchievementTotal != null && message.hasOwnProperty("AchievementTotal")) - object.AchievementTotal = message.AchievementTotal; - if (message.RewardTotal != null && message.hasOwnProperty("RewardTotal")) - object.RewardTotal = message.RewardTotal; - if (message.TotalCoin != null && message.hasOwnProperty("TotalCoin")) - if (typeof message.TotalCoin === "number") - object.TotalCoin = options.longs === String ? String(message.TotalCoin) : message.TotalCoin; - else - object.TotalCoin = options.longs === String ? $util.Long.prototype.toString.call(message.TotalCoin) : options.longs === Number ? new $util.LongBits(message.TotalCoin.low >>> 0, message.TotalCoin.high >>> 0).toNumber() : message.TotalCoin; - if (message.LastGetCoinTime != null && message.hasOwnProperty("LastGetCoinTime")) - if (typeof message.LastGetCoinTime === "number") - object.LastGetCoinTime = options.longs === String ? String(message.LastGetCoinTime) : message.LastGetCoinTime; - else - object.LastGetCoinTime = options.longs === String ? $util.Long.prototype.toString.call(message.LastGetCoinTime) : options.longs === Number ? new $util.LongBits(message.LastGetCoinTime.low >>> 0, message.LastGetCoinTime.high >>> 0).toNumber() : message.LastGetCoinTime; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - if (message.CodeType != null && message.hasOwnProperty("CodeType")) - object.CodeType = message.CodeType; - if (message.ClassType && message.ClassType.length) { - object.ClassType = []; - for (var j = 0; j < message.ClassType.length; ++j) - object.ClassType[j] = message.ClassType[j]; - } - return object; - }; - - /** - * Converts this SCNewPlayerInfo to JSON. - * @function toJSON - * @memberof gamehall.SCNewPlayerInfo - * @instance - * @returns {Object.} JSON object - */ - SCNewPlayerInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCNewPlayerInfo - * @function getTypeUrl - * @memberof gamehall.SCNewPlayerInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCNewPlayerInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCNewPlayerInfo"; - }; - - return SCNewPlayerInfo; - })(); - - gamehall.SCRebateTotalInfo = (function() { - - /** - * Properties of a SCRebateTotalInfo. - * @memberof gamehall - * @interface ISCRebateTotalInfo - * @property {number|Long|null} [TotalCoin] SCRebateTotalInfo TotalCoin - * @property {number|Long|null} [LastGetCoinTime] SCRebateTotalInfo LastGetCoinTime - * @property {number|Long|null} [Coin] SCRebateTotalInfo Coin - * @property {number|null} [CodeType] SCRebateTotalInfo CodeType - */ - - /** - * Constructs a new SCRebateTotalInfo. - * @memberof gamehall - * @classdesc Represents a SCRebateTotalInfo. - * @implements ISCRebateTotalInfo - * @constructor - * @param {gamehall.ISCRebateTotalInfo=} [properties] Properties to set - */ - function SCRebateTotalInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCRebateTotalInfo TotalCoin. - * @member {number|Long} TotalCoin - * @memberof gamehall.SCRebateTotalInfo - * @instance - */ - SCRebateTotalInfo.prototype.TotalCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCRebateTotalInfo LastGetCoinTime. - * @member {number|Long} LastGetCoinTime - * @memberof gamehall.SCRebateTotalInfo - * @instance - */ - SCRebateTotalInfo.prototype.LastGetCoinTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCRebateTotalInfo Coin. - * @member {number|Long} Coin - * @memberof gamehall.SCRebateTotalInfo - * @instance - */ - SCRebateTotalInfo.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCRebateTotalInfo CodeType. - * @member {number} CodeType - * @memberof gamehall.SCRebateTotalInfo - * @instance - */ - SCRebateTotalInfo.prototype.CodeType = 0; - - /** - * Creates a new SCRebateTotalInfo instance using the specified properties. - * @function create - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {gamehall.ISCRebateTotalInfo=} [properties] Properties to set - * @returns {gamehall.SCRebateTotalInfo} SCRebateTotalInfo instance - */ - SCRebateTotalInfo.create = function create(properties) { - return new SCRebateTotalInfo(properties); - }; - - /** - * Encodes the specified SCRebateTotalInfo message. Does not implicitly {@link gamehall.SCRebateTotalInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {gamehall.ISCRebateTotalInfo} message SCRebateTotalInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRebateTotalInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.TotalCoin != null && Object.hasOwnProperty.call(message, "TotalCoin")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.TotalCoin); - if (message.LastGetCoinTime != null && Object.hasOwnProperty.call(message, "LastGetCoinTime")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.LastGetCoinTime); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Coin); - if (message.CodeType != null && Object.hasOwnProperty.call(message, "CodeType")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.CodeType); - return writer; - }; - - /** - * Encodes the specified SCRebateTotalInfo message, length delimited. Does not implicitly {@link gamehall.SCRebateTotalInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {gamehall.ISCRebateTotalInfo} message SCRebateTotalInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCRebateTotalInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCRebateTotalInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCRebateTotalInfo} SCRebateTotalInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRebateTotalInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCRebateTotalInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.TotalCoin = reader.int64(); - break; - } - case 2: { - message.LastGetCoinTime = reader.int64(); - break; - } - case 3: { - message.Coin = reader.int64(); - break; - } - case 4: { - message.CodeType = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCRebateTotalInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCRebateTotalInfo} SCRebateTotalInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCRebateTotalInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCRebateTotalInfo message. - * @function verify - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCRebateTotalInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.TotalCoin != null && message.hasOwnProperty("TotalCoin")) - if (!$util.isInteger(message.TotalCoin) && !(message.TotalCoin && $util.isInteger(message.TotalCoin.low) && $util.isInteger(message.TotalCoin.high))) - return "TotalCoin: integer|Long expected"; - if (message.LastGetCoinTime != null && message.hasOwnProperty("LastGetCoinTime")) - if (!$util.isInteger(message.LastGetCoinTime) && !(message.LastGetCoinTime && $util.isInteger(message.LastGetCoinTime.low) && $util.isInteger(message.LastGetCoinTime.high))) - return "LastGetCoinTime: integer|Long expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - if (message.CodeType != null && message.hasOwnProperty("CodeType")) - if (!$util.isInteger(message.CodeType)) - return "CodeType: integer expected"; - return null; - }; - - /** - * Creates a SCRebateTotalInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCRebateTotalInfo} SCRebateTotalInfo - */ - SCRebateTotalInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCRebateTotalInfo) - return object; - var message = new $root.gamehall.SCRebateTotalInfo(); - if (object.TotalCoin != null) - if ($util.Long) - (message.TotalCoin = $util.Long.fromValue(object.TotalCoin)).unsigned = false; - else if (typeof object.TotalCoin === "string") - message.TotalCoin = parseInt(object.TotalCoin, 10); - else if (typeof object.TotalCoin === "number") - message.TotalCoin = object.TotalCoin; - else if (typeof object.TotalCoin === "object") - message.TotalCoin = new $util.LongBits(object.TotalCoin.low >>> 0, object.TotalCoin.high >>> 0).toNumber(); - if (object.LastGetCoinTime != null) - if ($util.Long) - (message.LastGetCoinTime = $util.Long.fromValue(object.LastGetCoinTime)).unsigned = false; - else if (typeof object.LastGetCoinTime === "string") - message.LastGetCoinTime = parseInt(object.LastGetCoinTime, 10); - else if (typeof object.LastGetCoinTime === "number") - message.LastGetCoinTime = object.LastGetCoinTime; - else if (typeof object.LastGetCoinTime === "object") - message.LastGetCoinTime = new $util.LongBits(object.LastGetCoinTime.low >>> 0, object.LastGetCoinTime.high >>> 0).toNumber(); - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - if (object.CodeType != null) - message.CodeType = object.CodeType | 0; - return message; - }; - - /** - * Creates a plain object from a SCRebateTotalInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {gamehall.SCRebateTotalInfo} message SCRebateTotalInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCRebateTotalInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.LastGetCoinTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.LastGetCoinTime = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - object.CodeType = 0; - } - if (message.TotalCoin != null && message.hasOwnProperty("TotalCoin")) - if (typeof message.TotalCoin === "number") - object.TotalCoin = options.longs === String ? String(message.TotalCoin) : message.TotalCoin; - else - object.TotalCoin = options.longs === String ? $util.Long.prototype.toString.call(message.TotalCoin) : options.longs === Number ? new $util.LongBits(message.TotalCoin.low >>> 0, message.TotalCoin.high >>> 0).toNumber() : message.TotalCoin; - if (message.LastGetCoinTime != null && message.hasOwnProperty("LastGetCoinTime")) - if (typeof message.LastGetCoinTime === "number") - object.LastGetCoinTime = options.longs === String ? String(message.LastGetCoinTime) : message.LastGetCoinTime; - else - object.LastGetCoinTime = options.longs === String ? $util.Long.prototype.toString.call(message.LastGetCoinTime) : options.longs === Number ? new $util.LongBits(message.LastGetCoinTime.low >>> 0, message.LastGetCoinTime.high >>> 0).toNumber() : message.LastGetCoinTime; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - if (message.CodeType != null && message.hasOwnProperty("CodeType")) - object.CodeType = message.CodeType; - return object; - }; - - /** - * Converts this SCRebateTotalInfo to JSON. - * @function toJSON - * @memberof gamehall.SCRebateTotalInfo - * @instance - * @returns {Object.} JSON object - */ - SCRebateTotalInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCRebateTotalInfo - * @function getTypeUrl - * @memberof gamehall.SCRebateTotalInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCRebateTotalInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCRebateTotalInfo"; - }; - - return SCRebateTotalInfo; - })(); - - gamehall.CSCodeTypeRecord = (function() { - - /** - * Properties of a CSCodeTypeRecord. - * @memberof gamehall - * @interface ICSCodeTypeRecord - * @property {gamehall.HallOperaCode|null} [ShowTypeId] CSCodeTypeRecord ShowTypeId - */ - - /** - * Constructs a new CSCodeTypeRecord. - * @memberof gamehall - * @classdesc Represents a CSCodeTypeRecord. - * @implements ICSCodeTypeRecord - * @constructor - * @param {gamehall.ICSCodeTypeRecord=} [properties] Properties to set - */ - function CSCodeTypeRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCodeTypeRecord ShowTypeId. - * @member {gamehall.HallOperaCode} ShowTypeId - * @memberof gamehall.CSCodeTypeRecord - * @instance - */ - CSCodeTypeRecord.prototype.ShowTypeId = 0; - - /** - * Creates a new CSCodeTypeRecord instance using the specified properties. - * @function create - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {gamehall.ICSCodeTypeRecord=} [properties] Properties to set - * @returns {gamehall.CSCodeTypeRecord} CSCodeTypeRecord instance - */ - CSCodeTypeRecord.create = function create(properties) { - return new CSCodeTypeRecord(properties); - }; - - /** - * Encodes the specified CSCodeTypeRecord message. Does not implicitly {@link gamehall.CSCodeTypeRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {gamehall.ICSCodeTypeRecord} message CSCodeTypeRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCodeTypeRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowTypeId != null && Object.hasOwnProperty.call(message, "ShowTypeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShowTypeId); - return writer; - }; - - /** - * Encodes the specified CSCodeTypeRecord message, length delimited. Does not implicitly {@link gamehall.CSCodeTypeRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {gamehall.ICSCodeTypeRecord} message CSCodeTypeRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCodeTypeRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCodeTypeRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCodeTypeRecord} CSCodeTypeRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCodeTypeRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCodeTypeRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowTypeId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCodeTypeRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCodeTypeRecord} CSCodeTypeRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCodeTypeRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCodeTypeRecord message. - * @function verify - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCodeTypeRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowTypeId != null && message.hasOwnProperty("ShowTypeId")) - switch (message.ShowTypeId) { - default: - return "ShowTypeId: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 101: - break; - } - return null; - }; - - /** - * Creates a CSCodeTypeRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCodeTypeRecord} CSCodeTypeRecord - */ - CSCodeTypeRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCodeTypeRecord) - return object; - var message = new $root.gamehall.CSCodeTypeRecord(); - switch (object.ShowTypeId) { - default: - if (typeof object.ShowTypeId === "number") { - message.ShowTypeId = object.ShowTypeId; - break; - } - break; - case "HallOperaZero": - case 0: - message.ShowTypeId = 0; - break; - case "HallChessGame": - case 1: - message.ShowTypeId = 1; - break; - case "HallElectronicGame": - case 2: - message.ShowTypeId = 2; - break; - case "HallFishingGame": - case 3: - message.ShowTypeId = 3; - break; - case "HallLiveVideo": - case 4: - message.ShowTypeId = 4; - break; - case "HallLotteryGame": - case 5: - message.ShowTypeId = 5; - break; - case "HallSportsGame": - case 6: - message.ShowTypeId = 6; - break; - case "HallPrivateRoom": - case 7: - message.ShowTypeId = 7; - break; - case "HallClubRoom": - case 8: - message.ShowTypeId = 8; - break; - case "HallThirdPlt": - case 101: - message.ShowTypeId = 101; - break; - } - return message; - }; - - /** - * Creates a plain object from a CSCodeTypeRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {gamehall.CSCodeTypeRecord} message CSCodeTypeRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCodeTypeRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.ShowTypeId = options.enums === String ? "HallOperaZero" : 0; - if (message.ShowTypeId != null && message.hasOwnProperty("ShowTypeId")) - object.ShowTypeId = options.enums === String ? $root.gamehall.HallOperaCode[message.ShowTypeId] === undefined ? message.ShowTypeId : $root.gamehall.HallOperaCode[message.ShowTypeId] : message.ShowTypeId; - return object; - }; - - /** - * Converts this CSCodeTypeRecord to JSON. - * @function toJSON - * @memberof gamehall.CSCodeTypeRecord - * @instance - * @returns {Object.} JSON object - */ - CSCodeTypeRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCodeTypeRecord - * @function getTypeUrl - * @memberof gamehall.CSCodeTypeRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCodeTypeRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCodeTypeRecord"; - }; - - return CSCodeTypeRecord; - })(); - - gamehall.CodeTypeRecord = (function() { - - /** - * Properties of a CodeTypeRecord. - * @memberof gamehall - * @interface ICodeTypeRecord - * @property {string|null} [GameName] CodeTypeRecord GameName - * @property {number|Long|null} [GameBetCoin] CodeTypeRecord GameBetCoin - * @property {number|null} [Rate] CodeTypeRecord Rate - * @property {number|null} [Coin] CodeTypeRecord Coin - * @property {number|null} [MinCoin] CodeTypeRecord MinCoin - * @property {number|null} [MaxCoin] CodeTypeRecord MaxCoin - */ - - /** - * Constructs a new CodeTypeRecord. - * @memberof gamehall - * @classdesc 洗码列表 - * @implements ICodeTypeRecord - * @constructor - * @param {gamehall.ICodeTypeRecord=} [properties] Properties to set - */ - function CodeTypeRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CodeTypeRecord GameName. - * @member {string} GameName - * @memberof gamehall.CodeTypeRecord - * @instance - */ - CodeTypeRecord.prototype.GameName = ""; - - /** - * CodeTypeRecord GameBetCoin. - * @member {number|Long} GameBetCoin - * @memberof gamehall.CodeTypeRecord - * @instance - */ - CodeTypeRecord.prototype.GameBetCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CodeTypeRecord Rate. - * @member {number} Rate - * @memberof gamehall.CodeTypeRecord - * @instance - */ - CodeTypeRecord.prototype.Rate = 0; - - /** - * CodeTypeRecord Coin. - * @member {number} Coin - * @memberof gamehall.CodeTypeRecord - * @instance - */ - CodeTypeRecord.prototype.Coin = 0; - - /** - * CodeTypeRecord MinCoin. - * @member {number} MinCoin - * @memberof gamehall.CodeTypeRecord - * @instance - */ - CodeTypeRecord.prototype.MinCoin = 0; - - /** - * CodeTypeRecord MaxCoin. - * @member {number} MaxCoin - * @memberof gamehall.CodeTypeRecord - * @instance - */ - CodeTypeRecord.prototype.MaxCoin = 0; - - /** - * Creates a new CodeTypeRecord instance using the specified properties. - * @function create - * @memberof gamehall.CodeTypeRecord - * @static - * @param {gamehall.ICodeTypeRecord=} [properties] Properties to set - * @returns {gamehall.CodeTypeRecord} CodeTypeRecord instance - */ - CodeTypeRecord.create = function create(properties) { - return new CodeTypeRecord(properties); - }; - - /** - * Encodes the specified CodeTypeRecord message. Does not implicitly {@link gamehall.CodeTypeRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.CodeTypeRecord - * @static - * @param {gamehall.ICodeTypeRecord} message CodeTypeRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CodeTypeRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameName != null && Object.hasOwnProperty.call(message, "GameName")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.GameName); - if (message.GameBetCoin != null && Object.hasOwnProperty.call(message, "GameBetCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.GameBetCoin); - if (message.Rate != null && Object.hasOwnProperty.call(message, "Rate")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Rate); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.Coin); - if (message.MinCoin != null && Object.hasOwnProperty.call(message, "MinCoin")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.MinCoin); - if (message.MaxCoin != null && Object.hasOwnProperty.call(message, "MaxCoin")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.MaxCoin); - return writer; - }; - - /** - * Encodes the specified CodeTypeRecord message, length delimited. Does not implicitly {@link gamehall.CodeTypeRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CodeTypeRecord - * @static - * @param {gamehall.ICodeTypeRecord} message CodeTypeRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CodeTypeRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CodeTypeRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CodeTypeRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CodeTypeRecord} CodeTypeRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CodeTypeRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CodeTypeRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameName = reader.string(); - break; - } - case 2: { - message.GameBetCoin = reader.int64(); - break; - } - case 3: { - message.Rate = reader.int32(); - break; - } - case 4: { - message.Coin = reader.int32(); - break; - } - case 5: { - message.MinCoin = reader.int32(); - break; - } - case 6: { - message.MaxCoin = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CodeTypeRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CodeTypeRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CodeTypeRecord} CodeTypeRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CodeTypeRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CodeTypeRecord message. - * @function verify - * @memberof gamehall.CodeTypeRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CodeTypeRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameName != null && message.hasOwnProperty("GameName")) - if (!$util.isString(message.GameName)) - return "GameName: string expected"; - if (message.GameBetCoin != null && message.hasOwnProperty("GameBetCoin")) - if (!$util.isInteger(message.GameBetCoin) && !(message.GameBetCoin && $util.isInteger(message.GameBetCoin.low) && $util.isInteger(message.GameBetCoin.high))) - return "GameBetCoin: integer|Long expected"; - if (message.Rate != null && message.hasOwnProperty("Rate")) - if (!$util.isInteger(message.Rate)) - return "Rate: integer expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin)) - return "Coin: integer expected"; - if (message.MinCoin != null && message.hasOwnProperty("MinCoin")) - if (!$util.isInteger(message.MinCoin)) - return "MinCoin: integer expected"; - if (message.MaxCoin != null && message.hasOwnProperty("MaxCoin")) - if (!$util.isInteger(message.MaxCoin)) - return "MaxCoin: integer expected"; - return null; - }; - - /** - * Creates a CodeTypeRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CodeTypeRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CodeTypeRecord} CodeTypeRecord - */ - CodeTypeRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CodeTypeRecord) - return object; - var message = new $root.gamehall.CodeTypeRecord(); - if (object.GameName != null) - message.GameName = String(object.GameName); - if (object.GameBetCoin != null) - if ($util.Long) - (message.GameBetCoin = $util.Long.fromValue(object.GameBetCoin)).unsigned = false; - else if (typeof object.GameBetCoin === "string") - message.GameBetCoin = parseInt(object.GameBetCoin, 10); - else if (typeof object.GameBetCoin === "number") - message.GameBetCoin = object.GameBetCoin; - else if (typeof object.GameBetCoin === "object") - message.GameBetCoin = new $util.LongBits(object.GameBetCoin.low >>> 0, object.GameBetCoin.high >>> 0).toNumber(); - if (object.Rate != null) - message.Rate = object.Rate | 0; - if (object.Coin != null) - message.Coin = object.Coin | 0; - if (object.MinCoin != null) - message.MinCoin = object.MinCoin | 0; - if (object.MaxCoin != null) - message.MaxCoin = object.MaxCoin | 0; - return message; - }; - - /** - * Creates a plain object from a CodeTypeRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CodeTypeRecord - * @static - * @param {gamehall.CodeTypeRecord} message CodeTypeRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CodeTypeRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameName = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.GameBetCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.GameBetCoin = options.longs === String ? "0" : 0; - object.Rate = 0; - object.Coin = 0; - object.MinCoin = 0; - object.MaxCoin = 0; - } - if (message.GameName != null && message.hasOwnProperty("GameName")) - object.GameName = message.GameName; - if (message.GameBetCoin != null && message.hasOwnProperty("GameBetCoin")) - if (typeof message.GameBetCoin === "number") - object.GameBetCoin = options.longs === String ? String(message.GameBetCoin) : message.GameBetCoin; - else - object.GameBetCoin = options.longs === String ? $util.Long.prototype.toString.call(message.GameBetCoin) : options.longs === Number ? new $util.LongBits(message.GameBetCoin.low >>> 0, message.GameBetCoin.high >>> 0).toNumber() : message.GameBetCoin; - if (message.Rate != null && message.hasOwnProperty("Rate")) - object.Rate = message.Rate; - if (message.Coin != null && message.hasOwnProperty("Coin")) - object.Coin = message.Coin; - if (message.MinCoin != null && message.hasOwnProperty("MinCoin")) - object.MinCoin = message.MinCoin; - if (message.MaxCoin != null && message.hasOwnProperty("MaxCoin")) - object.MaxCoin = message.MaxCoin; - return object; - }; - - /** - * Converts this CodeTypeRecord to JSON. - * @function toJSON - * @memberof gamehall.CodeTypeRecord - * @instance - * @returns {Object.} JSON object - */ - CodeTypeRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CodeTypeRecord - * @function getTypeUrl - * @memberof gamehall.CodeTypeRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CodeTypeRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CodeTypeRecord"; - }; - - return CodeTypeRecord; - })(); - - gamehall.SCCodeTypeRecord = (function() { - - /** - * Properties of a SCCodeTypeRecord. - * @memberof gamehall - * @interface ISCCodeTypeRecord - * @property {gamehall.HallOperaCode|null} [ShowType] SCCodeTypeRecord ShowType - * @property {Array.|null} [CodeTypeRecord] SCCodeTypeRecord CodeTypeRecord - */ - - /** - * Constructs a new SCCodeTypeRecord. - * @memberof gamehall - * @classdesc Represents a SCCodeTypeRecord. - * @implements ISCCodeTypeRecord - * @constructor - * @param {gamehall.ISCCodeTypeRecord=} [properties] Properties to set - */ - function SCCodeTypeRecord(properties) { - this.CodeTypeRecord = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCodeTypeRecord ShowType. - * @member {gamehall.HallOperaCode} ShowType - * @memberof gamehall.SCCodeTypeRecord - * @instance - */ - SCCodeTypeRecord.prototype.ShowType = 0; - - /** - * SCCodeTypeRecord CodeTypeRecord. - * @member {Array.} CodeTypeRecord - * @memberof gamehall.SCCodeTypeRecord - * @instance - */ - SCCodeTypeRecord.prototype.CodeTypeRecord = $util.emptyArray; - - /** - * Creates a new SCCodeTypeRecord instance using the specified properties. - * @function create - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {gamehall.ISCCodeTypeRecord=} [properties] Properties to set - * @returns {gamehall.SCCodeTypeRecord} SCCodeTypeRecord instance - */ - SCCodeTypeRecord.create = function create(properties) { - return new SCCodeTypeRecord(properties); - }; - - /** - * Encodes the specified SCCodeTypeRecord message. Does not implicitly {@link gamehall.SCCodeTypeRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {gamehall.ISCCodeTypeRecord} message SCCodeTypeRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCodeTypeRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowType != null && Object.hasOwnProperty.call(message, "ShowType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShowType); - if (message.CodeTypeRecord != null && message.CodeTypeRecord.length) - for (var i = 0; i < message.CodeTypeRecord.length; ++i) - $root.gamehall.CodeTypeRecord.encode(message.CodeTypeRecord[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCCodeTypeRecord message, length delimited. Does not implicitly {@link gamehall.SCCodeTypeRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {gamehall.ISCCodeTypeRecord} message SCCodeTypeRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCodeTypeRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCodeTypeRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCodeTypeRecord} SCCodeTypeRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCodeTypeRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCodeTypeRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowType = reader.int32(); - break; - } - case 2: { - if (!(message.CodeTypeRecord && message.CodeTypeRecord.length)) - message.CodeTypeRecord = []; - message.CodeTypeRecord.push($root.gamehall.CodeTypeRecord.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCodeTypeRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCodeTypeRecord} SCCodeTypeRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCodeTypeRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCodeTypeRecord message. - * @function verify - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCodeTypeRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowType != null && message.hasOwnProperty("ShowType")) - switch (message.ShowType) { - default: - return "ShowType: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 101: - break; - } - if (message.CodeTypeRecord != null && message.hasOwnProperty("CodeTypeRecord")) { - if (!Array.isArray(message.CodeTypeRecord)) - return "CodeTypeRecord: array expected"; - for (var i = 0; i < message.CodeTypeRecord.length; ++i) { - var error = $root.gamehall.CodeTypeRecord.verify(message.CodeTypeRecord[i]); - if (error) - return "CodeTypeRecord." + error; - } - } - return null; - }; - - /** - * Creates a SCCodeTypeRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCodeTypeRecord} SCCodeTypeRecord - */ - SCCodeTypeRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCodeTypeRecord) - return object; - var message = new $root.gamehall.SCCodeTypeRecord(); - switch (object.ShowType) { - default: - if (typeof object.ShowType === "number") { - message.ShowType = object.ShowType; - break; - } - break; - case "HallOperaZero": - case 0: - message.ShowType = 0; - break; - case "HallChessGame": - case 1: - message.ShowType = 1; - break; - case "HallElectronicGame": - case 2: - message.ShowType = 2; - break; - case "HallFishingGame": - case 3: - message.ShowType = 3; - break; - case "HallLiveVideo": - case 4: - message.ShowType = 4; - break; - case "HallLotteryGame": - case 5: - message.ShowType = 5; - break; - case "HallSportsGame": - case 6: - message.ShowType = 6; - break; - case "HallPrivateRoom": - case 7: - message.ShowType = 7; - break; - case "HallClubRoom": - case 8: - message.ShowType = 8; - break; - case "HallThirdPlt": - case 101: - message.ShowType = 101; - break; - } - if (object.CodeTypeRecord) { - if (!Array.isArray(object.CodeTypeRecord)) - throw TypeError(".gamehall.SCCodeTypeRecord.CodeTypeRecord: array expected"); - message.CodeTypeRecord = []; - for (var i = 0; i < object.CodeTypeRecord.length; ++i) { - if (typeof object.CodeTypeRecord[i] !== "object") - throw TypeError(".gamehall.SCCodeTypeRecord.CodeTypeRecord: object expected"); - message.CodeTypeRecord[i] = $root.gamehall.CodeTypeRecord.fromObject(object.CodeTypeRecord[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCCodeTypeRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {gamehall.SCCodeTypeRecord} message SCCodeTypeRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCodeTypeRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.CodeTypeRecord = []; - if (options.defaults) - object.ShowType = options.enums === String ? "HallOperaZero" : 0; - if (message.ShowType != null && message.hasOwnProperty("ShowType")) - object.ShowType = options.enums === String ? $root.gamehall.HallOperaCode[message.ShowType] === undefined ? message.ShowType : $root.gamehall.HallOperaCode[message.ShowType] : message.ShowType; - if (message.CodeTypeRecord && message.CodeTypeRecord.length) { - object.CodeTypeRecord = []; - for (var j = 0; j < message.CodeTypeRecord.length; ++j) - object.CodeTypeRecord[j] = $root.gamehall.CodeTypeRecord.toObject(message.CodeTypeRecord[j], options); - } - return object; - }; - - /** - * Converts this SCCodeTypeRecord to JSON. - * @function toJSON - * @memberof gamehall.SCCodeTypeRecord - * @instance - * @returns {Object.} JSON object - */ - SCCodeTypeRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCodeTypeRecord - * @function getTypeUrl - * @memberof gamehall.SCCodeTypeRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCodeTypeRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCodeTypeRecord"; - }; - - return SCCodeTypeRecord; - })(); - - gamehall.CSBetCoinRecord = (function() { - - /** - * Properties of a CSBetCoinRecord. - * @memberof gamehall - * @interface ICSBetCoinRecord - * @property {gamehall.HallOperaCode|null} [ShowTypeId] CSBetCoinRecord ShowTypeId - * @property {number|Long|null} [TimeIndex] CSBetCoinRecord TimeIndex - * @property {number|null} [PageNo] CSBetCoinRecord PageNo - */ - - /** - * Constructs a new CSBetCoinRecord. - * @memberof gamehall - * @classdesc Represents a CSBetCoinRecord. - * @implements ICSBetCoinRecord - * @constructor - * @param {gamehall.ICSBetCoinRecord=} [properties] Properties to set - */ - function CSBetCoinRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSBetCoinRecord ShowTypeId. - * @member {gamehall.HallOperaCode} ShowTypeId - * @memberof gamehall.CSBetCoinRecord - * @instance - */ - CSBetCoinRecord.prototype.ShowTypeId = 0; - - /** - * CSBetCoinRecord TimeIndex. - * @member {number|Long} TimeIndex - * @memberof gamehall.CSBetCoinRecord - * @instance - */ - CSBetCoinRecord.prototype.TimeIndex = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CSBetCoinRecord PageNo. - * @member {number} PageNo - * @memberof gamehall.CSBetCoinRecord - * @instance - */ - CSBetCoinRecord.prototype.PageNo = 0; - - /** - * Creates a new CSBetCoinRecord instance using the specified properties. - * @function create - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {gamehall.ICSBetCoinRecord=} [properties] Properties to set - * @returns {gamehall.CSBetCoinRecord} CSBetCoinRecord instance - */ - CSBetCoinRecord.create = function create(properties) { - return new CSBetCoinRecord(properties); - }; - - /** - * Encodes the specified CSBetCoinRecord message. Does not implicitly {@link gamehall.CSBetCoinRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {gamehall.ICSBetCoinRecord} message CSBetCoinRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSBetCoinRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowTypeId != null && Object.hasOwnProperty.call(message, "ShowTypeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShowTypeId); - if (message.TimeIndex != null && Object.hasOwnProperty.call(message, "TimeIndex")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.TimeIndex); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.PageNo); - return writer; - }; - - /** - * Encodes the specified CSBetCoinRecord message, length delimited. Does not implicitly {@link gamehall.CSBetCoinRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {gamehall.ICSBetCoinRecord} message CSBetCoinRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSBetCoinRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSBetCoinRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSBetCoinRecord} CSBetCoinRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSBetCoinRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSBetCoinRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowTypeId = reader.int32(); - break; - } - case 2: { - message.TimeIndex = reader.int64(); - break; - } - case 3: { - message.PageNo = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSBetCoinRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSBetCoinRecord} CSBetCoinRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSBetCoinRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSBetCoinRecord message. - * @function verify - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSBetCoinRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowTypeId != null && message.hasOwnProperty("ShowTypeId")) - switch (message.ShowTypeId) { - default: - return "ShowTypeId: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 101: - break; - } - if (message.TimeIndex != null && message.hasOwnProperty("TimeIndex")) - if (!$util.isInteger(message.TimeIndex) && !(message.TimeIndex && $util.isInteger(message.TimeIndex.low) && $util.isInteger(message.TimeIndex.high))) - return "TimeIndex: integer|Long expected"; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - return null; - }; - - /** - * Creates a CSBetCoinRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSBetCoinRecord} CSBetCoinRecord - */ - CSBetCoinRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSBetCoinRecord) - return object; - var message = new $root.gamehall.CSBetCoinRecord(); - switch (object.ShowTypeId) { - default: - if (typeof object.ShowTypeId === "number") { - message.ShowTypeId = object.ShowTypeId; - break; - } - break; - case "HallOperaZero": - case 0: - message.ShowTypeId = 0; - break; - case "HallChessGame": - case 1: - message.ShowTypeId = 1; - break; - case "HallElectronicGame": - case 2: - message.ShowTypeId = 2; - break; - case "HallFishingGame": - case 3: - message.ShowTypeId = 3; - break; - case "HallLiveVideo": - case 4: - message.ShowTypeId = 4; - break; - case "HallLotteryGame": - case 5: - message.ShowTypeId = 5; - break; - case "HallSportsGame": - case 6: - message.ShowTypeId = 6; - break; - case "HallPrivateRoom": - case 7: - message.ShowTypeId = 7; - break; - case "HallClubRoom": - case 8: - message.ShowTypeId = 8; - break; - case "HallThirdPlt": - case 101: - message.ShowTypeId = 101; - break; - } - if (object.TimeIndex != null) - if ($util.Long) - (message.TimeIndex = $util.Long.fromValue(object.TimeIndex)).unsigned = false; - else if (typeof object.TimeIndex === "string") - message.TimeIndex = parseInt(object.TimeIndex, 10); - else if (typeof object.TimeIndex === "number") - message.TimeIndex = object.TimeIndex; - else if (typeof object.TimeIndex === "object") - message.TimeIndex = new $util.LongBits(object.TimeIndex.low >>> 0, object.TimeIndex.high >>> 0).toNumber(); - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - return message; - }; - - /** - * Creates a plain object from a CSBetCoinRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {gamehall.CSBetCoinRecord} message CSBetCoinRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSBetCoinRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ShowTypeId = options.enums === String ? "HallOperaZero" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TimeIndex = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TimeIndex = options.longs === String ? "0" : 0; - object.PageNo = 0; - } - if (message.ShowTypeId != null && message.hasOwnProperty("ShowTypeId")) - object.ShowTypeId = options.enums === String ? $root.gamehall.HallOperaCode[message.ShowTypeId] === undefined ? message.ShowTypeId : $root.gamehall.HallOperaCode[message.ShowTypeId] : message.ShowTypeId; - if (message.TimeIndex != null && message.hasOwnProperty("TimeIndex")) - if (typeof message.TimeIndex === "number") - object.TimeIndex = options.longs === String ? String(message.TimeIndex) : message.TimeIndex; - else - object.TimeIndex = options.longs === String ? $util.Long.prototype.toString.call(message.TimeIndex) : options.longs === Number ? new $util.LongBits(message.TimeIndex.low >>> 0, message.TimeIndex.high >>> 0).toNumber() : message.TimeIndex; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - return object; - }; - - /** - * Converts this CSBetCoinRecord to JSON. - * @function toJSON - * @memberof gamehall.CSBetCoinRecord - * @instance - * @returns {Object.} JSON object - */ - CSBetCoinRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSBetCoinRecord - * @function getTypeUrl - * @memberof gamehall.CSBetCoinRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSBetCoinRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSBetCoinRecord"; - }; - - return CSBetCoinRecord; - })(); - - gamehall.BetCoinRecord = (function() { - - /** - * Properties of a BetCoinRecord. - * @memberof gamehall - * @interface IBetCoinRecord - * @property {number|Long|null} [Ts] BetCoinRecord Ts - * @property {string|null} [GameName] BetCoinRecord GameName - * @property {string|null} [RecordId] BetCoinRecord RecordId - * @property {number|Long|null} [BetCoin] BetCoinRecord BetCoin - * @property {number|Long|null} [ReceivedCoin] BetCoinRecord ReceivedCoin - */ - - /** - * Constructs a new BetCoinRecord. - * @memberof gamehall - * @classdesc 投注记录 - * @implements IBetCoinRecord - * @constructor - * @param {gamehall.IBetCoinRecord=} [properties] Properties to set - */ - function BetCoinRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * BetCoinRecord Ts. - * @member {number|Long} Ts - * @memberof gamehall.BetCoinRecord - * @instance - */ - BetCoinRecord.prototype.Ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * BetCoinRecord GameName. - * @member {string} GameName - * @memberof gamehall.BetCoinRecord - * @instance - */ - BetCoinRecord.prototype.GameName = ""; - - /** - * BetCoinRecord RecordId. - * @member {string} RecordId - * @memberof gamehall.BetCoinRecord - * @instance - */ - BetCoinRecord.prototype.RecordId = ""; - - /** - * BetCoinRecord BetCoin. - * @member {number|Long} BetCoin - * @memberof gamehall.BetCoinRecord - * @instance - */ - BetCoinRecord.prototype.BetCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * BetCoinRecord ReceivedCoin. - * @member {number|Long} ReceivedCoin - * @memberof gamehall.BetCoinRecord - * @instance - */ - BetCoinRecord.prototype.ReceivedCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new BetCoinRecord instance using the specified properties. - * @function create - * @memberof gamehall.BetCoinRecord - * @static - * @param {gamehall.IBetCoinRecord=} [properties] Properties to set - * @returns {gamehall.BetCoinRecord} BetCoinRecord instance - */ - BetCoinRecord.create = function create(properties) { - return new BetCoinRecord(properties); - }; - - /** - * Encodes the specified BetCoinRecord message. Does not implicitly {@link gamehall.BetCoinRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.BetCoinRecord - * @static - * @param {gamehall.IBetCoinRecord} message BetCoinRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BetCoinRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.Ts); - if (message.GameName != null && Object.hasOwnProperty.call(message, "GameName")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.GameName); - if (message.RecordId != null && Object.hasOwnProperty.call(message, "RecordId")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.RecordId); - if (message.BetCoin != null && Object.hasOwnProperty.call(message, "BetCoin")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.BetCoin); - if (message.ReceivedCoin != null && Object.hasOwnProperty.call(message, "ReceivedCoin")) - writer.uint32(/* id 5, wireType 0 =*/40).int64(message.ReceivedCoin); - return writer; - }; - - /** - * Encodes the specified BetCoinRecord message, length delimited. Does not implicitly {@link gamehall.BetCoinRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.BetCoinRecord - * @static - * @param {gamehall.IBetCoinRecord} message BetCoinRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BetCoinRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a BetCoinRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.BetCoinRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.BetCoinRecord} BetCoinRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BetCoinRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.BetCoinRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Ts = reader.int64(); - break; - } - case 2: { - message.GameName = reader.string(); - break; - } - case 3: { - message.RecordId = reader.string(); - break; - } - case 4: { - message.BetCoin = reader.int64(); - break; - } - case 5: { - message.ReceivedCoin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a BetCoinRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.BetCoinRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.BetCoinRecord} BetCoinRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BetCoinRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a BetCoinRecord message. - * @function verify - * @memberof gamehall.BetCoinRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BetCoinRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts) && !(message.Ts && $util.isInteger(message.Ts.low) && $util.isInteger(message.Ts.high))) - return "Ts: integer|Long expected"; - if (message.GameName != null && message.hasOwnProperty("GameName")) - if (!$util.isString(message.GameName)) - return "GameName: string expected"; - if (message.RecordId != null && message.hasOwnProperty("RecordId")) - if (!$util.isString(message.RecordId)) - return "RecordId: string expected"; - if (message.BetCoin != null && message.hasOwnProperty("BetCoin")) - if (!$util.isInteger(message.BetCoin) && !(message.BetCoin && $util.isInteger(message.BetCoin.low) && $util.isInteger(message.BetCoin.high))) - return "BetCoin: integer|Long expected"; - if (message.ReceivedCoin != null && message.hasOwnProperty("ReceivedCoin")) - if (!$util.isInteger(message.ReceivedCoin) && !(message.ReceivedCoin && $util.isInteger(message.ReceivedCoin.low) && $util.isInteger(message.ReceivedCoin.high))) - return "ReceivedCoin: integer|Long expected"; - return null; - }; - - /** - * Creates a BetCoinRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.BetCoinRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.BetCoinRecord} BetCoinRecord - */ - BetCoinRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.BetCoinRecord) - return object; - var message = new $root.gamehall.BetCoinRecord(); - if (object.Ts != null) - if ($util.Long) - (message.Ts = $util.Long.fromValue(object.Ts)).unsigned = false; - else if (typeof object.Ts === "string") - message.Ts = parseInt(object.Ts, 10); - else if (typeof object.Ts === "number") - message.Ts = object.Ts; - else if (typeof object.Ts === "object") - message.Ts = new $util.LongBits(object.Ts.low >>> 0, object.Ts.high >>> 0).toNumber(); - if (object.GameName != null) - message.GameName = String(object.GameName); - if (object.RecordId != null) - message.RecordId = String(object.RecordId); - if (object.BetCoin != null) - if ($util.Long) - (message.BetCoin = $util.Long.fromValue(object.BetCoin)).unsigned = false; - else if (typeof object.BetCoin === "string") - message.BetCoin = parseInt(object.BetCoin, 10); - else if (typeof object.BetCoin === "number") - message.BetCoin = object.BetCoin; - else if (typeof object.BetCoin === "object") - message.BetCoin = new $util.LongBits(object.BetCoin.low >>> 0, object.BetCoin.high >>> 0).toNumber(); - if (object.ReceivedCoin != null) - if ($util.Long) - (message.ReceivedCoin = $util.Long.fromValue(object.ReceivedCoin)).unsigned = false; - else if (typeof object.ReceivedCoin === "string") - message.ReceivedCoin = parseInt(object.ReceivedCoin, 10); - else if (typeof object.ReceivedCoin === "number") - message.ReceivedCoin = object.ReceivedCoin; - else if (typeof object.ReceivedCoin === "object") - message.ReceivedCoin = new $util.LongBits(object.ReceivedCoin.low >>> 0, object.ReceivedCoin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a BetCoinRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.BetCoinRecord - * @static - * @param {gamehall.BetCoinRecord} message BetCoinRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BetCoinRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Ts = options.longs === String ? "0" : 0; - object.GameName = ""; - object.RecordId = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.BetCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.BetCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.ReceivedCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.ReceivedCoin = options.longs === String ? "0" : 0; - } - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (typeof message.Ts === "number") - object.Ts = options.longs === String ? String(message.Ts) : message.Ts; - else - object.Ts = options.longs === String ? $util.Long.prototype.toString.call(message.Ts) : options.longs === Number ? new $util.LongBits(message.Ts.low >>> 0, message.Ts.high >>> 0).toNumber() : message.Ts; - if (message.GameName != null && message.hasOwnProperty("GameName")) - object.GameName = message.GameName; - if (message.RecordId != null && message.hasOwnProperty("RecordId")) - object.RecordId = message.RecordId; - if (message.BetCoin != null && message.hasOwnProperty("BetCoin")) - if (typeof message.BetCoin === "number") - object.BetCoin = options.longs === String ? String(message.BetCoin) : message.BetCoin; - else - object.BetCoin = options.longs === String ? $util.Long.prototype.toString.call(message.BetCoin) : options.longs === Number ? new $util.LongBits(message.BetCoin.low >>> 0, message.BetCoin.high >>> 0).toNumber() : message.BetCoin; - if (message.ReceivedCoin != null && message.hasOwnProperty("ReceivedCoin")) - if (typeof message.ReceivedCoin === "number") - object.ReceivedCoin = options.longs === String ? String(message.ReceivedCoin) : message.ReceivedCoin; - else - object.ReceivedCoin = options.longs === String ? $util.Long.prototype.toString.call(message.ReceivedCoin) : options.longs === Number ? new $util.LongBits(message.ReceivedCoin.low >>> 0, message.ReceivedCoin.high >>> 0).toNumber() : message.ReceivedCoin; - return object; - }; - - /** - * Converts this BetCoinRecord to JSON. - * @function toJSON - * @memberof gamehall.BetCoinRecord - * @instance - * @returns {Object.} JSON object - */ - BetCoinRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for BetCoinRecord - * @function getTypeUrl - * @memberof gamehall.BetCoinRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - BetCoinRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.BetCoinRecord"; - }; - - return BetCoinRecord; - })(); - - gamehall.SCBetCoinRecord = (function() { - - /** - * Properties of a SCBetCoinRecord. - * @memberof gamehall - * @interface ISCBetCoinRecord - * @property {Array.|null} [BetCoinRecord] SCBetCoinRecord BetCoinRecord - * @property {number|null} [PageNo] SCBetCoinRecord PageNo - * @property {number|null} [PageSize] SCBetCoinRecord PageSize - * @property {number|null} [PageNum] SCBetCoinRecord PageNum - */ - - /** - * Constructs a new SCBetCoinRecord. - * @memberof gamehall - * @classdesc Represents a SCBetCoinRecord. - * @implements ISCBetCoinRecord - * @constructor - * @param {gamehall.ISCBetCoinRecord=} [properties] Properties to set - */ - function SCBetCoinRecord(properties) { - this.BetCoinRecord = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCBetCoinRecord BetCoinRecord. - * @member {Array.} BetCoinRecord - * @memberof gamehall.SCBetCoinRecord - * @instance - */ - SCBetCoinRecord.prototype.BetCoinRecord = $util.emptyArray; - - /** - * SCBetCoinRecord PageNo. - * @member {number} PageNo - * @memberof gamehall.SCBetCoinRecord - * @instance - */ - SCBetCoinRecord.prototype.PageNo = 0; - - /** - * SCBetCoinRecord PageSize. - * @member {number} PageSize - * @memberof gamehall.SCBetCoinRecord - * @instance - */ - SCBetCoinRecord.prototype.PageSize = 0; - - /** - * SCBetCoinRecord PageNum. - * @member {number} PageNum - * @memberof gamehall.SCBetCoinRecord - * @instance - */ - SCBetCoinRecord.prototype.PageNum = 0; - - /** - * Creates a new SCBetCoinRecord instance using the specified properties. - * @function create - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {gamehall.ISCBetCoinRecord=} [properties] Properties to set - * @returns {gamehall.SCBetCoinRecord} SCBetCoinRecord instance - */ - SCBetCoinRecord.create = function create(properties) { - return new SCBetCoinRecord(properties); - }; - - /** - * Encodes the specified SCBetCoinRecord message. Does not implicitly {@link gamehall.SCBetCoinRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {gamehall.ISCBetCoinRecord} message SCBetCoinRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCBetCoinRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.BetCoinRecord != null && message.BetCoinRecord.length) - for (var i = 0; i < message.BetCoinRecord.length; ++i) - $root.gamehall.BetCoinRecord.encode(message.BetCoinRecord[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.PageNo); - if (message.PageSize != null && Object.hasOwnProperty.call(message, "PageSize")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.PageSize); - if (message.PageNum != null && Object.hasOwnProperty.call(message, "PageNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.PageNum); - return writer; - }; - - /** - * Encodes the specified SCBetCoinRecord message, length delimited. Does not implicitly {@link gamehall.SCBetCoinRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {gamehall.ISCBetCoinRecord} message SCBetCoinRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCBetCoinRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCBetCoinRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCBetCoinRecord} SCBetCoinRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCBetCoinRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCBetCoinRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.BetCoinRecord && message.BetCoinRecord.length)) - message.BetCoinRecord = []; - message.BetCoinRecord.push($root.gamehall.BetCoinRecord.decode(reader, reader.uint32())); - break; - } - case 2: { - message.PageNo = reader.int32(); - break; - } - case 3: { - message.PageSize = reader.int32(); - break; - } - case 4: { - message.PageNum = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCBetCoinRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCBetCoinRecord} SCBetCoinRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCBetCoinRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCBetCoinRecord message. - * @function verify - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCBetCoinRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.BetCoinRecord != null && message.hasOwnProperty("BetCoinRecord")) { - if (!Array.isArray(message.BetCoinRecord)) - return "BetCoinRecord: array expected"; - for (var i = 0; i < message.BetCoinRecord.length; ++i) { - var error = $root.gamehall.BetCoinRecord.verify(message.BetCoinRecord[i]); - if (error) - return "BetCoinRecord." + error; - } - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - if (!$util.isInteger(message.PageSize)) - return "PageSize: integer expected"; - if (message.PageNum != null && message.hasOwnProperty("PageNum")) - if (!$util.isInteger(message.PageNum)) - return "PageNum: integer expected"; - return null; - }; - - /** - * Creates a SCBetCoinRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCBetCoinRecord} SCBetCoinRecord - */ - SCBetCoinRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCBetCoinRecord) - return object; - var message = new $root.gamehall.SCBetCoinRecord(); - if (object.BetCoinRecord) { - if (!Array.isArray(object.BetCoinRecord)) - throw TypeError(".gamehall.SCBetCoinRecord.BetCoinRecord: array expected"); - message.BetCoinRecord = []; - for (var i = 0; i < object.BetCoinRecord.length; ++i) { - if (typeof object.BetCoinRecord[i] !== "object") - throw TypeError(".gamehall.SCBetCoinRecord.BetCoinRecord: object expected"); - message.BetCoinRecord[i] = $root.gamehall.BetCoinRecord.fromObject(object.BetCoinRecord[i]); - } - } - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - if (object.PageSize != null) - message.PageSize = object.PageSize | 0; - if (object.PageNum != null) - message.PageNum = object.PageNum | 0; - return message; - }; - - /** - * Creates a plain object from a SCBetCoinRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {gamehall.SCBetCoinRecord} message SCBetCoinRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCBetCoinRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.BetCoinRecord = []; - if (options.defaults) { - object.PageNo = 0; - object.PageSize = 0; - object.PageNum = 0; - } - if (message.BetCoinRecord && message.BetCoinRecord.length) { - object.BetCoinRecord = []; - for (var j = 0; j < message.BetCoinRecord.length; ++j) - object.BetCoinRecord[j] = $root.gamehall.BetCoinRecord.toObject(message.BetCoinRecord[j], options); - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - object.PageSize = message.PageSize; - if (message.PageNum != null && message.hasOwnProperty("PageNum")) - object.PageNum = message.PageNum; - return object; - }; - - /** - * Converts this SCBetCoinRecord to JSON. - * @function toJSON - * @memberof gamehall.SCBetCoinRecord - * @instance - * @returns {Object.} JSON object - */ - SCBetCoinRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCBetCoinRecord - * @function getTypeUrl - * @memberof gamehall.SCBetCoinRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCBetCoinRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCBetCoinRecord"; - }; - - return SCBetCoinRecord; - })(); - - gamehall.CSCoinDetailed = (function() { - - /** - * Properties of a CSCoinDetailed. - * @memberof gamehall - * @interface ICSCoinDetailed - * @property {number|Long|null} [TimeIndex] CSCoinDetailed TimeIndex - * @property {number|Long|null} [CoinType] CSCoinDetailed CoinType - * @property {number|null} [PageNo] CSCoinDetailed PageNo - */ - - /** - * Constructs a new CSCoinDetailed. - * @memberof gamehall - * @classdesc Represents a CSCoinDetailed. - * @implements ICSCoinDetailed - * @constructor - * @param {gamehall.ICSCoinDetailed=} [properties] Properties to set - */ - function CSCoinDetailed(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSCoinDetailed TimeIndex. - * @member {number|Long} TimeIndex - * @memberof gamehall.CSCoinDetailed - * @instance - */ - CSCoinDetailed.prototype.TimeIndex = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CSCoinDetailed CoinType. - * @member {number|Long} CoinType - * @memberof gamehall.CSCoinDetailed - * @instance - */ - CSCoinDetailed.prototype.CoinType = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CSCoinDetailed PageNo. - * @member {number} PageNo - * @memberof gamehall.CSCoinDetailed - * @instance - */ - CSCoinDetailed.prototype.PageNo = 0; - - /** - * Creates a new CSCoinDetailed instance using the specified properties. - * @function create - * @memberof gamehall.CSCoinDetailed - * @static - * @param {gamehall.ICSCoinDetailed=} [properties] Properties to set - * @returns {gamehall.CSCoinDetailed} CSCoinDetailed instance - */ - CSCoinDetailed.create = function create(properties) { - return new CSCoinDetailed(properties); - }; - - /** - * Encodes the specified CSCoinDetailed message. Does not implicitly {@link gamehall.CSCoinDetailed.verify|verify} messages. - * @function encode - * @memberof gamehall.CSCoinDetailed - * @static - * @param {gamehall.ICSCoinDetailed} message CSCoinDetailed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinDetailed.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.TimeIndex != null && Object.hasOwnProperty.call(message, "TimeIndex")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.TimeIndex); - if (message.CoinType != null && Object.hasOwnProperty.call(message, "CoinType")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.CoinType); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.PageNo); - return writer; - }; - - /** - * Encodes the specified CSCoinDetailed message, length delimited. Does not implicitly {@link gamehall.CSCoinDetailed.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSCoinDetailed - * @static - * @param {gamehall.ICSCoinDetailed} message CSCoinDetailed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSCoinDetailed.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSCoinDetailed message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSCoinDetailed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSCoinDetailed} CSCoinDetailed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinDetailed.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSCoinDetailed(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.TimeIndex = reader.int64(); - break; - } - case 2: { - message.CoinType = reader.int64(); - break; - } - case 3: { - message.PageNo = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSCoinDetailed message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSCoinDetailed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSCoinDetailed} CSCoinDetailed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSCoinDetailed.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSCoinDetailed message. - * @function verify - * @memberof gamehall.CSCoinDetailed - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSCoinDetailed.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.TimeIndex != null && message.hasOwnProperty("TimeIndex")) - if (!$util.isInteger(message.TimeIndex) && !(message.TimeIndex && $util.isInteger(message.TimeIndex.low) && $util.isInteger(message.TimeIndex.high))) - return "TimeIndex: integer|Long expected"; - if (message.CoinType != null && message.hasOwnProperty("CoinType")) - if (!$util.isInteger(message.CoinType) && !(message.CoinType && $util.isInteger(message.CoinType.low) && $util.isInteger(message.CoinType.high))) - return "CoinType: integer|Long expected"; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - return null; - }; - - /** - * Creates a CSCoinDetailed message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSCoinDetailed - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSCoinDetailed} CSCoinDetailed - */ - CSCoinDetailed.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSCoinDetailed) - return object; - var message = new $root.gamehall.CSCoinDetailed(); - if (object.TimeIndex != null) - if ($util.Long) - (message.TimeIndex = $util.Long.fromValue(object.TimeIndex)).unsigned = false; - else if (typeof object.TimeIndex === "string") - message.TimeIndex = parseInt(object.TimeIndex, 10); - else if (typeof object.TimeIndex === "number") - message.TimeIndex = object.TimeIndex; - else if (typeof object.TimeIndex === "object") - message.TimeIndex = new $util.LongBits(object.TimeIndex.low >>> 0, object.TimeIndex.high >>> 0).toNumber(); - if (object.CoinType != null) - if ($util.Long) - (message.CoinType = $util.Long.fromValue(object.CoinType)).unsigned = false; - else if (typeof object.CoinType === "string") - message.CoinType = parseInt(object.CoinType, 10); - else if (typeof object.CoinType === "number") - message.CoinType = object.CoinType; - else if (typeof object.CoinType === "object") - message.CoinType = new $util.LongBits(object.CoinType.low >>> 0, object.CoinType.high >>> 0).toNumber(); - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - return message; - }; - - /** - * Creates a plain object from a CSCoinDetailed message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSCoinDetailed - * @static - * @param {gamehall.CSCoinDetailed} message CSCoinDetailed - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSCoinDetailed.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TimeIndex = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TimeIndex = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.CoinType = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.CoinType = options.longs === String ? "0" : 0; - object.PageNo = 0; - } - if (message.TimeIndex != null && message.hasOwnProperty("TimeIndex")) - if (typeof message.TimeIndex === "number") - object.TimeIndex = options.longs === String ? String(message.TimeIndex) : message.TimeIndex; - else - object.TimeIndex = options.longs === String ? $util.Long.prototype.toString.call(message.TimeIndex) : options.longs === Number ? new $util.LongBits(message.TimeIndex.low >>> 0, message.TimeIndex.high >>> 0).toNumber() : message.TimeIndex; - if (message.CoinType != null && message.hasOwnProperty("CoinType")) - if (typeof message.CoinType === "number") - object.CoinType = options.longs === String ? String(message.CoinType) : message.CoinType; - else - object.CoinType = options.longs === String ? $util.Long.prototype.toString.call(message.CoinType) : options.longs === Number ? new $util.LongBits(message.CoinType.low >>> 0, message.CoinType.high >>> 0).toNumber() : message.CoinType; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - return object; - }; - - /** - * Converts this CSCoinDetailed to JSON. - * @function toJSON - * @memberof gamehall.CSCoinDetailed - * @instance - * @returns {Object.} JSON object - */ - CSCoinDetailed.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSCoinDetailed - * @function getTypeUrl - * @memberof gamehall.CSCoinDetailed - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSCoinDetailed.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSCoinDetailed"; - }; - - return CSCoinDetailed; - })(); - - gamehall.CoinDetailed = (function() { - - /** - * Properties of a CoinDetailed. - * @memberof gamehall - * @interface ICoinDetailed - * @property {number|Long|null} [Ts] CoinDetailed Ts - * @property {number|Long|null} [CoinType] CoinDetailed CoinType - * @property {number|Long|null} [Income] CoinDetailed Income - * @property {number|Long|null} [Disburse] CoinDetailed Disburse - * @property {number|Long|null} [Coin] CoinDetailed Coin - */ - - /** - * Constructs a new CoinDetailed. - * @memberof gamehall - * @classdesc 账户明细 - * @implements ICoinDetailed - * @constructor - * @param {gamehall.ICoinDetailed=} [properties] Properties to set - */ - function CoinDetailed(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CoinDetailed Ts. - * @member {number|Long} Ts - * @memberof gamehall.CoinDetailed - * @instance - */ - CoinDetailed.prototype.Ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CoinDetailed CoinType. - * @member {number|Long} CoinType - * @memberof gamehall.CoinDetailed - * @instance - */ - CoinDetailed.prototype.CoinType = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CoinDetailed Income. - * @member {number|Long} Income - * @memberof gamehall.CoinDetailed - * @instance - */ - CoinDetailed.prototype.Income = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CoinDetailed Disburse. - * @member {number|Long} Disburse - * @memberof gamehall.CoinDetailed - * @instance - */ - CoinDetailed.prototype.Disburse = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * CoinDetailed Coin. - * @member {number|Long} Coin - * @memberof gamehall.CoinDetailed - * @instance - */ - CoinDetailed.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new CoinDetailed instance using the specified properties. - * @function create - * @memberof gamehall.CoinDetailed - * @static - * @param {gamehall.ICoinDetailed=} [properties] Properties to set - * @returns {gamehall.CoinDetailed} CoinDetailed instance - */ - CoinDetailed.create = function create(properties) { - return new CoinDetailed(properties); - }; - - /** - * Encodes the specified CoinDetailed message. Does not implicitly {@link gamehall.CoinDetailed.verify|verify} messages. - * @function encode - * @memberof gamehall.CoinDetailed - * @static - * @param {gamehall.ICoinDetailed} message CoinDetailed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CoinDetailed.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.Ts); - if (message.CoinType != null && Object.hasOwnProperty.call(message, "CoinType")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.CoinType); - if (message.Income != null && Object.hasOwnProperty.call(message, "Income")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Income); - if (message.Disburse != null && Object.hasOwnProperty.call(message, "Disburse")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.Disburse); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 5, wireType 0 =*/40).int64(message.Coin); - return writer; - }; - - /** - * Encodes the specified CoinDetailed message, length delimited. Does not implicitly {@link gamehall.CoinDetailed.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CoinDetailed - * @static - * @param {gamehall.ICoinDetailed} message CoinDetailed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CoinDetailed.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CoinDetailed message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CoinDetailed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CoinDetailed} CoinDetailed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CoinDetailed.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CoinDetailed(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Ts = reader.int64(); - break; - } - case 2: { - message.CoinType = reader.int64(); - break; - } - case 3: { - message.Income = reader.int64(); - break; - } - case 4: { - message.Disburse = reader.int64(); - break; - } - case 5: { - message.Coin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CoinDetailed message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CoinDetailed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CoinDetailed} CoinDetailed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CoinDetailed.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CoinDetailed message. - * @function verify - * @memberof gamehall.CoinDetailed - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CoinDetailed.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts) && !(message.Ts && $util.isInteger(message.Ts.low) && $util.isInteger(message.Ts.high))) - return "Ts: integer|Long expected"; - if (message.CoinType != null && message.hasOwnProperty("CoinType")) - if (!$util.isInteger(message.CoinType) && !(message.CoinType && $util.isInteger(message.CoinType.low) && $util.isInteger(message.CoinType.high))) - return "CoinType: integer|Long expected"; - if (message.Income != null && message.hasOwnProperty("Income")) - if (!$util.isInteger(message.Income) && !(message.Income && $util.isInteger(message.Income.low) && $util.isInteger(message.Income.high))) - return "Income: integer|Long expected"; - if (message.Disburse != null && message.hasOwnProperty("Disburse")) - if (!$util.isInteger(message.Disburse) && !(message.Disburse && $util.isInteger(message.Disburse.low) && $util.isInteger(message.Disburse.high))) - return "Disburse: integer|Long expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - return null; - }; - - /** - * Creates a CoinDetailed message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CoinDetailed - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CoinDetailed} CoinDetailed - */ - CoinDetailed.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CoinDetailed) - return object; - var message = new $root.gamehall.CoinDetailed(); - if (object.Ts != null) - if ($util.Long) - (message.Ts = $util.Long.fromValue(object.Ts)).unsigned = false; - else if (typeof object.Ts === "string") - message.Ts = parseInt(object.Ts, 10); - else if (typeof object.Ts === "number") - message.Ts = object.Ts; - else if (typeof object.Ts === "object") - message.Ts = new $util.LongBits(object.Ts.low >>> 0, object.Ts.high >>> 0).toNumber(); - if (object.CoinType != null) - if ($util.Long) - (message.CoinType = $util.Long.fromValue(object.CoinType)).unsigned = false; - else if (typeof object.CoinType === "string") - message.CoinType = parseInt(object.CoinType, 10); - else if (typeof object.CoinType === "number") - message.CoinType = object.CoinType; - else if (typeof object.CoinType === "object") - message.CoinType = new $util.LongBits(object.CoinType.low >>> 0, object.CoinType.high >>> 0).toNumber(); - if (object.Income != null) - if ($util.Long) - (message.Income = $util.Long.fromValue(object.Income)).unsigned = false; - else if (typeof object.Income === "string") - message.Income = parseInt(object.Income, 10); - else if (typeof object.Income === "number") - message.Income = object.Income; - else if (typeof object.Income === "object") - message.Income = new $util.LongBits(object.Income.low >>> 0, object.Income.high >>> 0).toNumber(); - if (object.Disburse != null) - if ($util.Long) - (message.Disburse = $util.Long.fromValue(object.Disburse)).unsigned = false; - else if (typeof object.Disburse === "string") - message.Disburse = parseInt(object.Disburse, 10); - else if (typeof object.Disburse === "number") - message.Disburse = object.Disburse; - else if (typeof object.Disburse === "object") - message.Disburse = new $util.LongBits(object.Disburse.low >>> 0, object.Disburse.high >>> 0).toNumber(); - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a CoinDetailed message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CoinDetailed - * @static - * @param {gamehall.CoinDetailed} message CoinDetailed - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CoinDetailed.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Ts = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.CoinType = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.CoinType = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Income = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Income = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Disburse = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Disburse = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - } - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (typeof message.Ts === "number") - object.Ts = options.longs === String ? String(message.Ts) : message.Ts; - else - object.Ts = options.longs === String ? $util.Long.prototype.toString.call(message.Ts) : options.longs === Number ? new $util.LongBits(message.Ts.low >>> 0, message.Ts.high >>> 0).toNumber() : message.Ts; - if (message.CoinType != null && message.hasOwnProperty("CoinType")) - if (typeof message.CoinType === "number") - object.CoinType = options.longs === String ? String(message.CoinType) : message.CoinType; - else - object.CoinType = options.longs === String ? $util.Long.prototype.toString.call(message.CoinType) : options.longs === Number ? new $util.LongBits(message.CoinType.low >>> 0, message.CoinType.high >>> 0).toNumber() : message.CoinType; - if (message.Income != null && message.hasOwnProperty("Income")) - if (typeof message.Income === "number") - object.Income = options.longs === String ? String(message.Income) : message.Income; - else - object.Income = options.longs === String ? $util.Long.prototype.toString.call(message.Income) : options.longs === Number ? new $util.LongBits(message.Income.low >>> 0, message.Income.high >>> 0).toNumber() : message.Income; - if (message.Disburse != null && message.hasOwnProperty("Disburse")) - if (typeof message.Disburse === "number") - object.Disburse = options.longs === String ? String(message.Disburse) : message.Disburse; - else - object.Disburse = options.longs === String ? $util.Long.prototype.toString.call(message.Disburse) : options.longs === Number ? new $util.LongBits(message.Disburse.low >>> 0, message.Disburse.high >>> 0).toNumber() : message.Disburse; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - return object; - }; - - /** - * Converts this CoinDetailed to JSON. - * @function toJSON - * @memberof gamehall.CoinDetailed - * @instance - * @returns {Object.} JSON object - */ - CoinDetailed.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CoinDetailed - * @function getTypeUrl - * @memberof gamehall.CoinDetailed - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CoinDetailed.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CoinDetailed"; - }; - - return CoinDetailed; - })(); - - gamehall.SCCoinDetailedTotal = (function() { - - /** - * Properties of a SCCoinDetailedTotal. - * @memberof gamehall - * @interface ISCCoinDetailedTotal - * @property {Array.|null} [CoinDetailed] SCCoinDetailedTotal CoinDetailed - * @property {number|null} [PageNo] SCCoinDetailedTotal PageNo - * @property {number|null} [PageSize] SCCoinDetailedTotal PageSize - * @property {number|null} [PageNum] SCCoinDetailedTotal PageNum - */ - - /** - * Constructs a new SCCoinDetailedTotal. - * @memberof gamehall - * @classdesc Represents a SCCoinDetailedTotal. - * @implements ISCCoinDetailedTotal - * @constructor - * @param {gamehall.ISCCoinDetailedTotal=} [properties] Properties to set - */ - function SCCoinDetailedTotal(properties) { - this.CoinDetailed = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCoinDetailedTotal CoinDetailed. - * @member {Array.} CoinDetailed - * @memberof gamehall.SCCoinDetailedTotal - * @instance - */ - SCCoinDetailedTotal.prototype.CoinDetailed = $util.emptyArray; - - /** - * SCCoinDetailedTotal PageNo. - * @member {number} PageNo - * @memberof gamehall.SCCoinDetailedTotal - * @instance - */ - SCCoinDetailedTotal.prototype.PageNo = 0; - - /** - * SCCoinDetailedTotal PageSize. - * @member {number} PageSize - * @memberof gamehall.SCCoinDetailedTotal - * @instance - */ - SCCoinDetailedTotal.prototype.PageSize = 0; - - /** - * SCCoinDetailedTotal PageNum. - * @member {number} PageNum - * @memberof gamehall.SCCoinDetailedTotal - * @instance - */ - SCCoinDetailedTotal.prototype.PageNum = 0; - - /** - * Creates a new SCCoinDetailedTotal instance using the specified properties. - * @function create - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {gamehall.ISCCoinDetailedTotal=} [properties] Properties to set - * @returns {gamehall.SCCoinDetailedTotal} SCCoinDetailedTotal instance - */ - SCCoinDetailedTotal.create = function create(properties) { - return new SCCoinDetailedTotal(properties); - }; - - /** - * Encodes the specified SCCoinDetailedTotal message. Does not implicitly {@link gamehall.SCCoinDetailedTotal.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {gamehall.ISCCoinDetailedTotal} message SCCoinDetailedTotal message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinDetailedTotal.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.CoinDetailed != null && message.CoinDetailed.length) - for (var i = 0; i < message.CoinDetailed.length; ++i) - $root.gamehall.CoinDetailed.encode(message.CoinDetailed[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.PageNo); - if (message.PageSize != null && Object.hasOwnProperty.call(message, "PageSize")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.PageSize); - if (message.PageNum != null && Object.hasOwnProperty.call(message, "PageNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.PageNum); - return writer; - }; - - /** - * Encodes the specified SCCoinDetailedTotal message, length delimited. Does not implicitly {@link gamehall.SCCoinDetailedTotal.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {gamehall.ISCCoinDetailedTotal} message SCCoinDetailedTotal message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinDetailedTotal.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCoinDetailedTotal message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCoinDetailedTotal} SCCoinDetailedTotal - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinDetailedTotal.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCoinDetailedTotal(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.CoinDetailed && message.CoinDetailed.length)) - message.CoinDetailed = []; - message.CoinDetailed.push($root.gamehall.CoinDetailed.decode(reader, reader.uint32())); - break; - } - case 2: { - message.PageNo = reader.int32(); - break; - } - case 3: { - message.PageSize = reader.int32(); - break; - } - case 4: { - message.PageNum = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCoinDetailedTotal message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCoinDetailedTotal} SCCoinDetailedTotal - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinDetailedTotal.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCoinDetailedTotal message. - * @function verify - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCoinDetailedTotal.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.CoinDetailed != null && message.hasOwnProperty("CoinDetailed")) { - if (!Array.isArray(message.CoinDetailed)) - return "CoinDetailed: array expected"; - for (var i = 0; i < message.CoinDetailed.length; ++i) { - var error = $root.gamehall.CoinDetailed.verify(message.CoinDetailed[i]); - if (error) - return "CoinDetailed." + error; - } - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - if (!$util.isInteger(message.PageSize)) - return "PageSize: integer expected"; - if (message.PageNum != null && message.hasOwnProperty("PageNum")) - if (!$util.isInteger(message.PageNum)) - return "PageNum: integer expected"; - return null; - }; - - /** - * Creates a SCCoinDetailedTotal message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCoinDetailedTotal} SCCoinDetailedTotal - */ - SCCoinDetailedTotal.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCoinDetailedTotal) - return object; - var message = new $root.gamehall.SCCoinDetailedTotal(); - if (object.CoinDetailed) { - if (!Array.isArray(object.CoinDetailed)) - throw TypeError(".gamehall.SCCoinDetailedTotal.CoinDetailed: array expected"); - message.CoinDetailed = []; - for (var i = 0; i < object.CoinDetailed.length; ++i) { - if (typeof object.CoinDetailed[i] !== "object") - throw TypeError(".gamehall.SCCoinDetailedTotal.CoinDetailed: object expected"); - message.CoinDetailed[i] = $root.gamehall.CoinDetailed.fromObject(object.CoinDetailed[i]); - } - } - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - if (object.PageSize != null) - message.PageSize = object.PageSize | 0; - if (object.PageNum != null) - message.PageNum = object.PageNum | 0; - return message; - }; - - /** - * Creates a plain object from a SCCoinDetailedTotal message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {gamehall.SCCoinDetailedTotal} message SCCoinDetailedTotal - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCoinDetailedTotal.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.CoinDetailed = []; - if (options.defaults) { - object.PageNo = 0; - object.PageSize = 0; - object.PageNum = 0; - } - if (message.CoinDetailed && message.CoinDetailed.length) { - object.CoinDetailed = []; - for (var j = 0; j < message.CoinDetailed.length; ++j) - object.CoinDetailed[j] = $root.gamehall.CoinDetailed.toObject(message.CoinDetailed[j], options); - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - object.PageSize = message.PageSize; - if (message.PageNum != null && message.hasOwnProperty("PageNum")) - object.PageNum = message.PageNum; - return object; - }; - - /** - * Converts this SCCoinDetailedTotal to JSON. - * @function toJSON - * @memberof gamehall.SCCoinDetailedTotal - * @instance - * @returns {Object.} JSON object - */ - SCCoinDetailedTotal.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCoinDetailedTotal - * @function getTypeUrl - * @memberof gamehall.SCCoinDetailedTotal - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCoinDetailedTotal.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCoinDetailedTotal"; - }; - - return SCCoinDetailedTotal; - })(); - - gamehall.SCCoinTotal = (function() { - - /** - * Properties of a SCCoinTotal. - * @memberof gamehall - * @interface ISCCoinTotal - * @property {number|Long|null} [RechargeCoin] SCCoinTotal RechargeCoin - * @property {number|Long|null} [ExchangeCoin] SCCoinTotal ExchangeCoin - * @property {number|Long|null} [ClubAddCoin] SCCoinTotal ClubAddCoin - * @property {number|Long|null} [RebateCoin] SCCoinTotal RebateCoin - * @property {number|Long|null} [Activity] SCCoinTotal Activity - * @property {Array.|null} [TransactionType] SCCoinTotal TransactionType - */ - - /** - * Constructs a new SCCoinTotal. - * @memberof gamehall - * @classdesc Represents a SCCoinTotal. - * @implements ISCCoinTotal - * @constructor - * @param {gamehall.ISCCoinTotal=} [properties] Properties to set - */ - function SCCoinTotal(properties) { - this.TransactionType = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCCoinTotal RechargeCoin. - * @member {number|Long} RechargeCoin - * @memberof gamehall.SCCoinTotal - * @instance - */ - SCCoinTotal.prototype.RechargeCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCCoinTotal ExchangeCoin. - * @member {number|Long} ExchangeCoin - * @memberof gamehall.SCCoinTotal - * @instance - */ - SCCoinTotal.prototype.ExchangeCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCCoinTotal ClubAddCoin. - * @member {number|Long} ClubAddCoin - * @memberof gamehall.SCCoinTotal - * @instance - */ - SCCoinTotal.prototype.ClubAddCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCCoinTotal RebateCoin. - * @member {number|Long} RebateCoin - * @memberof gamehall.SCCoinTotal - * @instance - */ - SCCoinTotal.prototype.RebateCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCCoinTotal Activity. - * @member {number|Long} Activity - * @memberof gamehall.SCCoinTotal - * @instance - */ - SCCoinTotal.prototype.Activity = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCCoinTotal TransactionType. - * @member {Array.} TransactionType - * @memberof gamehall.SCCoinTotal - * @instance - */ - SCCoinTotal.prototype.TransactionType = $util.emptyArray; - - /** - * Creates a new SCCoinTotal instance using the specified properties. - * @function create - * @memberof gamehall.SCCoinTotal - * @static - * @param {gamehall.ISCCoinTotal=} [properties] Properties to set - * @returns {gamehall.SCCoinTotal} SCCoinTotal instance - */ - SCCoinTotal.create = function create(properties) { - return new SCCoinTotal(properties); - }; - - /** - * Encodes the specified SCCoinTotal message. Does not implicitly {@link gamehall.SCCoinTotal.verify|verify} messages. - * @function encode - * @memberof gamehall.SCCoinTotal - * @static - * @param {gamehall.ISCCoinTotal} message SCCoinTotal message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinTotal.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.RechargeCoin != null && Object.hasOwnProperty.call(message, "RechargeCoin")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.RechargeCoin); - if (message.ExchangeCoin != null && Object.hasOwnProperty.call(message, "ExchangeCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.ExchangeCoin); - if (message.ClubAddCoin != null && Object.hasOwnProperty.call(message, "ClubAddCoin")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.ClubAddCoin); - if (message.RebateCoin != null && Object.hasOwnProperty.call(message, "RebateCoin")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.RebateCoin); - if (message.Activity != null && Object.hasOwnProperty.call(message, "Activity")) - writer.uint32(/* id 5, wireType 0 =*/40).int64(message.Activity); - if (message.TransactionType != null && message.TransactionType.length) { - writer.uint32(/* id 6, wireType 2 =*/50).fork(); - for (var i = 0; i < message.TransactionType.length; ++i) - writer.int32(message.TransactionType[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCCoinTotal message, length delimited. Does not implicitly {@link gamehall.SCCoinTotal.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCCoinTotal - * @static - * @param {gamehall.ISCCoinTotal} message SCCoinTotal message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCCoinTotal.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCCoinTotal message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCCoinTotal - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCCoinTotal} SCCoinTotal - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinTotal.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCCoinTotal(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.RechargeCoin = reader.int64(); - break; - } - case 2: { - message.ExchangeCoin = reader.int64(); - break; - } - case 3: { - message.ClubAddCoin = reader.int64(); - break; - } - case 4: { - message.RebateCoin = reader.int64(); - break; - } - case 5: { - message.Activity = reader.int64(); - break; - } - case 6: { - if (!(message.TransactionType && message.TransactionType.length)) - message.TransactionType = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.TransactionType.push(reader.int32()); - } else - message.TransactionType.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCCoinTotal message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCCoinTotal - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCCoinTotal} SCCoinTotal - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCCoinTotal.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCCoinTotal message. - * @function verify - * @memberof gamehall.SCCoinTotal - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCCoinTotal.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.RechargeCoin != null && message.hasOwnProperty("RechargeCoin")) - if (!$util.isInteger(message.RechargeCoin) && !(message.RechargeCoin && $util.isInteger(message.RechargeCoin.low) && $util.isInteger(message.RechargeCoin.high))) - return "RechargeCoin: integer|Long expected"; - if (message.ExchangeCoin != null && message.hasOwnProperty("ExchangeCoin")) - if (!$util.isInteger(message.ExchangeCoin) && !(message.ExchangeCoin && $util.isInteger(message.ExchangeCoin.low) && $util.isInteger(message.ExchangeCoin.high))) - return "ExchangeCoin: integer|Long expected"; - if (message.ClubAddCoin != null && message.hasOwnProperty("ClubAddCoin")) - if (!$util.isInteger(message.ClubAddCoin) && !(message.ClubAddCoin && $util.isInteger(message.ClubAddCoin.low) && $util.isInteger(message.ClubAddCoin.high))) - return "ClubAddCoin: integer|Long expected"; - if (message.RebateCoin != null && message.hasOwnProperty("RebateCoin")) - if (!$util.isInteger(message.RebateCoin) && !(message.RebateCoin && $util.isInteger(message.RebateCoin.low) && $util.isInteger(message.RebateCoin.high))) - return "RebateCoin: integer|Long expected"; - if (message.Activity != null && message.hasOwnProperty("Activity")) - if (!$util.isInteger(message.Activity) && !(message.Activity && $util.isInteger(message.Activity.low) && $util.isInteger(message.Activity.high))) - return "Activity: integer|Long expected"; - if (message.TransactionType != null && message.hasOwnProperty("TransactionType")) { - if (!Array.isArray(message.TransactionType)) - return "TransactionType: array expected"; - for (var i = 0; i < message.TransactionType.length; ++i) - if (!$util.isInteger(message.TransactionType[i])) - return "TransactionType: integer[] expected"; - } - return null; - }; - - /** - * Creates a SCCoinTotal message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCCoinTotal - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCCoinTotal} SCCoinTotal - */ - SCCoinTotal.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCCoinTotal) - return object; - var message = new $root.gamehall.SCCoinTotal(); - if (object.RechargeCoin != null) - if ($util.Long) - (message.RechargeCoin = $util.Long.fromValue(object.RechargeCoin)).unsigned = false; - else if (typeof object.RechargeCoin === "string") - message.RechargeCoin = parseInt(object.RechargeCoin, 10); - else if (typeof object.RechargeCoin === "number") - message.RechargeCoin = object.RechargeCoin; - else if (typeof object.RechargeCoin === "object") - message.RechargeCoin = new $util.LongBits(object.RechargeCoin.low >>> 0, object.RechargeCoin.high >>> 0).toNumber(); - if (object.ExchangeCoin != null) - if ($util.Long) - (message.ExchangeCoin = $util.Long.fromValue(object.ExchangeCoin)).unsigned = false; - else if (typeof object.ExchangeCoin === "string") - message.ExchangeCoin = parseInt(object.ExchangeCoin, 10); - else if (typeof object.ExchangeCoin === "number") - message.ExchangeCoin = object.ExchangeCoin; - else if (typeof object.ExchangeCoin === "object") - message.ExchangeCoin = new $util.LongBits(object.ExchangeCoin.low >>> 0, object.ExchangeCoin.high >>> 0).toNumber(); - if (object.ClubAddCoin != null) - if ($util.Long) - (message.ClubAddCoin = $util.Long.fromValue(object.ClubAddCoin)).unsigned = false; - else if (typeof object.ClubAddCoin === "string") - message.ClubAddCoin = parseInt(object.ClubAddCoin, 10); - else if (typeof object.ClubAddCoin === "number") - message.ClubAddCoin = object.ClubAddCoin; - else if (typeof object.ClubAddCoin === "object") - message.ClubAddCoin = new $util.LongBits(object.ClubAddCoin.low >>> 0, object.ClubAddCoin.high >>> 0).toNumber(); - if (object.RebateCoin != null) - if ($util.Long) - (message.RebateCoin = $util.Long.fromValue(object.RebateCoin)).unsigned = false; - else if (typeof object.RebateCoin === "string") - message.RebateCoin = parseInt(object.RebateCoin, 10); - else if (typeof object.RebateCoin === "number") - message.RebateCoin = object.RebateCoin; - else if (typeof object.RebateCoin === "object") - message.RebateCoin = new $util.LongBits(object.RebateCoin.low >>> 0, object.RebateCoin.high >>> 0).toNumber(); - if (object.Activity != null) - if ($util.Long) - (message.Activity = $util.Long.fromValue(object.Activity)).unsigned = false; - else if (typeof object.Activity === "string") - message.Activity = parseInt(object.Activity, 10); - else if (typeof object.Activity === "number") - message.Activity = object.Activity; - else if (typeof object.Activity === "object") - message.Activity = new $util.LongBits(object.Activity.low >>> 0, object.Activity.high >>> 0).toNumber(); - if (object.TransactionType) { - if (!Array.isArray(object.TransactionType)) - throw TypeError(".gamehall.SCCoinTotal.TransactionType: array expected"); - message.TransactionType = []; - for (var i = 0; i < object.TransactionType.length; ++i) - message.TransactionType[i] = object.TransactionType[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a SCCoinTotal message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCCoinTotal - * @static - * @param {gamehall.SCCoinTotal} message SCCoinTotal - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCCoinTotal.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.TransactionType = []; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.RechargeCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.RechargeCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.ExchangeCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.ExchangeCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.ClubAddCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.ClubAddCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.RebateCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.RebateCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Activity = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Activity = options.longs === String ? "0" : 0; - } - if (message.RechargeCoin != null && message.hasOwnProperty("RechargeCoin")) - if (typeof message.RechargeCoin === "number") - object.RechargeCoin = options.longs === String ? String(message.RechargeCoin) : message.RechargeCoin; - else - object.RechargeCoin = options.longs === String ? $util.Long.prototype.toString.call(message.RechargeCoin) : options.longs === Number ? new $util.LongBits(message.RechargeCoin.low >>> 0, message.RechargeCoin.high >>> 0).toNumber() : message.RechargeCoin; - if (message.ExchangeCoin != null && message.hasOwnProperty("ExchangeCoin")) - if (typeof message.ExchangeCoin === "number") - object.ExchangeCoin = options.longs === String ? String(message.ExchangeCoin) : message.ExchangeCoin; - else - object.ExchangeCoin = options.longs === String ? $util.Long.prototype.toString.call(message.ExchangeCoin) : options.longs === Number ? new $util.LongBits(message.ExchangeCoin.low >>> 0, message.ExchangeCoin.high >>> 0).toNumber() : message.ExchangeCoin; - if (message.ClubAddCoin != null && message.hasOwnProperty("ClubAddCoin")) - if (typeof message.ClubAddCoin === "number") - object.ClubAddCoin = options.longs === String ? String(message.ClubAddCoin) : message.ClubAddCoin; - else - object.ClubAddCoin = options.longs === String ? $util.Long.prototype.toString.call(message.ClubAddCoin) : options.longs === Number ? new $util.LongBits(message.ClubAddCoin.low >>> 0, message.ClubAddCoin.high >>> 0).toNumber() : message.ClubAddCoin; - if (message.RebateCoin != null && message.hasOwnProperty("RebateCoin")) - if (typeof message.RebateCoin === "number") - object.RebateCoin = options.longs === String ? String(message.RebateCoin) : message.RebateCoin; - else - object.RebateCoin = options.longs === String ? $util.Long.prototype.toString.call(message.RebateCoin) : options.longs === Number ? new $util.LongBits(message.RebateCoin.low >>> 0, message.RebateCoin.high >>> 0).toNumber() : message.RebateCoin; - if (message.Activity != null && message.hasOwnProperty("Activity")) - if (typeof message.Activity === "number") - object.Activity = options.longs === String ? String(message.Activity) : message.Activity; - else - object.Activity = options.longs === String ? $util.Long.prototype.toString.call(message.Activity) : options.longs === Number ? new $util.LongBits(message.Activity.low >>> 0, message.Activity.high >>> 0).toNumber() : message.Activity; - if (message.TransactionType && message.TransactionType.length) { - object.TransactionType = []; - for (var j = 0; j < message.TransactionType.length; ++j) - object.TransactionType[j] = message.TransactionType[j]; - } - return object; - }; - - /** - * Converts this SCCoinTotal to JSON. - * @function toJSON - * @memberof gamehall.SCCoinTotal - * @instance - * @returns {Object.} JSON object - */ - SCCoinTotal.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCCoinTotal - * @function getTypeUrl - * @memberof gamehall.SCCoinTotal - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCCoinTotal.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCCoinTotal"; - }; - - return SCCoinTotal; - })(); - - gamehall.CSReportForm = (function() { - - /** - * Properties of a CSReportForm. - * @memberof gamehall - * @interface ICSReportForm - * @property {gamehall.HallOperaCode|null} [ShowTypeId] CSReportForm ShowTypeId - * @property {number|Long|null} [TimeIndex] CSReportForm TimeIndex - */ - - /** - * Constructs a new CSReportForm. - * @memberof gamehall - * @classdesc Represents a CSReportForm. - * @implements ICSReportForm - * @constructor - * @param {gamehall.ICSReportForm=} [properties] Properties to set - */ - function CSReportForm(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSReportForm ShowTypeId. - * @member {gamehall.HallOperaCode} ShowTypeId - * @memberof gamehall.CSReportForm - * @instance - */ - CSReportForm.prototype.ShowTypeId = 0; - - /** - * CSReportForm TimeIndex. - * @member {number|Long} TimeIndex - * @memberof gamehall.CSReportForm - * @instance - */ - CSReportForm.prototype.TimeIndex = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new CSReportForm instance using the specified properties. - * @function create - * @memberof gamehall.CSReportForm - * @static - * @param {gamehall.ICSReportForm=} [properties] Properties to set - * @returns {gamehall.CSReportForm} CSReportForm instance - */ - CSReportForm.create = function create(properties) { - return new CSReportForm(properties); - }; - - /** - * Encodes the specified CSReportForm message. Does not implicitly {@link gamehall.CSReportForm.verify|verify} messages. - * @function encode - * @memberof gamehall.CSReportForm - * @static - * @param {gamehall.ICSReportForm} message CSReportForm message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReportForm.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowTypeId != null && Object.hasOwnProperty.call(message, "ShowTypeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShowTypeId); - if (message.TimeIndex != null && Object.hasOwnProperty.call(message, "TimeIndex")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.TimeIndex); - return writer; - }; - - /** - * Encodes the specified CSReportForm message, length delimited. Does not implicitly {@link gamehall.CSReportForm.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSReportForm - * @static - * @param {gamehall.ICSReportForm} message CSReportForm message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReportForm.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSReportForm message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSReportForm - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSReportForm} CSReportForm - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReportForm.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSReportForm(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowTypeId = reader.int32(); - break; - } - case 2: { - message.TimeIndex = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSReportForm message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSReportForm - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSReportForm} CSReportForm - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReportForm.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSReportForm message. - * @function verify - * @memberof gamehall.CSReportForm - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSReportForm.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowTypeId != null && message.hasOwnProperty("ShowTypeId")) - switch (message.ShowTypeId) { - default: - return "ShowTypeId: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 101: - break; - } - if (message.TimeIndex != null && message.hasOwnProperty("TimeIndex")) - if (!$util.isInteger(message.TimeIndex) && !(message.TimeIndex && $util.isInteger(message.TimeIndex.low) && $util.isInteger(message.TimeIndex.high))) - return "TimeIndex: integer|Long expected"; - return null; - }; - - /** - * Creates a CSReportForm message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSReportForm - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSReportForm} CSReportForm - */ - CSReportForm.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSReportForm) - return object; - var message = new $root.gamehall.CSReportForm(); - switch (object.ShowTypeId) { - default: - if (typeof object.ShowTypeId === "number") { - message.ShowTypeId = object.ShowTypeId; - break; - } - break; - case "HallOperaZero": - case 0: - message.ShowTypeId = 0; - break; - case "HallChessGame": - case 1: - message.ShowTypeId = 1; - break; - case "HallElectronicGame": - case 2: - message.ShowTypeId = 2; - break; - case "HallFishingGame": - case 3: - message.ShowTypeId = 3; - break; - case "HallLiveVideo": - case 4: - message.ShowTypeId = 4; - break; - case "HallLotteryGame": - case 5: - message.ShowTypeId = 5; - break; - case "HallSportsGame": - case 6: - message.ShowTypeId = 6; - break; - case "HallPrivateRoom": - case 7: - message.ShowTypeId = 7; - break; - case "HallClubRoom": - case 8: - message.ShowTypeId = 8; - break; - case "HallThirdPlt": - case 101: - message.ShowTypeId = 101; - break; - } - if (object.TimeIndex != null) - if ($util.Long) - (message.TimeIndex = $util.Long.fromValue(object.TimeIndex)).unsigned = false; - else if (typeof object.TimeIndex === "string") - message.TimeIndex = parseInt(object.TimeIndex, 10); - else if (typeof object.TimeIndex === "number") - message.TimeIndex = object.TimeIndex; - else if (typeof object.TimeIndex === "object") - message.TimeIndex = new $util.LongBits(object.TimeIndex.low >>> 0, object.TimeIndex.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a CSReportForm message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSReportForm - * @static - * @param {gamehall.CSReportForm} message CSReportForm - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSReportForm.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ShowTypeId = options.enums === String ? "HallOperaZero" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TimeIndex = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TimeIndex = options.longs === String ? "0" : 0; - } - if (message.ShowTypeId != null && message.hasOwnProperty("ShowTypeId")) - object.ShowTypeId = options.enums === String ? $root.gamehall.HallOperaCode[message.ShowTypeId] === undefined ? message.ShowTypeId : $root.gamehall.HallOperaCode[message.ShowTypeId] : message.ShowTypeId; - if (message.TimeIndex != null && message.hasOwnProperty("TimeIndex")) - if (typeof message.TimeIndex === "number") - object.TimeIndex = options.longs === String ? String(message.TimeIndex) : message.TimeIndex; - else - object.TimeIndex = options.longs === String ? $util.Long.prototype.toString.call(message.TimeIndex) : options.longs === Number ? new $util.LongBits(message.TimeIndex.low >>> 0, message.TimeIndex.high >>> 0).toNumber() : message.TimeIndex; - return object; - }; - - /** - * Converts this CSReportForm to JSON. - * @function toJSON - * @memberof gamehall.CSReportForm - * @instance - * @returns {Object.} JSON object - */ - CSReportForm.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSReportForm - * @function getTypeUrl - * @memberof gamehall.CSReportForm - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSReportForm.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSReportForm"; - }; - - return CSReportForm; - })(); - - gamehall.SCReportForm = (function() { - - /** - * Properties of a SCReportForm. - * @memberof gamehall - * @interface ISCReportForm - * @property {number|null} [ShowType] SCReportForm ShowType - * @property {number|Long|null} [ProfitCoin] SCReportForm ProfitCoin - * @property {number|Long|null} [BetCoin] SCReportForm BetCoin - * @property {number|Long|null} [FlowCoin] SCReportForm FlowCoin - */ - - /** - * Constructs a new SCReportForm. - * @memberof gamehall - * @classdesc Represents a SCReportForm. - * @implements ISCReportForm - * @constructor - * @param {gamehall.ISCReportForm=} [properties] Properties to set - */ - function SCReportForm(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCReportForm ShowType. - * @member {number} ShowType - * @memberof gamehall.SCReportForm - * @instance - */ - SCReportForm.prototype.ShowType = 0; - - /** - * SCReportForm ProfitCoin. - * @member {number|Long} ProfitCoin - * @memberof gamehall.SCReportForm - * @instance - */ - SCReportForm.prototype.ProfitCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCReportForm BetCoin. - * @member {number|Long} BetCoin - * @memberof gamehall.SCReportForm - * @instance - */ - SCReportForm.prototype.BetCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * SCReportForm FlowCoin. - * @member {number|Long} FlowCoin - * @memberof gamehall.SCReportForm - * @instance - */ - SCReportForm.prototype.FlowCoin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCReportForm instance using the specified properties. - * @function create - * @memberof gamehall.SCReportForm - * @static - * @param {gamehall.ISCReportForm=} [properties] Properties to set - * @returns {gamehall.SCReportForm} SCReportForm instance - */ - SCReportForm.create = function create(properties) { - return new SCReportForm(properties); - }; - - /** - * Encodes the specified SCReportForm message. Does not implicitly {@link gamehall.SCReportForm.verify|verify} messages. - * @function encode - * @memberof gamehall.SCReportForm - * @static - * @param {gamehall.ISCReportForm} message SCReportForm message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReportForm.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowType != null && Object.hasOwnProperty.call(message, "ShowType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShowType); - if (message.ProfitCoin != null && Object.hasOwnProperty.call(message, "ProfitCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.ProfitCoin); - if (message.BetCoin != null && Object.hasOwnProperty.call(message, "BetCoin")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.BetCoin); - if (message.FlowCoin != null && Object.hasOwnProperty.call(message, "FlowCoin")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.FlowCoin); - return writer; - }; - - /** - * Encodes the specified SCReportForm message, length delimited. Does not implicitly {@link gamehall.SCReportForm.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCReportForm - * @static - * @param {gamehall.ISCReportForm} message SCReportForm message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReportForm.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCReportForm message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCReportForm - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCReportForm} SCReportForm - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReportForm.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCReportForm(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowType = reader.int32(); - break; - } - case 2: { - message.ProfitCoin = reader.int64(); - break; - } - case 3: { - message.BetCoin = reader.int64(); - break; - } - case 4: { - message.FlowCoin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCReportForm message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCReportForm - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCReportForm} SCReportForm - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReportForm.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCReportForm message. - * @function verify - * @memberof gamehall.SCReportForm - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCReportForm.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowType != null && message.hasOwnProperty("ShowType")) - if (!$util.isInteger(message.ShowType)) - return "ShowType: integer expected"; - if (message.ProfitCoin != null && message.hasOwnProperty("ProfitCoin")) - if (!$util.isInteger(message.ProfitCoin) && !(message.ProfitCoin && $util.isInteger(message.ProfitCoin.low) && $util.isInteger(message.ProfitCoin.high))) - return "ProfitCoin: integer|Long expected"; - if (message.BetCoin != null && message.hasOwnProperty("BetCoin")) - if (!$util.isInteger(message.BetCoin) && !(message.BetCoin && $util.isInteger(message.BetCoin.low) && $util.isInteger(message.BetCoin.high))) - return "BetCoin: integer|Long expected"; - if (message.FlowCoin != null && message.hasOwnProperty("FlowCoin")) - if (!$util.isInteger(message.FlowCoin) && !(message.FlowCoin && $util.isInteger(message.FlowCoin.low) && $util.isInteger(message.FlowCoin.high))) - return "FlowCoin: integer|Long expected"; - return null; - }; - - /** - * Creates a SCReportForm message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCReportForm - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCReportForm} SCReportForm - */ - SCReportForm.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCReportForm) - return object; - var message = new $root.gamehall.SCReportForm(); - if (object.ShowType != null) - message.ShowType = object.ShowType | 0; - if (object.ProfitCoin != null) - if ($util.Long) - (message.ProfitCoin = $util.Long.fromValue(object.ProfitCoin)).unsigned = false; - else if (typeof object.ProfitCoin === "string") - message.ProfitCoin = parseInt(object.ProfitCoin, 10); - else if (typeof object.ProfitCoin === "number") - message.ProfitCoin = object.ProfitCoin; - else if (typeof object.ProfitCoin === "object") - message.ProfitCoin = new $util.LongBits(object.ProfitCoin.low >>> 0, object.ProfitCoin.high >>> 0).toNumber(); - if (object.BetCoin != null) - if ($util.Long) - (message.BetCoin = $util.Long.fromValue(object.BetCoin)).unsigned = false; - else if (typeof object.BetCoin === "string") - message.BetCoin = parseInt(object.BetCoin, 10); - else if (typeof object.BetCoin === "number") - message.BetCoin = object.BetCoin; - else if (typeof object.BetCoin === "object") - message.BetCoin = new $util.LongBits(object.BetCoin.low >>> 0, object.BetCoin.high >>> 0).toNumber(); - if (object.FlowCoin != null) - if ($util.Long) - (message.FlowCoin = $util.Long.fromValue(object.FlowCoin)).unsigned = false; - else if (typeof object.FlowCoin === "string") - message.FlowCoin = parseInt(object.FlowCoin, 10); - else if (typeof object.FlowCoin === "number") - message.FlowCoin = object.FlowCoin; - else if (typeof object.FlowCoin === "object") - message.FlowCoin = new $util.LongBits(object.FlowCoin.low >>> 0, object.FlowCoin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCReportForm message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCReportForm - * @static - * @param {gamehall.SCReportForm} message SCReportForm - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCReportForm.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ShowType = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.ProfitCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.ProfitCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.BetCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.BetCoin = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.FlowCoin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.FlowCoin = options.longs === String ? "0" : 0; - } - if (message.ShowType != null && message.hasOwnProperty("ShowType")) - object.ShowType = message.ShowType; - if (message.ProfitCoin != null && message.hasOwnProperty("ProfitCoin")) - if (typeof message.ProfitCoin === "number") - object.ProfitCoin = options.longs === String ? String(message.ProfitCoin) : message.ProfitCoin; - else - object.ProfitCoin = options.longs === String ? $util.Long.prototype.toString.call(message.ProfitCoin) : options.longs === Number ? new $util.LongBits(message.ProfitCoin.low >>> 0, message.ProfitCoin.high >>> 0).toNumber() : message.ProfitCoin; - if (message.BetCoin != null && message.hasOwnProperty("BetCoin")) - if (typeof message.BetCoin === "number") - object.BetCoin = options.longs === String ? String(message.BetCoin) : message.BetCoin; - else - object.BetCoin = options.longs === String ? $util.Long.prototype.toString.call(message.BetCoin) : options.longs === Number ? new $util.LongBits(message.BetCoin.low >>> 0, message.BetCoin.high >>> 0).toNumber() : message.BetCoin; - if (message.FlowCoin != null && message.hasOwnProperty("FlowCoin")) - if (typeof message.FlowCoin === "number") - object.FlowCoin = options.longs === String ? String(message.FlowCoin) : message.FlowCoin; - else - object.FlowCoin = options.longs === String ? $util.Long.prototype.toString.call(message.FlowCoin) : options.longs === Number ? new $util.LongBits(message.FlowCoin.low >>> 0, message.FlowCoin.high >>> 0).toNumber() : message.FlowCoin; - return object; - }; - - /** - * Converts this SCReportForm to JSON. - * @function toJSON - * @memberof gamehall.SCReportForm - * @instance - * @returns {Object.} JSON object - */ - SCReportForm.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCReportForm - * @function getTypeUrl - * @memberof gamehall.SCReportForm - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCReportForm.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCReportForm"; - }; - - return SCReportForm; - })(); - - gamehall.CSHistoryRecord = (function() { - - /** - * Properties of a CSHistoryRecord. - * @memberof gamehall - * @interface ICSHistoryRecord - * @property {number|null} [PageNo] CSHistoryRecord PageNo - */ - - /** - * Constructs a new CSHistoryRecord. - * @memberof gamehall - * @classdesc Represents a CSHistoryRecord. - * @implements ICSHistoryRecord - * @constructor - * @param {gamehall.ICSHistoryRecord=} [properties] Properties to set - */ - function CSHistoryRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSHistoryRecord PageNo. - * @member {number} PageNo - * @memberof gamehall.CSHistoryRecord - * @instance - */ - CSHistoryRecord.prototype.PageNo = 0; - - /** - * Creates a new CSHistoryRecord instance using the specified properties. - * @function create - * @memberof gamehall.CSHistoryRecord - * @static - * @param {gamehall.ICSHistoryRecord=} [properties] Properties to set - * @returns {gamehall.CSHistoryRecord} CSHistoryRecord instance - */ - CSHistoryRecord.create = function create(properties) { - return new CSHistoryRecord(properties); - }; - - /** - * Encodes the specified CSHistoryRecord message. Does not implicitly {@link gamehall.CSHistoryRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.CSHistoryRecord - * @static - * @param {gamehall.ICSHistoryRecord} message CSHistoryRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHistoryRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.PageNo); - return writer; - }; - - /** - * Encodes the specified CSHistoryRecord message, length delimited. Does not implicitly {@link gamehall.CSHistoryRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSHistoryRecord - * @static - * @param {gamehall.ICSHistoryRecord} message CSHistoryRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHistoryRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSHistoryRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSHistoryRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSHistoryRecord} CSHistoryRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHistoryRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSHistoryRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.PageNo = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSHistoryRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSHistoryRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSHistoryRecord} CSHistoryRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHistoryRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSHistoryRecord message. - * @function verify - * @memberof gamehall.CSHistoryRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSHistoryRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - return null; - }; - - /** - * Creates a CSHistoryRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSHistoryRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSHistoryRecord} CSHistoryRecord - */ - CSHistoryRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSHistoryRecord) - return object; - var message = new $root.gamehall.CSHistoryRecord(); - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - return message; - }; - - /** - * Creates a plain object from a CSHistoryRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSHistoryRecord - * @static - * @param {gamehall.CSHistoryRecord} message CSHistoryRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSHistoryRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.PageNo = 0; - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - return object; - }; - - /** - * Converts this CSHistoryRecord to JSON. - * @function toJSON - * @memberof gamehall.CSHistoryRecord - * @instance - * @returns {Object.} JSON object - */ - CSHistoryRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSHistoryRecord - * @function getTypeUrl - * @memberof gamehall.CSHistoryRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSHistoryRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSHistoryRecord"; - }; - - return CSHistoryRecord; - })(); - - gamehall.HistoryRecord = (function() { - - /** - * Properties of a HistoryRecord. - * @memberof gamehall - * @interface IHistoryRecord - * @property {number|Long|null} [Ts] HistoryRecord Ts - * @property {number|null} [CodeCoin] HistoryRecord CodeCoin - * @property {number|null} [Coin] HistoryRecord Coin - * @property {number|null} [ReceiveType] HistoryRecord ReceiveType - */ - - /** - * Constructs a new HistoryRecord. - * @memberof gamehall - * @classdesc Represents a HistoryRecord. - * @implements IHistoryRecord - * @constructor - * @param {gamehall.IHistoryRecord=} [properties] Properties to set - */ - function HistoryRecord(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * HistoryRecord Ts. - * @member {number|Long} Ts - * @memberof gamehall.HistoryRecord - * @instance - */ - HistoryRecord.prototype.Ts = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * HistoryRecord CodeCoin. - * @member {number} CodeCoin - * @memberof gamehall.HistoryRecord - * @instance - */ - HistoryRecord.prototype.CodeCoin = 0; - - /** - * HistoryRecord Coin. - * @member {number} Coin - * @memberof gamehall.HistoryRecord - * @instance - */ - HistoryRecord.prototype.Coin = 0; - - /** - * HistoryRecord ReceiveType. - * @member {number} ReceiveType - * @memberof gamehall.HistoryRecord - * @instance - */ - HistoryRecord.prototype.ReceiveType = 0; - - /** - * Creates a new HistoryRecord instance using the specified properties. - * @function create - * @memberof gamehall.HistoryRecord - * @static - * @param {gamehall.IHistoryRecord=} [properties] Properties to set - * @returns {gamehall.HistoryRecord} HistoryRecord instance - */ - HistoryRecord.create = function create(properties) { - return new HistoryRecord(properties); - }; - - /** - * Encodes the specified HistoryRecord message. Does not implicitly {@link gamehall.HistoryRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.HistoryRecord - * @static - * @param {gamehall.IHistoryRecord} message HistoryRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HistoryRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Ts != null && Object.hasOwnProperty.call(message, "Ts")) - writer.uint32(/* id 1, wireType 0 =*/8).int64(message.Ts); - if (message.CodeCoin != null && Object.hasOwnProperty.call(message, "CodeCoin")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.CodeCoin); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.Coin); - if (message.ReceiveType != null && Object.hasOwnProperty.call(message, "ReceiveType")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.ReceiveType); - return writer; - }; - - /** - * Encodes the specified HistoryRecord message, length delimited. Does not implicitly {@link gamehall.HistoryRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.HistoryRecord - * @static - * @param {gamehall.IHistoryRecord} message HistoryRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - HistoryRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a HistoryRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.HistoryRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.HistoryRecord} HistoryRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HistoryRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.HistoryRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Ts = reader.int64(); - break; - } - case 2: { - message.CodeCoin = reader.int32(); - break; - } - case 3: { - message.Coin = reader.int32(); - break; - } - case 4: { - message.ReceiveType = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a HistoryRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.HistoryRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.HistoryRecord} HistoryRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - HistoryRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a HistoryRecord message. - * @function verify - * @memberof gamehall.HistoryRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - HistoryRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (!$util.isInteger(message.Ts) && !(message.Ts && $util.isInteger(message.Ts.low) && $util.isInteger(message.Ts.high))) - return "Ts: integer|Long expected"; - if (message.CodeCoin != null && message.hasOwnProperty("CodeCoin")) - if (!$util.isInteger(message.CodeCoin)) - return "CodeCoin: integer expected"; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin)) - return "Coin: integer expected"; - if (message.ReceiveType != null && message.hasOwnProperty("ReceiveType")) - if (!$util.isInteger(message.ReceiveType)) - return "ReceiveType: integer expected"; - return null; - }; - - /** - * Creates a HistoryRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.HistoryRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.HistoryRecord} HistoryRecord - */ - HistoryRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.HistoryRecord) - return object; - var message = new $root.gamehall.HistoryRecord(); - if (object.Ts != null) - if ($util.Long) - (message.Ts = $util.Long.fromValue(object.Ts)).unsigned = false; - else if (typeof object.Ts === "string") - message.Ts = parseInt(object.Ts, 10); - else if (typeof object.Ts === "number") - message.Ts = object.Ts; - else if (typeof object.Ts === "object") - message.Ts = new $util.LongBits(object.Ts.low >>> 0, object.Ts.high >>> 0).toNumber(); - if (object.CodeCoin != null) - message.CodeCoin = object.CodeCoin | 0; - if (object.Coin != null) - message.Coin = object.Coin | 0; - if (object.ReceiveType != null) - message.ReceiveType = object.ReceiveType | 0; - return message; - }; - - /** - * Creates a plain object from a HistoryRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.HistoryRecord - * @static - * @param {gamehall.HistoryRecord} message HistoryRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - HistoryRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Ts = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Ts = options.longs === String ? "0" : 0; - object.CodeCoin = 0; - object.Coin = 0; - object.ReceiveType = 0; - } - if (message.Ts != null && message.hasOwnProperty("Ts")) - if (typeof message.Ts === "number") - object.Ts = options.longs === String ? String(message.Ts) : message.Ts; - else - object.Ts = options.longs === String ? $util.Long.prototype.toString.call(message.Ts) : options.longs === Number ? new $util.LongBits(message.Ts.low >>> 0, message.Ts.high >>> 0).toNumber() : message.Ts; - if (message.CodeCoin != null && message.hasOwnProperty("CodeCoin")) - object.CodeCoin = message.CodeCoin; - if (message.Coin != null && message.hasOwnProperty("Coin")) - object.Coin = message.Coin; - if (message.ReceiveType != null && message.hasOwnProperty("ReceiveType")) - object.ReceiveType = message.ReceiveType; - return object; - }; - - /** - * Converts this HistoryRecord to JSON. - * @function toJSON - * @memberof gamehall.HistoryRecord - * @instance - * @returns {Object.} JSON object - */ - HistoryRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for HistoryRecord - * @function getTypeUrl - * @memberof gamehall.HistoryRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - HistoryRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.HistoryRecord"; - }; - - return HistoryRecord; - })(); - - gamehall.SCHistoryRecord = (function() { - - /** - * Properties of a SCHistoryRecord. - * @memberof gamehall - * @interface ISCHistoryRecord - * @property {Array.|null} [HistoryRecord] SCHistoryRecord HistoryRecord - * @property {number|null} [PageNo] SCHistoryRecord PageNo - * @property {number|null} [PageSize] SCHistoryRecord PageSize - * @property {number|null} [PageNum] SCHistoryRecord PageNum - */ - - /** - * Constructs a new SCHistoryRecord. - * @memberof gamehall - * @classdesc Represents a SCHistoryRecord. - * @implements ISCHistoryRecord - * @constructor - * @param {gamehall.ISCHistoryRecord=} [properties] Properties to set - */ - function SCHistoryRecord(properties) { - this.HistoryRecord = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCHistoryRecord HistoryRecord. - * @member {Array.} HistoryRecord - * @memberof gamehall.SCHistoryRecord - * @instance - */ - SCHistoryRecord.prototype.HistoryRecord = $util.emptyArray; - - /** - * SCHistoryRecord PageNo. - * @member {number} PageNo - * @memberof gamehall.SCHistoryRecord - * @instance - */ - SCHistoryRecord.prototype.PageNo = 0; - - /** - * SCHistoryRecord PageSize. - * @member {number} PageSize - * @memberof gamehall.SCHistoryRecord - * @instance - */ - SCHistoryRecord.prototype.PageSize = 0; - - /** - * SCHistoryRecord PageNum. - * @member {number} PageNum - * @memberof gamehall.SCHistoryRecord - * @instance - */ - SCHistoryRecord.prototype.PageNum = 0; - - /** - * Creates a new SCHistoryRecord instance using the specified properties. - * @function create - * @memberof gamehall.SCHistoryRecord - * @static - * @param {gamehall.ISCHistoryRecord=} [properties] Properties to set - * @returns {gamehall.SCHistoryRecord} SCHistoryRecord instance - */ - SCHistoryRecord.create = function create(properties) { - return new SCHistoryRecord(properties); - }; - - /** - * Encodes the specified SCHistoryRecord message. Does not implicitly {@link gamehall.SCHistoryRecord.verify|verify} messages. - * @function encode - * @memberof gamehall.SCHistoryRecord - * @static - * @param {gamehall.ISCHistoryRecord} message SCHistoryRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHistoryRecord.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.HistoryRecord != null && message.HistoryRecord.length) - for (var i = 0; i < message.HistoryRecord.length; ++i) - $root.gamehall.HistoryRecord.encode(message.HistoryRecord[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.PageNo != null && Object.hasOwnProperty.call(message, "PageNo")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.PageNo); - if (message.PageSize != null && Object.hasOwnProperty.call(message, "PageSize")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.PageSize); - if (message.PageNum != null && Object.hasOwnProperty.call(message, "PageNum")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.PageNum); - return writer; - }; - - /** - * Encodes the specified SCHistoryRecord message, length delimited. Does not implicitly {@link gamehall.SCHistoryRecord.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCHistoryRecord - * @static - * @param {gamehall.ISCHistoryRecord} message SCHistoryRecord message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHistoryRecord.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCHistoryRecord message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCHistoryRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCHistoryRecord} SCHistoryRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHistoryRecord.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCHistoryRecord(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.HistoryRecord && message.HistoryRecord.length)) - message.HistoryRecord = []; - message.HistoryRecord.push($root.gamehall.HistoryRecord.decode(reader, reader.uint32())); - break; - } - case 2: { - message.PageNo = reader.int32(); - break; - } - case 3: { - message.PageSize = reader.int32(); - break; - } - case 4: { - message.PageNum = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCHistoryRecord message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCHistoryRecord - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCHistoryRecord} SCHistoryRecord - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHistoryRecord.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCHistoryRecord message. - * @function verify - * @memberof gamehall.SCHistoryRecord - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCHistoryRecord.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.HistoryRecord != null && message.hasOwnProperty("HistoryRecord")) { - if (!Array.isArray(message.HistoryRecord)) - return "HistoryRecord: array expected"; - for (var i = 0; i < message.HistoryRecord.length; ++i) { - var error = $root.gamehall.HistoryRecord.verify(message.HistoryRecord[i]); - if (error) - return "HistoryRecord." + error; - } - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - if (!$util.isInteger(message.PageNo)) - return "PageNo: integer expected"; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - if (!$util.isInteger(message.PageSize)) - return "PageSize: integer expected"; - if (message.PageNum != null && message.hasOwnProperty("PageNum")) - if (!$util.isInteger(message.PageNum)) - return "PageNum: integer expected"; - return null; - }; - - /** - * Creates a SCHistoryRecord message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCHistoryRecord - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCHistoryRecord} SCHistoryRecord - */ - SCHistoryRecord.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCHistoryRecord) - return object; - var message = new $root.gamehall.SCHistoryRecord(); - if (object.HistoryRecord) { - if (!Array.isArray(object.HistoryRecord)) - throw TypeError(".gamehall.SCHistoryRecord.HistoryRecord: array expected"); - message.HistoryRecord = []; - for (var i = 0; i < object.HistoryRecord.length; ++i) { - if (typeof object.HistoryRecord[i] !== "object") - throw TypeError(".gamehall.SCHistoryRecord.HistoryRecord: object expected"); - message.HistoryRecord[i] = $root.gamehall.HistoryRecord.fromObject(object.HistoryRecord[i]); - } - } - if (object.PageNo != null) - message.PageNo = object.PageNo | 0; - if (object.PageSize != null) - message.PageSize = object.PageSize | 0; - if (object.PageNum != null) - message.PageNum = object.PageNum | 0; - return message; - }; - - /** - * Creates a plain object from a SCHistoryRecord message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCHistoryRecord - * @static - * @param {gamehall.SCHistoryRecord} message SCHistoryRecord - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCHistoryRecord.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.HistoryRecord = []; - if (options.defaults) { - object.PageNo = 0; - object.PageSize = 0; - object.PageNum = 0; - } - if (message.HistoryRecord && message.HistoryRecord.length) { - object.HistoryRecord = []; - for (var j = 0; j < message.HistoryRecord.length; ++j) - object.HistoryRecord[j] = $root.gamehall.HistoryRecord.toObject(message.HistoryRecord[j], options); - } - if (message.PageNo != null && message.hasOwnProperty("PageNo")) - object.PageNo = message.PageNo; - if (message.PageSize != null && message.hasOwnProperty("PageSize")) - object.PageSize = message.PageSize; - if (message.PageNum != null && message.hasOwnProperty("PageNum")) - object.PageNum = message.PageNum; - return object; - }; - - /** - * Converts this SCHistoryRecord to JSON. - * @function toJSON - * @memberof gamehall.SCHistoryRecord - * @instance - * @returns {Object.} JSON object - */ - SCHistoryRecord.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCHistoryRecord - * @function getTypeUrl - * @memberof gamehall.SCHistoryRecord - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCHistoryRecord.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCHistoryRecord"; - }; - - return SCHistoryRecord; - })(); - - gamehall.CSReceiveCodeCoin = (function() { - - /** - * Properties of a CSReceiveCodeCoin. - * @memberof gamehall - * @interface ICSReceiveCodeCoin - */ - - /** - * Constructs a new CSReceiveCodeCoin. - * @memberof gamehall - * @classdesc Represents a CSReceiveCodeCoin. - * @implements ICSReceiveCodeCoin - * @constructor - * @param {gamehall.ICSReceiveCodeCoin=} [properties] Properties to set - */ - function CSReceiveCodeCoin(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSReceiveCodeCoin instance using the specified properties. - * @function create - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {gamehall.ICSReceiveCodeCoin=} [properties] Properties to set - * @returns {gamehall.CSReceiveCodeCoin} CSReceiveCodeCoin instance - */ - CSReceiveCodeCoin.create = function create(properties) { - return new CSReceiveCodeCoin(properties); - }; - - /** - * Encodes the specified CSReceiveCodeCoin message. Does not implicitly {@link gamehall.CSReceiveCodeCoin.verify|verify} messages. - * @function encode - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {gamehall.ICSReceiveCodeCoin} message CSReceiveCodeCoin message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReceiveCodeCoin.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSReceiveCodeCoin message, length delimited. Does not implicitly {@link gamehall.CSReceiveCodeCoin.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {gamehall.ICSReceiveCodeCoin} message CSReceiveCodeCoin message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSReceiveCodeCoin.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSReceiveCodeCoin message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSReceiveCodeCoin} CSReceiveCodeCoin - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReceiveCodeCoin.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSReceiveCodeCoin(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSReceiveCodeCoin message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSReceiveCodeCoin} CSReceiveCodeCoin - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSReceiveCodeCoin.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSReceiveCodeCoin message. - * @function verify - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSReceiveCodeCoin.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSReceiveCodeCoin message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSReceiveCodeCoin} CSReceiveCodeCoin - */ - CSReceiveCodeCoin.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSReceiveCodeCoin) - return object; - return new $root.gamehall.CSReceiveCodeCoin(); - }; - - /** - * Creates a plain object from a CSReceiveCodeCoin message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {gamehall.CSReceiveCodeCoin} message CSReceiveCodeCoin - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSReceiveCodeCoin.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSReceiveCodeCoin to JSON. - * @function toJSON - * @memberof gamehall.CSReceiveCodeCoin - * @instance - * @returns {Object.} JSON object - */ - CSReceiveCodeCoin.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSReceiveCodeCoin - * @function getTypeUrl - * @memberof gamehall.CSReceiveCodeCoin - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSReceiveCodeCoin.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSReceiveCodeCoin"; - }; - - return CSReceiveCodeCoin; - })(); - - gamehall.SCReceiveCodeCoin = (function() { - - /** - * Properties of a SCReceiveCodeCoin. - * @memberof gamehall - * @interface ISCReceiveCodeCoin - * @property {gamehall.OpResultCode_Hall|null} [OpRetCode] SCReceiveCodeCoin OpRetCode - * @property {number|Long|null} [Coin] SCReceiveCodeCoin Coin - */ - - /** - * Constructs a new SCReceiveCodeCoin. - * @memberof gamehall - * @classdesc Represents a SCReceiveCodeCoin. - * @implements ISCReceiveCodeCoin - * @constructor - * @param {gamehall.ISCReceiveCodeCoin=} [properties] Properties to set - */ - function SCReceiveCodeCoin(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCReceiveCodeCoin OpRetCode. - * @member {gamehall.OpResultCode_Hall} OpRetCode - * @memberof gamehall.SCReceiveCodeCoin - * @instance - */ - SCReceiveCodeCoin.prototype.OpRetCode = 0; - - /** - * SCReceiveCodeCoin Coin. - * @member {number|Long} Coin - * @memberof gamehall.SCReceiveCodeCoin - * @instance - */ - SCReceiveCodeCoin.prototype.Coin = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new SCReceiveCodeCoin instance using the specified properties. - * @function create - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {gamehall.ISCReceiveCodeCoin=} [properties] Properties to set - * @returns {gamehall.SCReceiveCodeCoin} SCReceiveCodeCoin instance - */ - SCReceiveCodeCoin.create = function create(properties) { - return new SCReceiveCodeCoin(properties); - }; - - /** - * Encodes the specified SCReceiveCodeCoin message. Does not implicitly {@link gamehall.SCReceiveCodeCoin.verify|verify} messages. - * @function encode - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {gamehall.ISCReceiveCodeCoin} message SCReceiveCodeCoin message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReceiveCodeCoin.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpRetCode != null && Object.hasOwnProperty.call(message, "OpRetCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpRetCode); - if (message.Coin != null && Object.hasOwnProperty.call(message, "Coin")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.Coin); - return writer; - }; - - /** - * Encodes the specified SCReceiveCodeCoin message, length delimited. Does not implicitly {@link gamehall.SCReceiveCodeCoin.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {gamehall.ISCReceiveCodeCoin} message SCReceiveCodeCoin message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCReceiveCodeCoin.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCReceiveCodeCoin message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCReceiveCodeCoin} SCReceiveCodeCoin - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReceiveCodeCoin.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCReceiveCodeCoin(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpRetCode = reader.int32(); - break; - } - case 2: { - message.Coin = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCReceiveCodeCoin message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCReceiveCodeCoin} SCReceiveCodeCoin - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCReceiveCodeCoin.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCReceiveCodeCoin message. - * @function verify - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCReceiveCodeCoin.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - switch (message.OpRetCode) { - default: - return "OpRetCode: enum value expected"; - case 0: - case 1: - case 10008: - break; - } - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (!$util.isInteger(message.Coin) && !(message.Coin && $util.isInteger(message.Coin.low) && $util.isInteger(message.Coin.high))) - return "Coin: integer|Long expected"; - return null; - }; - - /** - * Creates a SCReceiveCodeCoin message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCReceiveCodeCoin} SCReceiveCodeCoin - */ - SCReceiveCodeCoin.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCReceiveCodeCoin) - return object; - var message = new $root.gamehall.SCReceiveCodeCoin(); - switch (object.OpRetCode) { - default: - if (typeof object.OpRetCode === "number") { - message.OpRetCode = object.OpRetCode; - break; - } - break; - case "OPRC_Sucess_Hall": - case 0: - message.OpRetCode = 0; - break; - case "OPRC_Error_Hall": - case 1: - message.OpRetCode = 1; - break; - case "OPRC_OnlineReward_Info_FindPlatform_Fail_Hall": - case 10008: - message.OpRetCode = 10008; - break; - } - if (object.Coin != null) - if ($util.Long) - (message.Coin = $util.Long.fromValue(object.Coin)).unsigned = false; - else if (typeof object.Coin === "string") - message.Coin = parseInt(object.Coin, 10); - else if (typeof object.Coin === "number") - message.Coin = object.Coin; - else if (typeof object.Coin === "object") - message.Coin = new $util.LongBits(object.Coin.low >>> 0, object.Coin.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a SCReceiveCodeCoin message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {gamehall.SCReceiveCodeCoin} message SCReceiveCodeCoin - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCReceiveCodeCoin.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.OpRetCode = options.enums === String ? "OPRC_Sucess_Hall" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Coin = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Coin = options.longs === String ? "0" : 0; - } - if (message.OpRetCode != null && message.hasOwnProperty("OpRetCode")) - object.OpRetCode = options.enums === String ? $root.gamehall.OpResultCode_Hall[message.OpRetCode] === undefined ? message.OpRetCode : $root.gamehall.OpResultCode_Hall[message.OpRetCode] : message.OpRetCode; - if (message.Coin != null && message.hasOwnProperty("Coin")) - if (typeof message.Coin === "number") - object.Coin = options.longs === String ? String(message.Coin) : message.Coin; - else - object.Coin = options.longs === String ? $util.Long.prototype.toString.call(message.Coin) : options.longs === Number ? new $util.LongBits(message.Coin.low >>> 0, message.Coin.high >>> 0).toNumber() : message.Coin; - return object; - }; - - /** - * Converts this SCReceiveCodeCoin to JSON. - * @function toJSON - * @memberof gamehall.SCReceiveCodeCoin - * @instance - * @returns {Object.} JSON object - */ - SCReceiveCodeCoin.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCReceiveCodeCoin - * @function getTypeUrl - * @memberof gamehall.SCReceiveCodeCoin - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCReceiveCodeCoin.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCReceiveCodeCoin"; - }; - - return SCReceiveCodeCoin; - })(); - - gamehall.CSGetRankInfo = (function() { - - /** - * Properties of a CSGetRankInfo. - * @memberof gamehall - * @interface ICSGetRankInfo - * @property {string|null} [Plt] CSGetRankInfo Plt - * @property {number|null} [GameFreeId] CSGetRankInfo GameFreeId - */ - - /** - * Constructs a new CSGetRankInfo. - * @memberof gamehall - * @classdesc Represents a CSGetRankInfo. - * @implements ICSGetRankInfo - * @constructor - * @param {gamehall.ICSGetRankInfo=} [properties] Properties to set - */ - function CSGetRankInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSGetRankInfo Plt. - * @member {string} Plt - * @memberof gamehall.CSGetRankInfo - * @instance - */ - CSGetRankInfo.prototype.Plt = ""; - - /** - * CSGetRankInfo GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.CSGetRankInfo - * @instance - */ - CSGetRankInfo.prototype.GameFreeId = 0; - - /** - * Creates a new CSGetRankInfo instance using the specified properties. - * @function create - * @memberof gamehall.CSGetRankInfo - * @static - * @param {gamehall.ICSGetRankInfo=} [properties] Properties to set - * @returns {gamehall.CSGetRankInfo} CSGetRankInfo instance - */ - CSGetRankInfo.create = function create(properties) { - return new CSGetRankInfo(properties); - }; - - /** - * Encodes the specified CSGetRankInfo message. Does not implicitly {@link gamehall.CSGetRankInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.CSGetRankInfo - * @static - * @param {gamehall.ICSGetRankInfo} message CSGetRankInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetRankInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Plt != null && Object.hasOwnProperty.call(message, "Plt")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.Plt); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameFreeId); - return writer; - }; - - /** - * Encodes the specified CSGetRankInfo message, length delimited. Does not implicitly {@link gamehall.CSGetRankInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSGetRankInfo - * @static - * @param {gamehall.ICSGetRankInfo} message CSGetRankInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSGetRankInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSGetRankInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSGetRankInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSGetRankInfo} CSGetRankInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetRankInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSGetRankInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Plt = reader.string(); - break; - } - case 2: { - message.GameFreeId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSGetRankInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSGetRankInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSGetRankInfo} CSGetRankInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSGetRankInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSGetRankInfo message. - * @function verify - * @memberof gamehall.CSGetRankInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSGetRankInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Plt != null && message.hasOwnProperty("Plt")) - if (!$util.isString(message.Plt)) - return "Plt: string expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - return null; - }; - - /** - * Creates a CSGetRankInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSGetRankInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSGetRankInfo} CSGetRankInfo - */ - CSGetRankInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSGetRankInfo) - return object; - var message = new $root.gamehall.CSGetRankInfo(); - if (object.Plt != null) - message.Plt = String(object.Plt); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - return message; - }; - - /** - * Creates a plain object from a CSGetRankInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSGetRankInfo - * @static - * @param {gamehall.CSGetRankInfo} message CSGetRankInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSGetRankInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Plt = ""; - object.GameFreeId = 0; - } - if (message.Plt != null && message.hasOwnProperty("Plt")) - object.Plt = message.Plt; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - return object; - }; - - /** - * Converts this CSGetRankInfo to JSON. - * @function toJSON - * @memberof gamehall.CSGetRankInfo - * @instance - * @returns {Object.} JSON object - */ - CSGetRankInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSGetRankInfo - * @function getTypeUrl - * @memberof gamehall.CSGetRankInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSGetRankInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSGetRankInfo"; - }; - - return CSGetRankInfo; - })(); - - gamehall.RankInfo = (function() { - - /** - * Properties of a RankInfo. - * @memberof gamehall - * @interface IRankInfo - * @property {number|null} [Snid] RankInfo Snid - * @property {string|null} [Name] RankInfo Name - * @property {number|Long|null} [TotalIn] RankInfo TotalIn - * @property {number|Long|null} [TotalOut] RankInfo TotalOut - */ - - /** - * Constructs a new RankInfo. - * @memberof gamehall - * @classdesc Represents a RankInfo. - * @implements IRankInfo - * @constructor - * @param {gamehall.IRankInfo=} [properties] Properties to set - */ - function RankInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * RankInfo Snid. - * @member {number} Snid - * @memberof gamehall.RankInfo - * @instance - */ - RankInfo.prototype.Snid = 0; - - /** - * RankInfo Name. - * @member {string} Name - * @memberof gamehall.RankInfo - * @instance - */ - RankInfo.prototype.Name = ""; - - /** - * RankInfo TotalIn. - * @member {number|Long} TotalIn - * @memberof gamehall.RankInfo - * @instance - */ - RankInfo.prototype.TotalIn = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * RankInfo TotalOut. - * @member {number|Long} TotalOut - * @memberof gamehall.RankInfo - * @instance - */ - RankInfo.prototype.TotalOut = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new RankInfo instance using the specified properties. - * @function create - * @memberof gamehall.RankInfo - * @static - * @param {gamehall.IRankInfo=} [properties] Properties to set - * @returns {gamehall.RankInfo} RankInfo instance - */ - RankInfo.create = function create(properties) { - return new RankInfo(properties); - }; - - /** - * Encodes the specified RankInfo message. Does not implicitly {@link gamehall.RankInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.RankInfo - * @static - * @param {gamehall.IRankInfo} message RankInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RankInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Snid != null && Object.hasOwnProperty.call(message, "Snid")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Snid); - if (message.Name != null && Object.hasOwnProperty.call(message, "Name")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.Name); - if (message.TotalIn != null && Object.hasOwnProperty.call(message, "TotalIn")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.TotalIn); - if (message.TotalOut != null && Object.hasOwnProperty.call(message, "TotalOut")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.TotalOut); - return writer; - }; - - /** - * Encodes the specified RankInfo message, length delimited. Does not implicitly {@link gamehall.RankInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.RankInfo - * @static - * @param {gamehall.IRankInfo} message RankInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RankInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a RankInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.RankInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.RankInfo} RankInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RankInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.RankInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Snid = reader.int32(); - break; - } - case 2: { - message.Name = reader.string(); - break; - } - case 3: { - message.TotalIn = reader.int64(); - break; - } - case 4: { - message.TotalOut = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a RankInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.RankInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.RankInfo} RankInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RankInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a RankInfo message. - * @function verify - * @memberof gamehall.RankInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RankInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Snid != null && message.hasOwnProperty("Snid")) - if (!$util.isInteger(message.Snid)) - return "Snid: integer expected"; - if (message.Name != null && message.hasOwnProperty("Name")) - if (!$util.isString(message.Name)) - return "Name: string expected"; - if (message.TotalIn != null && message.hasOwnProperty("TotalIn")) - if (!$util.isInteger(message.TotalIn) && !(message.TotalIn && $util.isInteger(message.TotalIn.low) && $util.isInteger(message.TotalIn.high))) - return "TotalIn: integer|Long expected"; - if (message.TotalOut != null && message.hasOwnProperty("TotalOut")) - if (!$util.isInteger(message.TotalOut) && !(message.TotalOut && $util.isInteger(message.TotalOut.low) && $util.isInteger(message.TotalOut.high))) - return "TotalOut: integer|Long expected"; - return null; - }; - - /** - * Creates a RankInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.RankInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.RankInfo} RankInfo - */ - RankInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.RankInfo) - return object; - var message = new $root.gamehall.RankInfo(); - if (object.Snid != null) - message.Snid = object.Snid | 0; - if (object.Name != null) - message.Name = String(object.Name); - if (object.TotalIn != null) - if ($util.Long) - (message.TotalIn = $util.Long.fromValue(object.TotalIn)).unsigned = false; - else if (typeof object.TotalIn === "string") - message.TotalIn = parseInt(object.TotalIn, 10); - else if (typeof object.TotalIn === "number") - message.TotalIn = object.TotalIn; - else if (typeof object.TotalIn === "object") - message.TotalIn = new $util.LongBits(object.TotalIn.low >>> 0, object.TotalIn.high >>> 0).toNumber(); - if (object.TotalOut != null) - if ($util.Long) - (message.TotalOut = $util.Long.fromValue(object.TotalOut)).unsigned = false; - else if (typeof object.TotalOut === "string") - message.TotalOut = parseInt(object.TotalOut, 10); - else if (typeof object.TotalOut === "number") - message.TotalOut = object.TotalOut; - else if (typeof object.TotalOut === "object") - message.TotalOut = new $util.LongBits(object.TotalOut.low >>> 0, object.TotalOut.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a RankInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.RankInfo - * @static - * @param {gamehall.RankInfo} message RankInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RankInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.Snid = 0; - object.Name = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalIn = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalIn = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalOut = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalOut = options.longs === String ? "0" : 0; - } - if (message.Snid != null && message.hasOwnProperty("Snid")) - object.Snid = message.Snid; - if (message.Name != null && message.hasOwnProperty("Name")) - object.Name = message.Name; - if (message.TotalIn != null && message.hasOwnProperty("TotalIn")) - if (typeof message.TotalIn === "number") - object.TotalIn = options.longs === String ? String(message.TotalIn) : message.TotalIn; - else - object.TotalIn = options.longs === String ? $util.Long.prototype.toString.call(message.TotalIn) : options.longs === Number ? new $util.LongBits(message.TotalIn.low >>> 0, message.TotalIn.high >>> 0).toNumber() : message.TotalIn; - if (message.TotalOut != null && message.hasOwnProperty("TotalOut")) - if (typeof message.TotalOut === "number") - object.TotalOut = options.longs === String ? String(message.TotalOut) : message.TotalOut; - else - object.TotalOut = options.longs === String ? $util.Long.prototype.toString.call(message.TotalOut) : options.longs === Number ? new $util.LongBits(message.TotalOut.low >>> 0, message.TotalOut.high >>> 0).toNumber() : message.TotalOut; - return object; - }; - - /** - * Converts this RankInfo to JSON. - * @function toJSON - * @memberof gamehall.RankInfo - * @instance - * @returns {Object.} JSON object - */ - RankInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for RankInfo - * @function getTypeUrl - * @memberof gamehall.RankInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RankInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.RankInfo"; - }; - - return RankInfo; - })(); - - gamehall.SCGetRankInfo = (function() { - - /** - * Properties of a SCGetRankInfo. - * @memberof gamehall - * @interface ISCGetRankInfo - * @property {Array.|null} [Info] SCGetRankInfo Info - */ - - /** - * Constructs a new SCGetRankInfo. - * @memberof gamehall - * @classdesc Represents a SCGetRankInfo. - * @implements ISCGetRankInfo - * @constructor - * @param {gamehall.ISCGetRankInfo=} [properties] Properties to set - */ - function SCGetRankInfo(properties) { - this.Info = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCGetRankInfo Info. - * @member {Array.} Info - * @memberof gamehall.SCGetRankInfo - * @instance - */ - SCGetRankInfo.prototype.Info = $util.emptyArray; - - /** - * Creates a new SCGetRankInfo instance using the specified properties. - * @function create - * @memberof gamehall.SCGetRankInfo - * @static - * @param {gamehall.ISCGetRankInfo=} [properties] Properties to set - * @returns {gamehall.SCGetRankInfo} SCGetRankInfo instance - */ - SCGetRankInfo.create = function create(properties) { - return new SCGetRankInfo(properties); - }; - - /** - * Encodes the specified SCGetRankInfo message. Does not implicitly {@link gamehall.SCGetRankInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.SCGetRankInfo - * @static - * @param {gamehall.ISCGetRankInfo} message SCGetRankInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetRankInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Info != null && message.Info.length) - for (var i = 0; i < message.Info.length; ++i) - $root.gamehall.RankInfo.encode(message.Info[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCGetRankInfo message, length delimited. Does not implicitly {@link gamehall.SCGetRankInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCGetRankInfo - * @static - * @param {gamehall.ISCGetRankInfo} message SCGetRankInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCGetRankInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCGetRankInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCGetRankInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCGetRankInfo} SCGetRankInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetRankInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCGetRankInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.Info && message.Info.length)) - message.Info = []; - message.Info.push($root.gamehall.RankInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCGetRankInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCGetRankInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCGetRankInfo} SCGetRankInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCGetRankInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCGetRankInfo message. - * @function verify - * @memberof gamehall.SCGetRankInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCGetRankInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Info != null && message.hasOwnProperty("Info")) { - if (!Array.isArray(message.Info)) - return "Info: array expected"; - for (var i = 0; i < message.Info.length; ++i) { - var error = $root.gamehall.RankInfo.verify(message.Info[i]); - if (error) - return "Info." + error; - } - } - return null; - }; - - /** - * Creates a SCGetRankInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCGetRankInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCGetRankInfo} SCGetRankInfo - */ - SCGetRankInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCGetRankInfo) - return object; - var message = new $root.gamehall.SCGetRankInfo(); - if (object.Info) { - if (!Array.isArray(object.Info)) - throw TypeError(".gamehall.SCGetRankInfo.Info: array expected"); - message.Info = []; - for (var i = 0; i < object.Info.length; ++i) { - if (typeof object.Info[i] !== "object") - throw TypeError(".gamehall.SCGetRankInfo.Info: object expected"); - message.Info[i] = $root.gamehall.RankInfo.fromObject(object.Info[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCGetRankInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCGetRankInfo - * @static - * @param {gamehall.SCGetRankInfo} message SCGetRankInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCGetRankInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Info = []; - if (message.Info && message.Info.length) { - object.Info = []; - for (var j = 0; j < message.Info.length; ++j) - object.Info[j] = $root.gamehall.RankInfo.toObject(message.Info[j], options); - } - return object; - }; - - /** - * Converts this SCGetRankInfo to JSON. - * @function toJSON - * @memberof gamehall.SCGetRankInfo - * @instance - * @returns {Object.} JSON object - */ - SCGetRankInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCGetRankInfo - * @function getTypeUrl - * @memberof gamehall.SCGetRankInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCGetRankInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCGetRankInfo"; - }; - - return SCGetRankInfo; - })(); - - /** - * ShowRedCode enum. - * @name gamehall.ShowRedCode - * @enum {number} - * @property {number} Mail=0 Mail value - * @property {number} Shop=1 Shop value - * @property {number} Role=2 Role value - * @property {number} Pet=3 Pet value - * @property {number} Welfare=4 Welfare value - */ - gamehall.ShowRedCode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "Mail"] = 0; - values[valuesById[1] = "Shop"] = 1; - values[valuesById[2] = "Role"] = 2; - values[valuesById[3] = "Pet"] = 3; - values[valuesById[4] = "Welfare"] = 4; - return values; - })(); - - gamehall.ShowRed = (function() { - - /** - * Properties of a ShowRed. - * @memberof gamehall - * @interface IShowRed - * @property {gamehall.ShowRedCode|null} [ShowType] ShowRed ShowType - * @property {number|null} [ShowChild] ShowRed ShowChild - * @property {number|null} [IsShow] ShowRed IsShow - */ - - /** - * Constructs a new ShowRed. - * @memberof gamehall - * @classdesc Represents a ShowRed. - * @implements IShowRed - * @constructor - * @param {gamehall.IShowRed=} [properties] Properties to set - */ - function ShowRed(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ShowRed ShowType. - * @member {gamehall.ShowRedCode} ShowType - * @memberof gamehall.ShowRed - * @instance - */ - ShowRed.prototype.ShowType = 0; - - /** - * ShowRed ShowChild. - * @member {number} ShowChild - * @memberof gamehall.ShowRed - * @instance - */ - ShowRed.prototype.ShowChild = 0; - - /** - * ShowRed IsShow. - * @member {number} IsShow - * @memberof gamehall.ShowRed - * @instance - */ - ShowRed.prototype.IsShow = 0; - - /** - * Creates a new ShowRed instance using the specified properties. - * @function create - * @memberof gamehall.ShowRed - * @static - * @param {gamehall.IShowRed=} [properties] Properties to set - * @returns {gamehall.ShowRed} ShowRed instance - */ - ShowRed.create = function create(properties) { - return new ShowRed(properties); - }; - - /** - * Encodes the specified ShowRed message. Does not implicitly {@link gamehall.ShowRed.verify|verify} messages. - * @function encode - * @memberof gamehall.ShowRed - * @static - * @param {gamehall.IShowRed} message ShowRed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ShowRed.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowType != null && Object.hasOwnProperty.call(message, "ShowType")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.ShowType); - if (message.ShowChild != null && Object.hasOwnProperty.call(message, "ShowChild")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.ShowChild); - if (message.IsShow != null && Object.hasOwnProperty.call(message, "IsShow")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.IsShow); - return writer; - }; - - /** - * Encodes the specified ShowRed message, length delimited. Does not implicitly {@link gamehall.ShowRed.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.ShowRed - * @static - * @param {gamehall.IShowRed} message ShowRed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ShowRed.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ShowRed message from the specified reader or buffer. - * @function decode - * @memberof gamehall.ShowRed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.ShowRed} ShowRed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ShowRed.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.ShowRed(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowType = reader.int32(); - break; - } - case 2: { - message.ShowChild = reader.int32(); - break; - } - case 3: { - message.IsShow = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ShowRed message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.ShowRed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.ShowRed} ShowRed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ShowRed.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ShowRed message. - * @function verify - * @memberof gamehall.ShowRed - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ShowRed.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowType != null && message.hasOwnProperty("ShowType")) - switch (message.ShowType) { - default: - return "ShowType: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 4: - break; - } - if (message.ShowChild != null && message.hasOwnProperty("ShowChild")) - if (!$util.isInteger(message.ShowChild)) - return "ShowChild: integer expected"; - if (message.IsShow != null && message.hasOwnProperty("IsShow")) - if (!$util.isInteger(message.IsShow)) - return "IsShow: integer expected"; - return null; - }; - - /** - * Creates a ShowRed message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.ShowRed - * @static - * @param {Object.} object Plain object - * @returns {gamehall.ShowRed} ShowRed - */ - ShowRed.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.ShowRed) - return object; - var message = new $root.gamehall.ShowRed(); - switch (object.ShowType) { - default: - if (typeof object.ShowType === "number") { - message.ShowType = object.ShowType; - break; - } - break; - case "Mail": - case 0: - message.ShowType = 0; - break; - case "Shop": - case 1: - message.ShowType = 1; - break; - case "Role": - case 2: - message.ShowType = 2; - break; - case "Pet": - case 3: - message.ShowType = 3; - break; - case "Welfare": - case 4: - message.ShowType = 4; - break; - } - if (object.ShowChild != null) - message.ShowChild = object.ShowChild | 0; - if (object.IsShow != null) - message.IsShow = object.IsShow | 0; - return message; - }; - - /** - * Creates a plain object from a ShowRed message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.ShowRed - * @static - * @param {gamehall.ShowRed} message ShowRed - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ShowRed.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.ShowType = options.enums === String ? "Mail" : 0; - object.ShowChild = 0; - object.IsShow = 0; - } - if (message.ShowType != null && message.hasOwnProperty("ShowType")) - object.ShowType = options.enums === String ? $root.gamehall.ShowRedCode[message.ShowType] === undefined ? message.ShowType : $root.gamehall.ShowRedCode[message.ShowType] : message.ShowType; - if (message.ShowChild != null && message.hasOwnProperty("ShowChild")) - object.ShowChild = message.ShowChild; - if (message.IsShow != null && message.hasOwnProperty("IsShow")) - object.IsShow = message.IsShow; - return object; - }; - - /** - * Converts this ShowRed to JSON. - * @function toJSON - * @memberof gamehall.ShowRed - * @instance - * @returns {Object.} JSON object - */ - ShowRed.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ShowRed - * @function getTypeUrl - * @memberof gamehall.ShowRed - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ShowRed.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.ShowRed"; - }; - - return ShowRed; - })(); - - gamehall.SCShowRed = (function() { - - /** - * Properties of a SCShowRed. - * @memberof gamehall - * @interface ISCShowRed - * @property {gamehall.IShowRed|null} [ShowRed] SCShowRed ShowRed - */ - - /** - * Constructs a new SCShowRed. - * @memberof gamehall - * @classdesc Represents a SCShowRed. - * @implements ISCShowRed - * @constructor - * @param {gamehall.ISCShowRed=} [properties] Properties to set - */ - function SCShowRed(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCShowRed ShowRed. - * @member {gamehall.IShowRed|null|undefined} ShowRed - * @memberof gamehall.SCShowRed - * @instance - */ - SCShowRed.prototype.ShowRed = null; - - /** - * Creates a new SCShowRed instance using the specified properties. - * @function create - * @memberof gamehall.SCShowRed - * @static - * @param {gamehall.ISCShowRed=} [properties] Properties to set - * @returns {gamehall.SCShowRed} SCShowRed instance - */ - SCShowRed.create = function create(properties) { - return new SCShowRed(properties); - }; - - /** - * Encodes the specified SCShowRed message. Does not implicitly {@link gamehall.SCShowRed.verify|verify} messages. - * @function encode - * @memberof gamehall.SCShowRed - * @static - * @param {gamehall.ISCShowRed} message SCShowRed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCShowRed.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.ShowRed != null && Object.hasOwnProperty.call(message, "ShowRed")) - $root.gamehall.ShowRed.encode(message.ShowRed, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCShowRed message, length delimited. Does not implicitly {@link gamehall.SCShowRed.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCShowRed - * @static - * @param {gamehall.ISCShowRed} message SCShowRed message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCShowRed.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCShowRed message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCShowRed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCShowRed} SCShowRed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCShowRed.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCShowRed(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.ShowRed = $root.gamehall.ShowRed.decode(reader, reader.uint32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCShowRed message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCShowRed - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCShowRed} SCShowRed - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCShowRed.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCShowRed message. - * @function verify - * @memberof gamehall.SCShowRed - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCShowRed.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.ShowRed != null && message.hasOwnProperty("ShowRed")) { - var error = $root.gamehall.ShowRed.verify(message.ShowRed); - if (error) - return "ShowRed." + error; - } - return null; - }; - - /** - * Creates a SCShowRed message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCShowRed - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCShowRed} SCShowRed - */ - SCShowRed.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCShowRed) - return object; - var message = new $root.gamehall.SCShowRed(); - if (object.ShowRed != null) { - if (typeof object.ShowRed !== "object") - throw TypeError(".gamehall.SCShowRed.ShowRed: object expected"); - message.ShowRed = $root.gamehall.ShowRed.fromObject(object.ShowRed); - } - return message; - }; - - /** - * Creates a plain object from a SCShowRed message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCShowRed - * @static - * @param {gamehall.SCShowRed} message SCShowRed - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCShowRed.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.ShowRed = null; - if (message.ShowRed != null && message.hasOwnProperty("ShowRed")) - object.ShowRed = $root.gamehall.ShowRed.toObject(message.ShowRed, options); - return object; - }; - - /** - * Converts this SCShowRed to JSON. - * @function toJSON - * @memberof gamehall.SCShowRed - * @instance - * @returns {Object.} JSON object - */ - SCShowRed.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCShowRed - * @function getTypeUrl - * @memberof gamehall.SCShowRed - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCShowRed.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCShowRed"; - }; - - return SCShowRed; - })(); - - /** - * OpResultCode_Hundred enum. - * @name gamehall.OpResultCode_Hundred - * @enum {number} - * @property {number} OPRC_Sucess_Hundred=0 OPRC_Sucess_Hundred value - * @property {number} OPRC_Error_Hundred=1 OPRC_Error_Hundred value - * @property {number} OPRC_YourResVerIsLow_Hundred=1044 OPRC_YourResVerIsLow_Hundred value - * @property {number} OPRC_YourAppVerIsLow_Hundred=1045 OPRC_YourAppVerIsLow_Hundred value - * @property {number} OPRC_RoomHadClosed_Hundred=1053 OPRC_RoomHadClosed_Hundred value - * @property {number} OPRC_SceneServerMaintain_Hundred=1054 OPRC_SceneServerMaintain_Hundred value - * @property {number} OPRC_CoinNotEnough_Hundred=1056 OPRC_CoinNotEnough_Hundred value - * @property {number} OPRC_CoinTooMore_Hundred=1058 OPRC_CoinTooMore_Hundred value - * @property {number} OPRC_RoomGameTimes_Hundred=1103 OPRC_RoomGameTimes_Hundred value - * @property {number} OPRC_MustBindPromoter_Hundred=1113 OPRC_MustBindPromoter_Hundred value - */ - gamehall.OpResultCode_Hundred = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "OPRC_Sucess_Hundred"] = 0; - values[valuesById[1] = "OPRC_Error_Hundred"] = 1; - values[valuesById[1044] = "OPRC_YourResVerIsLow_Hundred"] = 1044; - values[valuesById[1045] = "OPRC_YourAppVerIsLow_Hundred"] = 1045; - values[valuesById[1053] = "OPRC_RoomHadClosed_Hundred"] = 1053; - values[valuesById[1054] = "OPRC_SceneServerMaintain_Hundred"] = 1054; - values[valuesById[1056] = "OPRC_CoinNotEnough_Hundred"] = 1056; - values[valuesById[1058] = "OPRC_CoinTooMore_Hundred"] = 1058; - values[valuesById[1103] = "OPRC_RoomGameTimes_Hundred"] = 1103; - values[valuesById[1113] = "OPRC_MustBindPromoter_Hundred"] = 1113; - return values; - })(); - - /** - * HundredScenePacketID enum. - * @name gamehall.HundredScenePacketID - * @enum {number} - * @property {number} PACKET_HundredScene_ZERO=0 PACKET_HundredScene_ZERO value - * @property {number} PACKET_CS_HUNDREDSCENE_OP=2380 PACKET_CS_HUNDREDSCENE_OP value - * @property {number} PACKET_SC_HUNDREDSCENE_OP=2381 PACKET_SC_HUNDREDSCENE_OP value - * @property {number} PACKET_CS_HUNDREDSCENE_GETPLAYERNUM=2382 PACKET_CS_HUNDREDSCENE_GETPLAYERNUM value - * @property {number} PACKET_SC_HUNDREDSCENE_GETPLAYERNUM=2383 PACKET_SC_HUNDREDSCENE_GETPLAYERNUM value - * @property {number} PACKET_CS_GAMEJACKPOT=2384 PACKET_CS_GAMEJACKPOT value - * @property {number} PACKET_SC_GAMEJACKPOT=2385 PACKET_SC_GAMEJACKPOT value - * @property {number} PACKET_CS_GAMEHISTORYINFO=2386 PACKET_CS_GAMEHISTORYINFO value - * @property {number} PACKET_SC_GAMEPLAYERHISTORY=2387 PACKET_SC_GAMEPLAYERHISTORY value - * @property {number} PACKET_SC_GAMEBIGWINHISTORY=2388 PACKET_SC_GAMEBIGWINHISTORY value - * @property {number} PACKET_BD_GAMEJACKPOT=2389 PACKET_BD_GAMEJACKPOT value - */ - gamehall.HundredScenePacketID = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "PACKET_HundredScene_ZERO"] = 0; - values[valuesById[2380] = "PACKET_CS_HUNDREDSCENE_OP"] = 2380; - values[valuesById[2381] = "PACKET_SC_HUNDREDSCENE_OP"] = 2381; - values[valuesById[2382] = "PACKET_CS_HUNDREDSCENE_GETPLAYERNUM"] = 2382; - values[valuesById[2383] = "PACKET_SC_HUNDREDSCENE_GETPLAYERNUM"] = 2383; - values[valuesById[2384] = "PACKET_CS_GAMEJACKPOT"] = 2384; - values[valuesById[2385] = "PACKET_SC_GAMEJACKPOT"] = 2385; - values[valuesById[2386] = "PACKET_CS_GAMEHISTORYINFO"] = 2386; - values[valuesById[2387] = "PACKET_SC_GAMEPLAYERHISTORY"] = 2387; - values[valuesById[2388] = "PACKET_SC_GAMEBIGWINHISTORY"] = 2388; - values[valuesById[2389] = "PACKET_BD_GAMEJACKPOT"] = 2389; - return values; - })(); - - gamehall.CSHundredSceneOp = (function() { - - /** - * Properties of a CSHundredSceneOp. - * @memberof gamehall - * @interface ICSHundredSceneOp - * @property {number|null} [Id] CSHundredSceneOp Id - * @property {number|null} [OpType] CSHundredSceneOp OpType - * @property {Array.|null} [OpParams] CSHundredSceneOp OpParams - * @property {number|null} [ApkVer] CSHundredSceneOp ApkVer - * @property {number|null} [ResVer] CSHundredSceneOp ResVer - */ - - /** - * Constructs a new CSHundredSceneOp. - * @memberof gamehall - * @classdesc Represents a CSHundredSceneOp. - * @implements ICSHundredSceneOp - * @constructor - * @param {gamehall.ICSHundredSceneOp=} [properties] Properties to set - */ - function CSHundredSceneOp(properties) { - this.OpParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSHundredSceneOp Id. - * @member {number} Id - * @memberof gamehall.CSHundredSceneOp - * @instance - */ - CSHundredSceneOp.prototype.Id = 0; - - /** - * CSHundredSceneOp OpType. - * @member {number} OpType - * @memberof gamehall.CSHundredSceneOp - * @instance - */ - CSHundredSceneOp.prototype.OpType = 0; - - /** - * CSHundredSceneOp OpParams. - * @member {Array.} OpParams - * @memberof gamehall.CSHundredSceneOp - * @instance - */ - CSHundredSceneOp.prototype.OpParams = $util.emptyArray; - - /** - * CSHundredSceneOp ApkVer. - * @member {number} ApkVer - * @memberof gamehall.CSHundredSceneOp - * @instance - */ - CSHundredSceneOp.prototype.ApkVer = 0; - - /** - * CSHundredSceneOp ResVer. - * @member {number} ResVer - * @memberof gamehall.CSHundredSceneOp - * @instance - */ - CSHundredSceneOp.prototype.ResVer = 0; - - /** - * Creates a new CSHundredSceneOp instance using the specified properties. - * @function create - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {gamehall.ICSHundredSceneOp=} [properties] Properties to set - * @returns {gamehall.CSHundredSceneOp} CSHundredSceneOp instance - */ - CSHundredSceneOp.create = function create(properties) { - return new CSHundredSceneOp(properties); - }; - - /** - * Encodes the specified CSHundredSceneOp message. Does not implicitly {@link gamehall.CSHundredSceneOp.verify|verify} messages. - * @function encode - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {gamehall.ICSHundredSceneOp} message CSHundredSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneOp.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.Id); - if (message.OpType != null && Object.hasOwnProperty.call(message, "OpType")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.OpType); - if (message.OpParams != null && message.OpParams.length) { - writer.uint32(/* id 3, wireType 2 =*/26).fork(); - for (var i = 0; i < message.OpParams.length; ++i) - writer.int32(message.OpParams[i]); - writer.ldelim(); - } - if (message.ApkVer != null && Object.hasOwnProperty.call(message, "ApkVer")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.ApkVer); - if (message.ResVer != null && Object.hasOwnProperty.call(message, "ResVer")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.ResVer); - return writer; - }; - - /** - * Encodes the specified CSHundredSceneOp message, length delimited. Does not implicitly {@link gamehall.CSHundredSceneOp.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {gamehall.ICSHundredSceneOp} message CSHundredSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneOp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSHundredSceneOp message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSHundredSceneOp} CSHundredSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneOp.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSHundredSceneOp(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.Id = reader.int32(); - break; - } - case 2: { - message.OpType = reader.int32(); - break; - } - case 3: { - if (!(message.OpParams && message.OpParams.length)) - message.OpParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OpParams.push(reader.int32()); - } else - message.OpParams.push(reader.int32()); - break; - } - case 4: { - message.ApkVer = reader.int32(); - break; - } - case 5: { - message.ResVer = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSHundredSceneOp message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSHundredSceneOp} CSHundredSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneOp.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSHundredSceneOp message. - * @function verify - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSHundredSceneOp.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpType != null && message.hasOwnProperty("OpType")) - if (!$util.isInteger(message.OpType)) - return "OpType: integer expected"; - if (message.OpParams != null && message.hasOwnProperty("OpParams")) { - if (!Array.isArray(message.OpParams)) - return "OpParams: array expected"; - for (var i = 0; i < message.OpParams.length; ++i) - if (!$util.isInteger(message.OpParams[i])) - return "OpParams: integer[] expected"; - } - if (message.ApkVer != null && message.hasOwnProperty("ApkVer")) - if (!$util.isInteger(message.ApkVer)) - return "ApkVer: integer expected"; - if (message.ResVer != null && message.hasOwnProperty("ResVer")) - if (!$util.isInteger(message.ResVer)) - return "ResVer: integer expected"; - return null; - }; - - /** - * Creates a CSHundredSceneOp message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSHundredSceneOp} CSHundredSceneOp - */ - CSHundredSceneOp.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSHundredSceneOp) - return object; - var message = new $root.gamehall.CSHundredSceneOp(); - if (object.Id != null) - message.Id = object.Id | 0; - if (object.OpType != null) - message.OpType = object.OpType | 0; - if (object.OpParams) { - if (!Array.isArray(object.OpParams)) - throw TypeError(".gamehall.CSHundredSceneOp.OpParams: array expected"); - message.OpParams = []; - for (var i = 0; i < object.OpParams.length; ++i) - message.OpParams[i] = object.OpParams[i] | 0; - } - if (object.ApkVer != null) - message.ApkVer = object.ApkVer | 0; - if (object.ResVer != null) - message.ResVer = object.ResVer | 0; - return message; - }; - - /** - * Creates a plain object from a CSHundredSceneOp message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {gamehall.CSHundredSceneOp} message CSHundredSceneOp - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSHundredSceneOp.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OpParams = []; - if (options.defaults) { - object.Id = 0; - object.OpType = 0; - object.ApkVer = 0; - object.ResVer = 0; - } - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpType != null && message.hasOwnProperty("OpType")) - object.OpType = message.OpType; - if (message.OpParams && message.OpParams.length) { - object.OpParams = []; - for (var j = 0; j < message.OpParams.length; ++j) - object.OpParams[j] = message.OpParams[j]; - } - if (message.ApkVer != null && message.hasOwnProperty("ApkVer")) - object.ApkVer = message.ApkVer; - if (message.ResVer != null && message.hasOwnProperty("ResVer")) - object.ResVer = message.ResVer; - return object; - }; - - /** - * Converts this CSHundredSceneOp to JSON. - * @function toJSON - * @memberof gamehall.CSHundredSceneOp - * @instance - * @returns {Object.} JSON object - */ - CSHundredSceneOp.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSHundredSceneOp - * @function getTypeUrl - * @memberof gamehall.CSHundredSceneOp - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSHundredSceneOp.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSHundredSceneOp"; - }; - - return CSHundredSceneOp; - })(); - - gamehall.SCHundredSceneOp = (function() { - - /** - * Properties of a SCHundredSceneOp. - * @memberof gamehall - * @interface ISCHundredSceneOp - * @property {gamehall.OpResultCode_Hundred|null} [OpCode] SCHundredSceneOp OpCode - * @property {number|null} [Id] SCHundredSceneOp Id - * @property {number|null} [OpType] SCHundredSceneOp OpType - * @property {Array.|null} [OpParams] SCHundredSceneOp OpParams - * @property {number|null} [MinApkVer] SCHundredSceneOp MinApkVer - * @property {number|null} [LatestApkVer] SCHundredSceneOp LatestApkVer - * @property {number|null} [MinResVer] SCHundredSceneOp MinResVer - * @property {number|null} [LatestResVer] SCHundredSceneOp LatestResVer - */ - - /** - * Constructs a new SCHundredSceneOp. - * @memberof gamehall - * @classdesc Represents a SCHundredSceneOp. - * @implements ISCHundredSceneOp - * @constructor - * @param {gamehall.ISCHundredSceneOp=} [properties] Properties to set - */ - function SCHundredSceneOp(properties) { - this.OpParams = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCHundredSceneOp OpCode. - * @member {gamehall.OpResultCode_Hundred} OpCode - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.OpCode = 0; - - /** - * SCHundredSceneOp Id. - * @member {number} Id - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.Id = 0; - - /** - * SCHundredSceneOp OpType. - * @member {number} OpType - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.OpType = 0; - - /** - * SCHundredSceneOp OpParams. - * @member {Array.} OpParams - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.OpParams = $util.emptyArray; - - /** - * SCHundredSceneOp MinApkVer. - * @member {number} MinApkVer - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.MinApkVer = 0; - - /** - * SCHundredSceneOp LatestApkVer. - * @member {number} LatestApkVer - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.LatestApkVer = 0; - - /** - * SCHundredSceneOp MinResVer. - * @member {number} MinResVer - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.MinResVer = 0; - - /** - * SCHundredSceneOp LatestResVer. - * @member {number} LatestResVer - * @memberof gamehall.SCHundredSceneOp - * @instance - */ - SCHundredSceneOp.prototype.LatestResVer = 0; - - /** - * Creates a new SCHundredSceneOp instance using the specified properties. - * @function create - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {gamehall.ISCHundredSceneOp=} [properties] Properties to set - * @returns {gamehall.SCHundredSceneOp} SCHundredSceneOp instance - */ - SCHundredSceneOp.create = function create(properties) { - return new SCHundredSceneOp(properties); - }; - - /** - * Encodes the specified SCHundredSceneOp message. Does not implicitly {@link gamehall.SCHundredSceneOp.verify|verify} messages. - * @function encode - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {gamehall.ISCHundredSceneOp} message SCHundredSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHundredSceneOp.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.OpCode != null && Object.hasOwnProperty.call(message, "OpCode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.OpCode); - if (message.Id != null && Object.hasOwnProperty.call(message, "Id")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.Id); - if (message.OpType != null && Object.hasOwnProperty.call(message, "OpType")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.OpType); - if (message.OpParams != null && message.OpParams.length) { - writer.uint32(/* id 4, wireType 2 =*/34).fork(); - for (var i = 0; i < message.OpParams.length; ++i) - writer.int32(message.OpParams[i]); - writer.ldelim(); - } - if (message.MinApkVer != null && Object.hasOwnProperty.call(message, "MinApkVer")) - writer.uint32(/* id 5, wireType 0 =*/40).int32(message.MinApkVer); - if (message.LatestApkVer != null && Object.hasOwnProperty.call(message, "LatestApkVer")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.LatestApkVer); - if (message.MinResVer != null && Object.hasOwnProperty.call(message, "MinResVer")) - writer.uint32(/* id 7, wireType 0 =*/56).int32(message.MinResVer); - if (message.LatestResVer != null && Object.hasOwnProperty.call(message, "LatestResVer")) - writer.uint32(/* id 8, wireType 0 =*/64).int32(message.LatestResVer); - return writer; - }; - - /** - * Encodes the specified SCHundredSceneOp message, length delimited. Does not implicitly {@link gamehall.SCHundredSceneOp.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {gamehall.ISCHundredSceneOp} message SCHundredSceneOp message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHundredSceneOp.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCHundredSceneOp message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCHundredSceneOp} SCHundredSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHundredSceneOp.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCHundredSceneOp(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.OpCode = reader.int32(); - break; - } - case 2: { - message.Id = reader.int32(); - break; - } - case 3: { - message.OpType = reader.int32(); - break; - } - case 4: { - if (!(message.OpParams && message.OpParams.length)) - message.OpParams = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.OpParams.push(reader.int32()); - } else - message.OpParams.push(reader.int32()); - break; - } - case 5: { - message.MinApkVer = reader.int32(); - break; - } - case 6: { - message.LatestApkVer = reader.int32(); - break; - } - case 7: { - message.MinResVer = reader.int32(); - break; - } - case 8: { - message.LatestResVer = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCHundredSceneOp message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCHundredSceneOp} SCHundredSceneOp - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHundredSceneOp.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCHundredSceneOp message. - * @function verify - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCHundredSceneOp.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - switch (message.OpCode) { - default: - return "OpCode: enum value expected"; - case 0: - case 1: - case 1044: - case 1045: - case 1053: - case 1054: - case 1056: - case 1058: - case 1103: - case 1113: - break; - } - if (message.Id != null && message.hasOwnProperty("Id")) - if (!$util.isInteger(message.Id)) - return "Id: integer expected"; - if (message.OpType != null && message.hasOwnProperty("OpType")) - if (!$util.isInteger(message.OpType)) - return "OpType: integer expected"; - if (message.OpParams != null && message.hasOwnProperty("OpParams")) { - if (!Array.isArray(message.OpParams)) - return "OpParams: array expected"; - for (var i = 0; i < message.OpParams.length; ++i) - if (!$util.isInteger(message.OpParams[i])) - return "OpParams: integer[] expected"; - } - if (message.MinApkVer != null && message.hasOwnProperty("MinApkVer")) - if (!$util.isInteger(message.MinApkVer)) - return "MinApkVer: integer expected"; - if (message.LatestApkVer != null && message.hasOwnProperty("LatestApkVer")) - if (!$util.isInteger(message.LatestApkVer)) - return "LatestApkVer: integer expected"; - if (message.MinResVer != null && message.hasOwnProperty("MinResVer")) - if (!$util.isInteger(message.MinResVer)) - return "MinResVer: integer expected"; - if (message.LatestResVer != null && message.hasOwnProperty("LatestResVer")) - if (!$util.isInteger(message.LatestResVer)) - return "LatestResVer: integer expected"; - return null; - }; - - /** - * Creates a SCHundredSceneOp message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCHundredSceneOp} SCHundredSceneOp - */ - SCHundredSceneOp.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCHundredSceneOp) - return object; - var message = new $root.gamehall.SCHundredSceneOp(); - switch (object.OpCode) { - default: - if (typeof object.OpCode === "number") { - message.OpCode = object.OpCode; - break; - } - break; - case "OPRC_Sucess_Hundred": - case 0: - message.OpCode = 0; - break; - case "OPRC_Error_Hundred": - case 1: - message.OpCode = 1; - break; - case "OPRC_YourResVerIsLow_Hundred": - case 1044: - message.OpCode = 1044; - break; - case "OPRC_YourAppVerIsLow_Hundred": - case 1045: - message.OpCode = 1045; - break; - case "OPRC_RoomHadClosed_Hundred": - case 1053: - message.OpCode = 1053; - break; - case "OPRC_SceneServerMaintain_Hundred": - case 1054: - message.OpCode = 1054; - break; - case "OPRC_CoinNotEnough_Hundred": - case 1056: - message.OpCode = 1056; - break; - case "OPRC_CoinTooMore_Hundred": - case 1058: - message.OpCode = 1058; - break; - case "OPRC_RoomGameTimes_Hundred": - case 1103: - message.OpCode = 1103; - break; - case "OPRC_MustBindPromoter_Hundred": - case 1113: - message.OpCode = 1113; - break; - } - if (object.Id != null) - message.Id = object.Id | 0; - if (object.OpType != null) - message.OpType = object.OpType | 0; - if (object.OpParams) { - if (!Array.isArray(object.OpParams)) - throw TypeError(".gamehall.SCHundredSceneOp.OpParams: array expected"); - message.OpParams = []; - for (var i = 0; i < object.OpParams.length; ++i) - message.OpParams[i] = object.OpParams[i] | 0; - } - if (object.MinApkVer != null) - message.MinApkVer = object.MinApkVer | 0; - if (object.LatestApkVer != null) - message.LatestApkVer = object.LatestApkVer | 0; - if (object.MinResVer != null) - message.MinResVer = object.MinResVer | 0; - if (object.LatestResVer != null) - message.LatestResVer = object.LatestResVer | 0; - return message; - }; - - /** - * Creates a plain object from a SCHundredSceneOp message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {gamehall.SCHundredSceneOp} message SCHundredSceneOp - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCHundredSceneOp.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.OpParams = []; - if (options.defaults) { - object.OpCode = options.enums === String ? "OPRC_Sucess_Hundred" : 0; - object.Id = 0; - object.OpType = 0; - object.MinApkVer = 0; - object.LatestApkVer = 0; - object.MinResVer = 0; - object.LatestResVer = 0; - } - if (message.OpCode != null && message.hasOwnProperty("OpCode")) - object.OpCode = options.enums === String ? $root.gamehall.OpResultCode_Hundred[message.OpCode] === undefined ? message.OpCode : $root.gamehall.OpResultCode_Hundred[message.OpCode] : message.OpCode; - if (message.Id != null && message.hasOwnProperty("Id")) - object.Id = message.Id; - if (message.OpType != null && message.hasOwnProperty("OpType")) - object.OpType = message.OpType; - if (message.OpParams && message.OpParams.length) { - object.OpParams = []; - for (var j = 0; j < message.OpParams.length; ++j) - object.OpParams[j] = message.OpParams[j]; - } - if (message.MinApkVer != null && message.hasOwnProperty("MinApkVer")) - object.MinApkVer = message.MinApkVer; - if (message.LatestApkVer != null && message.hasOwnProperty("LatestApkVer")) - object.LatestApkVer = message.LatestApkVer; - if (message.MinResVer != null && message.hasOwnProperty("MinResVer")) - object.MinResVer = message.MinResVer; - if (message.LatestResVer != null && message.hasOwnProperty("LatestResVer")) - object.LatestResVer = message.LatestResVer; - return object; - }; - - /** - * Converts this SCHundredSceneOp to JSON. - * @function toJSON - * @memberof gamehall.SCHundredSceneOp - * @instance - * @returns {Object.} JSON object - */ - SCHundredSceneOp.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCHundredSceneOp - * @function getTypeUrl - * @memberof gamehall.SCHundredSceneOp - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCHundredSceneOp.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCHundredSceneOp"; - }; - - return SCHundredSceneOp; - })(); - - gamehall.CSHundredSceneGetPlayerNum = (function() { - - /** - * Properties of a CSHundredSceneGetPlayerNum. - * @memberof gamehall - * @interface ICSHundredSceneGetPlayerNum - * @property {number|null} [GameId] CSHundredSceneGetPlayerNum GameId - * @property {number|null} [GameModel] CSHundredSceneGetPlayerNum GameModel - */ - - /** - * Constructs a new CSHundredSceneGetPlayerNum. - * @memberof gamehall - * @classdesc Represents a CSHundredSceneGetPlayerNum. - * @implements ICSHundredSceneGetPlayerNum - * @constructor - * @param {gamehall.ICSHundredSceneGetPlayerNum=} [properties] Properties to set - */ - function CSHundredSceneGetPlayerNum(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSHundredSceneGetPlayerNum GameId. - * @member {number} GameId - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @instance - */ - CSHundredSceneGetPlayerNum.prototype.GameId = 0; - - /** - * CSHundredSceneGetPlayerNum GameModel. - * @member {number} GameModel - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @instance - */ - CSHundredSceneGetPlayerNum.prototype.GameModel = 0; - - /** - * Creates a new CSHundredSceneGetPlayerNum instance using the specified properties. - * @function create - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {gamehall.ICSHundredSceneGetPlayerNum=} [properties] Properties to set - * @returns {gamehall.CSHundredSceneGetPlayerNum} CSHundredSceneGetPlayerNum instance - */ - CSHundredSceneGetPlayerNum.create = function create(properties) { - return new CSHundredSceneGetPlayerNum(properties); - }; - - /** - * Encodes the specified CSHundredSceneGetPlayerNum message. Does not implicitly {@link gamehall.CSHundredSceneGetPlayerNum.verify|verify} messages. - * @function encode - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {gamehall.ICSHundredSceneGetPlayerNum} message CSHundredSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneGetPlayerNum.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.GameModel != null && Object.hasOwnProperty.call(message, "GameModel")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameModel); - return writer; - }; - - /** - * Encodes the specified CSHundredSceneGetPlayerNum message, length delimited. Does not implicitly {@link gamehall.CSHundredSceneGetPlayerNum.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {gamehall.ICSHundredSceneGetPlayerNum} message CSHundredSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneGetPlayerNum.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSHundredSceneGetPlayerNum message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSHundredSceneGetPlayerNum} CSHundredSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneGetPlayerNum.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSHundredSceneGetPlayerNum(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.GameModel = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSHundredSceneGetPlayerNum message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSHundredSceneGetPlayerNum} CSHundredSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneGetPlayerNum.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSHundredSceneGetPlayerNum message. - * @function verify - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSHundredSceneGetPlayerNum.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.GameModel != null && message.hasOwnProperty("GameModel")) - if (!$util.isInteger(message.GameModel)) - return "GameModel: integer expected"; - return null; - }; - - /** - * Creates a CSHundredSceneGetPlayerNum message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSHundredSceneGetPlayerNum} CSHundredSceneGetPlayerNum - */ - CSHundredSceneGetPlayerNum.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSHundredSceneGetPlayerNum) - return object; - var message = new $root.gamehall.CSHundredSceneGetPlayerNum(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.GameModel != null) - message.GameModel = object.GameModel | 0; - return message; - }; - - /** - * Creates a plain object from a CSHundredSceneGetPlayerNum message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {gamehall.CSHundredSceneGetPlayerNum} message CSHundredSceneGetPlayerNum - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSHundredSceneGetPlayerNum.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameId = 0; - object.GameModel = 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.GameModel != null && message.hasOwnProperty("GameModel")) - object.GameModel = message.GameModel; - return object; - }; - - /** - * Converts this CSHundredSceneGetPlayerNum to JSON. - * @function toJSON - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @instance - * @returns {Object.} JSON object - */ - CSHundredSceneGetPlayerNum.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSHundredSceneGetPlayerNum - * @function getTypeUrl - * @memberof gamehall.CSHundredSceneGetPlayerNum - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSHundredSceneGetPlayerNum.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSHundredSceneGetPlayerNum"; - }; - - return CSHundredSceneGetPlayerNum; - })(); - - gamehall.SCHundredSceneGetPlayerNum = (function() { - - /** - * Properties of a SCHundredSceneGetPlayerNum. - * @memberof gamehall - * @interface ISCHundredSceneGetPlayerNum - * @property {Array.|null} [Nums] SCHundredSceneGetPlayerNum Nums - */ - - /** - * Constructs a new SCHundredSceneGetPlayerNum. - * @memberof gamehall - * @classdesc Represents a SCHundredSceneGetPlayerNum. - * @implements ISCHundredSceneGetPlayerNum - * @constructor - * @param {gamehall.ISCHundredSceneGetPlayerNum=} [properties] Properties to set - */ - function SCHundredSceneGetPlayerNum(properties) { - this.Nums = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCHundredSceneGetPlayerNum Nums. - * @member {Array.} Nums - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @instance - */ - SCHundredSceneGetPlayerNum.prototype.Nums = $util.emptyArray; - - /** - * Creates a new SCHundredSceneGetPlayerNum instance using the specified properties. - * @function create - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {gamehall.ISCHundredSceneGetPlayerNum=} [properties] Properties to set - * @returns {gamehall.SCHundredSceneGetPlayerNum} SCHundredSceneGetPlayerNum instance - */ - SCHundredSceneGetPlayerNum.create = function create(properties) { - return new SCHundredSceneGetPlayerNum(properties); - }; - - /** - * Encodes the specified SCHundredSceneGetPlayerNum message. Does not implicitly {@link gamehall.SCHundredSceneGetPlayerNum.verify|verify} messages. - * @function encode - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {gamehall.ISCHundredSceneGetPlayerNum} message SCHundredSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHundredSceneGetPlayerNum.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.Nums != null && message.Nums.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.Nums.length; ++i) - writer.int32(message.Nums[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified SCHundredSceneGetPlayerNum message, length delimited. Does not implicitly {@link gamehall.SCHundredSceneGetPlayerNum.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {gamehall.ISCHundredSceneGetPlayerNum} message SCHundredSceneGetPlayerNum message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHundredSceneGetPlayerNum.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCHundredSceneGetPlayerNum message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCHundredSceneGetPlayerNum} SCHundredSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHundredSceneGetPlayerNum.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCHundredSceneGetPlayerNum(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.Nums && message.Nums.length)) - message.Nums = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Nums.push(reader.int32()); - } else - message.Nums.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCHundredSceneGetPlayerNum message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCHundredSceneGetPlayerNum} SCHundredSceneGetPlayerNum - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHundredSceneGetPlayerNum.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCHundredSceneGetPlayerNum message. - * @function verify - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCHundredSceneGetPlayerNum.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.Nums != null && message.hasOwnProperty("Nums")) { - if (!Array.isArray(message.Nums)) - return "Nums: array expected"; - for (var i = 0; i < message.Nums.length; ++i) - if (!$util.isInteger(message.Nums[i])) - return "Nums: integer[] expected"; - } - return null; - }; - - /** - * Creates a SCHundredSceneGetPlayerNum message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCHundredSceneGetPlayerNum} SCHundredSceneGetPlayerNum - */ - SCHundredSceneGetPlayerNum.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCHundredSceneGetPlayerNum) - return object; - var message = new $root.gamehall.SCHundredSceneGetPlayerNum(); - if (object.Nums) { - if (!Array.isArray(object.Nums)) - throw TypeError(".gamehall.SCHundredSceneGetPlayerNum.Nums: array expected"); - message.Nums = []; - for (var i = 0; i < object.Nums.length; ++i) - message.Nums[i] = object.Nums[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a SCHundredSceneGetPlayerNum message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {gamehall.SCHundredSceneGetPlayerNum} message SCHundredSceneGetPlayerNum - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCHundredSceneGetPlayerNum.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Nums = []; - if (message.Nums && message.Nums.length) { - object.Nums = []; - for (var j = 0; j < message.Nums.length; ++j) - object.Nums[j] = message.Nums[j]; - } - return object; - }; - - /** - * Converts this SCHundredSceneGetPlayerNum to JSON. - * @function toJSON - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @instance - * @returns {Object.} JSON object - */ - SCHundredSceneGetPlayerNum.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCHundredSceneGetPlayerNum - * @function getTypeUrl - * @memberof gamehall.SCHundredSceneGetPlayerNum - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCHundredSceneGetPlayerNum.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCHundredSceneGetPlayerNum"; - }; - - return SCHundredSceneGetPlayerNum; - })(); - - gamehall.CSHundredSceneGetGameJackpot = (function() { - - /** - * Properties of a CSHundredSceneGetGameJackpot. - * @memberof gamehall - * @interface ICSHundredSceneGetGameJackpot - */ - - /** - * Constructs a new CSHundredSceneGetGameJackpot. - * @memberof gamehall - * @classdesc Represents a CSHundredSceneGetGameJackpot. - * @implements ICSHundredSceneGetGameJackpot - * @constructor - * @param {gamehall.ICSHundredSceneGetGameJackpot=} [properties] Properties to set - */ - function CSHundredSceneGetGameJackpot(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Creates a new CSHundredSceneGetGameJackpot instance using the specified properties. - * @function create - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {gamehall.ICSHundredSceneGetGameJackpot=} [properties] Properties to set - * @returns {gamehall.CSHundredSceneGetGameJackpot} CSHundredSceneGetGameJackpot instance - */ - CSHundredSceneGetGameJackpot.create = function create(properties) { - return new CSHundredSceneGetGameJackpot(properties); - }; - - /** - * Encodes the specified CSHundredSceneGetGameJackpot message. Does not implicitly {@link gamehall.CSHundredSceneGetGameJackpot.verify|verify} messages. - * @function encode - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {gamehall.ICSHundredSceneGetGameJackpot} message CSHundredSceneGetGameJackpot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneGetGameJackpot.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified CSHundredSceneGetGameJackpot message, length delimited. Does not implicitly {@link gamehall.CSHundredSceneGetGameJackpot.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {gamehall.ICSHundredSceneGetGameJackpot} message CSHundredSceneGetGameJackpot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneGetGameJackpot.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSHundredSceneGetGameJackpot message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSHundredSceneGetGameJackpot} CSHundredSceneGetGameJackpot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneGetGameJackpot.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSHundredSceneGetGameJackpot(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSHundredSceneGetGameJackpot message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSHundredSceneGetGameJackpot} CSHundredSceneGetGameJackpot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneGetGameJackpot.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSHundredSceneGetGameJackpot message. - * @function verify - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSHundredSceneGetGameJackpot.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a CSHundredSceneGetGameJackpot message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSHundredSceneGetGameJackpot} CSHundredSceneGetGameJackpot - */ - CSHundredSceneGetGameJackpot.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSHundredSceneGetGameJackpot) - return object; - return new $root.gamehall.CSHundredSceneGetGameJackpot(); - }; - - /** - * Creates a plain object from a CSHundredSceneGetGameJackpot message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {gamehall.CSHundredSceneGetGameJackpot} message CSHundredSceneGetGameJackpot - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSHundredSceneGetGameJackpot.toObject = function toObject() { - return {}; - }; - - /** - * Converts this CSHundredSceneGetGameJackpot to JSON. - * @function toJSON - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @instance - * @returns {Object.} JSON object - */ - CSHundredSceneGetGameJackpot.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSHundredSceneGetGameJackpot - * @function getTypeUrl - * @memberof gamehall.CSHundredSceneGetGameJackpot - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSHundredSceneGetGameJackpot.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSHundredSceneGetGameJackpot"; - }; - - return CSHundredSceneGetGameJackpot; - })(); - - gamehall.GameJackpotFundInfo = (function() { - - /** - * Properties of a GameJackpotFundInfo. - * @memberof gamehall - * @interface IGameJackpotFundInfo - * @property {number|null} [GameFreeId] GameJackpotFundInfo GameFreeId - * @property {number|Long|null} [JackPotFund] GameJackpotFundInfo JackPotFund - */ - - /** - * Constructs a new GameJackpotFundInfo. - * @memberof gamehall - * @classdesc Represents a GameJackpotFundInfo. - * @implements IGameJackpotFundInfo - * @constructor - * @param {gamehall.IGameJackpotFundInfo=} [properties] Properties to set - */ - function GameJackpotFundInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GameJackpotFundInfo GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.GameJackpotFundInfo - * @instance - */ - GameJackpotFundInfo.prototype.GameFreeId = 0; - - /** - * GameJackpotFundInfo JackPotFund. - * @member {number|Long} JackPotFund - * @memberof gamehall.GameJackpotFundInfo - * @instance - */ - GameJackpotFundInfo.prototype.JackPotFund = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new GameJackpotFundInfo instance using the specified properties. - * @function create - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {gamehall.IGameJackpotFundInfo=} [properties] Properties to set - * @returns {gamehall.GameJackpotFundInfo} GameJackpotFundInfo instance - */ - GameJackpotFundInfo.create = function create(properties) { - return new GameJackpotFundInfo(properties); - }; - - /** - * Encodes the specified GameJackpotFundInfo message. Does not implicitly {@link gamehall.GameJackpotFundInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {gamehall.IGameJackpotFundInfo} message GameJackpotFundInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameJackpotFundInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameFreeId); - if (message.JackPotFund != null && Object.hasOwnProperty.call(message, "JackPotFund")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.JackPotFund); - return writer; - }; - - /** - * Encodes the specified GameJackpotFundInfo message, length delimited. Does not implicitly {@link gamehall.GameJackpotFundInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {gamehall.IGameJackpotFundInfo} message GameJackpotFundInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameJackpotFundInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GameJackpotFundInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.GameJackpotFundInfo} GameJackpotFundInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameJackpotFundInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.GameJackpotFundInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameFreeId = reader.int32(); - break; - } - case 2: { - message.JackPotFund = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GameJackpotFundInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.GameJackpotFundInfo} GameJackpotFundInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameJackpotFundInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GameJackpotFundInfo message. - * @function verify - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GameJackpotFundInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - if (message.JackPotFund != null && message.hasOwnProperty("JackPotFund")) - if (!$util.isInteger(message.JackPotFund) && !(message.JackPotFund && $util.isInteger(message.JackPotFund.low) && $util.isInteger(message.JackPotFund.high))) - return "JackPotFund: integer|Long expected"; - return null; - }; - - /** - * Creates a GameJackpotFundInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.GameJackpotFundInfo} GameJackpotFundInfo - */ - GameJackpotFundInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.GameJackpotFundInfo) - return object; - var message = new $root.gamehall.GameJackpotFundInfo(); - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - if (object.JackPotFund != null) - if ($util.Long) - (message.JackPotFund = $util.Long.fromValue(object.JackPotFund)).unsigned = false; - else if (typeof object.JackPotFund === "string") - message.JackPotFund = parseInt(object.JackPotFund, 10); - else if (typeof object.JackPotFund === "number") - message.JackPotFund = object.JackPotFund; - else if (typeof object.JackPotFund === "object") - message.JackPotFund = new $util.LongBits(object.JackPotFund.low >>> 0, object.JackPotFund.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a GameJackpotFundInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {gamehall.GameJackpotFundInfo} message GameJackpotFundInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GameJackpotFundInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameFreeId = 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.JackPotFund = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.JackPotFund = options.longs === String ? "0" : 0; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - if (message.JackPotFund != null && message.hasOwnProperty("JackPotFund")) - if (typeof message.JackPotFund === "number") - object.JackPotFund = options.longs === String ? String(message.JackPotFund) : message.JackPotFund; - else - object.JackPotFund = options.longs === String ? $util.Long.prototype.toString.call(message.JackPotFund) : options.longs === Number ? new $util.LongBits(message.JackPotFund.low >>> 0, message.JackPotFund.high >>> 0).toNumber() : message.JackPotFund; - return object; - }; - - /** - * Converts this GameJackpotFundInfo to JSON. - * @function toJSON - * @memberof gamehall.GameJackpotFundInfo - * @instance - * @returns {Object.} JSON object - */ - GameJackpotFundInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GameJackpotFundInfo - * @function getTypeUrl - * @memberof gamehall.GameJackpotFundInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GameJackpotFundInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.GameJackpotFundInfo"; - }; - - return GameJackpotFundInfo; - })(); - - gamehall.SCHundredSceneGetGameJackpot = (function() { - - /** - * Properties of a SCHundredSceneGetGameJackpot. - * @memberof gamehall - * @interface ISCHundredSceneGetGameJackpot - * @property {Array.|null} [GameJackpotFund] SCHundredSceneGetGameJackpot GameJackpotFund - */ - - /** - * Constructs a new SCHundredSceneGetGameJackpot. - * @memberof gamehall - * @classdesc Represents a SCHundredSceneGetGameJackpot. - * @implements ISCHundredSceneGetGameJackpot - * @constructor - * @param {gamehall.ISCHundredSceneGetGameJackpot=} [properties] Properties to set - */ - function SCHundredSceneGetGameJackpot(properties) { - this.GameJackpotFund = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCHundredSceneGetGameJackpot GameJackpotFund. - * @member {Array.} GameJackpotFund - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @instance - */ - SCHundredSceneGetGameJackpot.prototype.GameJackpotFund = $util.emptyArray; - - /** - * Creates a new SCHundredSceneGetGameJackpot instance using the specified properties. - * @function create - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {gamehall.ISCHundredSceneGetGameJackpot=} [properties] Properties to set - * @returns {gamehall.SCHundredSceneGetGameJackpot} SCHundredSceneGetGameJackpot instance - */ - SCHundredSceneGetGameJackpot.create = function create(properties) { - return new SCHundredSceneGetGameJackpot(properties); - }; - - /** - * Encodes the specified SCHundredSceneGetGameJackpot message. Does not implicitly {@link gamehall.SCHundredSceneGetGameJackpot.verify|verify} messages. - * @function encode - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {gamehall.ISCHundredSceneGetGameJackpot} message SCHundredSceneGetGameJackpot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHundredSceneGetGameJackpot.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameJackpotFund != null && message.GameJackpotFund.length) - for (var i = 0; i < message.GameJackpotFund.length; ++i) - $root.gamehall.GameJackpotFundInfo.encode(message.GameJackpotFund[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCHundredSceneGetGameJackpot message, length delimited. Does not implicitly {@link gamehall.SCHundredSceneGetGameJackpot.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {gamehall.ISCHundredSceneGetGameJackpot} message SCHundredSceneGetGameJackpot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCHundredSceneGetGameJackpot.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCHundredSceneGetGameJackpot message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCHundredSceneGetGameJackpot} SCHundredSceneGetGameJackpot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHundredSceneGetGameJackpot.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCHundredSceneGetGameJackpot(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.GameJackpotFund && message.GameJackpotFund.length)) - message.GameJackpotFund = []; - message.GameJackpotFund.push($root.gamehall.GameJackpotFundInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCHundredSceneGetGameJackpot message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCHundredSceneGetGameJackpot} SCHundredSceneGetGameJackpot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCHundredSceneGetGameJackpot.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCHundredSceneGetGameJackpot message. - * @function verify - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCHundredSceneGetGameJackpot.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameJackpotFund != null && message.hasOwnProperty("GameJackpotFund")) { - if (!Array.isArray(message.GameJackpotFund)) - return "GameJackpotFund: array expected"; - for (var i = 0; i < message.GameJackpotFund.length; ++i) { - var error = $root.gamehall.GameJackpotFundInfo.verify(message.GameJackpotFund[i]); - if (error) - return "GameJackpotFund." + error; - } - } - return null; - }; - - /** - * Creates a SCHundredSceneGetGameJackpot message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCHundredSceneGetGameJackpot} SCHundredSceneGetGameJackpot - */ - SCHundredSceneGetGameJackpot.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCHundredSceneGetGameJackpot) - return object; - var message = new $root.gamehall.SCHundredSceneGetGameJackpot(); - if (object.GameJackpotFund) { - if (!Array.isArray(object.GameJackpotFund)) - throw TypeError(".gamehall.SCHundredSceneGetGameJackpot.GameJackpotFund: array expected"); - message.GameJackpotFund = []; - for (var i = 0; i < object.GameJackpotFund.length; ++i) { - if (typeof object.GameJackpotFund[i] !== "object") - throw TypeError(".gamehall.SCHundredSceneGetGameJackpot.GameJackpotFund: object expected"); - message.GameJackpotFund[i] = $root.gamehall.GameJackpotFundInfo.fromObject(object.GameJackpotFund[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCHundredSceneGetGameJackpot message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {gamehall.SCHundredSceneGetGameJackpot} message SCHundredSceneGetGameJackpot - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCHundredSceneGetGameJackpot.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.GameJackpotFund = []; - if (message.GameJackpotFund && message.GameJackpotFund.length) { - object.GameJackpotFund = []; - for (var j = 0; j < message.GameJackpotFund.length; ++j) - object.GameJackpotFund[j] = $root.gamehall.GameJackpotFundInfo.toObject(message.GameJackpotFund[j], options); - } - return object; - }; - - /** - * Converts this SCHundredSceneGetGameJackpot to JSON. - * @function toJSON - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @instance - * @returns {Object.} JSON object - */ - SCHundredSceneGetGameJackpot.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCHundredSceneGetGameJackpot - * @function getTypeUrl - * @memberof gamehall.SCHundredSceneGetGameJackpot - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCHundredSceneGetGameJackpot.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCHundredSceneGetGameJackpot"; - }; - - return SCHundredSceneGetGameJackpot; - })(); - - gamehall.BroadcastGameJackpot = (function() { - - /** - * Properties of a BroadcastGameJackpot. - * @memberof gamehall - * @interface IBroadcastGameJackpot - * @property {Array.|null} [JackpotFund] BroadcastGameJackpot JackpotFund - * @property {number|null} [GameFreeId] BroadcastGameJackpot GameFreeId - */ - - /** - * Constructs a new BroadcastGameJackpot. - * @memberof gamehall - * @classdesc Represents a BroadcastGameJackpot. - * @implements IBroadcastGameJackpot - * @constructor - * @param {gamehall.IBroadcastGameJackpot=} [properties] Properties to set - */ - function BroadcastGameJackpot(properties) { - this.JackpotFund = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * BroadcastGameJackpot JackpotFund. - * @member {Array.} JackpotFund - * @memberof gamehall.BroadcastGameJackpot - * @instance - */ - BroadcastGameJackpot.prototype.JackpotFund = $util.emptyArray; - - /** - * BroadcastGameJackpot GameFreeId. - * @member {number} GameFreeId - * @memberof gamehall.BroadcastGameJackpot - * @instance - */ - BroadcastGameJackpot.prototype.GameFreeId = 0; - - /** - * Creates a new BroadcastGameJackpot instance using the specified properties. - * @function create - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {gamehall.IBroadcastGameJackpot=} [properties] Properties to set - * @returns {gamehall.BroadcastGameJackpot} BroadcastGameJackpot instance - */ - BroadcastGameJackpot.create = function create(properties) { - return new BroadcastGameJackpot(properties); - }; - - /** - * Encodes the specified BroadcastGameJackpot message. Does not implicitly {@link gamehall.BroadcastGameJackpot.verify|verify} messages. - * @function encode - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {gamehall.IBroadcastGameJackpot} message BroadcastGameJackpot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BroadcastGameJackpot.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.JackpotFund != null && message.JackpotFund.length) { - writer.uint32(/* id 1, wireType 2 =*/10).fork(); - for (var i = 0; i < message.JackpotFund.length; ++i) - writer.int64(message.JackpotFund[i]); - writer.ldelim(); - } - if (message.GameFreeId != null && Object.hasOwnProperty.call(message, "GameFreeId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameFreeId); - return writer; - }; - - /** - * Encodes the specified BroadcastGameJackpot message, length delimited. Does not implicitly {@link gamehall.BroadcastGameJackpot.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {gamehall.IBroadcastGameJackpot} message BroadcastGameJackpot message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BroadcastGameJackpot.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a BroadcastGameJackpot message from the specified reader or buffer. - * @function decode - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.BroadcastGameJackpot} BroadcastGameJackpot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BroadcastGameJackpot.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.BroadcastGameJackpot(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.JackpotFund && message.JackpotFund.length)) - message.JackpotFund = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.JackpotFund.push(reader.int64()); - } else - message.JackpotFund.push(reader.int64()); - break; - } - case 2: { - message.GameFreeId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a BroadcastGameJackpot message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.BroadcastGameJackpot} BroadcastGameJackpot - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BroadcastGameJackpot.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a BroadcastGameJackpot message. - * @function verify - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BroadcastGameJackpot.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.JackpotFund != null && message.hasOwnProperty("JackpotFund")) { - if (!Array.isArray(message.JackpotFund)) - return "JackpotFund: array expected"; - for (var i = 0; i < message.JackpotFund.length; ++i) - if (!$util.isInteger(message.JackpotFund[i]) && !(message.JackpotFund[i] && $util.isInteger(message.JackpotFund[i].low) && $util.isInteger(message.JackpotFund[i].high))) - return "JackpotFund: integer|Long[] expected"; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - if (!$util.isInteger(message.GameFreeId)) - return "GameFreeId: integer expected"; - return null; - }; - - /** - * Creates a BroadcastGameJackpot message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {Object.} object Plain object - * @returns {gamehall.BroadcastGameJackpot} BroadcastGameJackpot - */ - BroadcastGameJackpot.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.BroadcastGameJackpot) - return object; - var message = new $root.gamehall.BroadcastGameJackpot(); - if (object.JackpotFund) { - if (!Array.isArray(object.JackpotFund)) - throw TypeError(".gamehall.BroadcastGameJackpot.JackpotFund: array expected"); - message.JackpotFund = []; - for (var i = 0; i < object.JackpotFund.length; ++i) - if ($util.Long) - (message.JackpotFund[i] = $util.Long.fromValue(object.JackpotFund[i])).unsigned = false; - else if (typeof object.JackpotFund[i] === "string") - message.JackpotFund[i] = parseInt(object.JackpotFund[i], 10); - else if (typeof object.JackpotFund[i] === "number") - message.JackpotFund[i] = object.JackpotFund[i]; - else if (typeof object.JackpotFund[i] === "object") - message.JackpotFund[i] = new $util.LongBits(object.JackpotFund[i].low >>> 0, object.JackpotFund[i].high >>> 0).toNumber(); - } - if (object.GameFreeId != null) - message.GameFreeId = object.GameFreeId | 0; - return message; - }; - - /** - * Creates a plain object from a BroadcastGameJackpot message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {gamehall.BroadcastGameJackpot} message BroadcastGameJackpot - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BroadcastGameJackpot.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.JackpotFund = []; - if (options.defaults) - object.GameFreeId = 0; - if (message.JackpotFund && message.JackpotFund.length) { - object.JackpotFund = []; - for (var j = 0; j < message.JackpotFund.length; ++j) - if (typeof message.JackpotFund[j] === "number") - object.JackpotFund[j] = options.longs === String ? String(message.JackpotFund[j]) : message.JackpotFund[j]; - else - object.JackpotFund[j] = options.longs === String ? $util.Long.prototype.toString.call(message.JackpotFund[j]) : options.longs === Number ? new $util.LongBits(message.JackpotFund[j].low >>> 0, message.JackpotFund[j].high >>> 0).toNumber() : message.JackpotFund[j]; - } - if (message.GameFreeId != null && message.hasOwnProperty("GameFreeId")) - object.GameFreeId = message.GameFreeId; - return object; - }; - - /** - * Converts this BroadcastGameJackpot to JSON. - * @function toJSON - * @memberof gamehall.BroadcastGameJackpot - * @instance - * @returns {Object.} JSON object - */ - BroadcastGameJackpot.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for BroadcastGameJackpot - * @function getTypeUrl - * @memberof gamehall.BroadcastGameJackpot - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - BroadcastGameJackpot.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.BroadcastGameJackpot"; - }; - - return BroadcastGameJackpot; - })(); - - gamehall.CSHundredSceneGetHistoryInfo = (function() { - - /** - * Properties of a CSHundredSceneGetHistoryInfo. - * @memberof gamehall - * @interface ICSHundredSceneGetHistoryInfo - * @property {number|null} [GameId] CSHundredSceneGetHistoryInfo GameId - * @property {number|null} [GameHistoryModel] CSHundredSceneGetHistoryInfo GameHistoryModel - */ - - /** - * Constructs a new CSHundredSceneGetHistoryInfo. - * @memberof gamehall - * @classdesc Represents a CSHundredSceneGetHistoryInfo. - * @implements ICSHundredSceneGetHistoryInfo - * @constructor - * @param {gamehall.ICSHundredSceneGetHistoryInfo=} [properties] Properties to set - */ - function CSHundredSceneGetHistoryInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * CSHundredSceneGetHistoryInfo GameId. - * @member {number} GameId - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @instance - */ - CSHundredSceneGetHistoryInfo.prototype.GameId = 0; - - /** - * CSHundredSceneGetHistoryInfo GameHistoryModel. - * @member {number} GameHistoryModel - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @instance - */ - CSHundredSceneGetHistoryInfo.prototype.GameHistoryModel = 0; - - /** - * Creates a new CSHundredSceneGetHistoryInfo instance using the specified properties. - * @function create - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {gamehall.ICSHundredSceneGetHistoryInfo=} [properties] Properties to set - * @returns {gamehall.CSHundredSceneGetHistoryInfo} CSHundredSceneGetHistoryInfo instance - */ - CSHundredSceneGetHistoryInfo.create = function create(properties) { - return new CSHundredSceneGetHistoryInfo(properties); - }; - - /** - * Encodes the specified CSHundredSceneGetHistoryInfo message. Does not implicitly {@link gamehall.CSHundredSceneGetHistoryInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {gamehall.ICSHundredSceneGetHistoryInfo} message CSHundredSceneGetHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneGetHistoryInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.GameId); - if (message.GameHistoryModel != null && Object.hasOwnProperty.call(message, "GameHistoryModel")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameHistoryModel); - return writer; - }; - - /** - * Encodes the specified CSHundredSceneGetHistoryInfo message, length delimited. Does not implicitly {@link gamehall.CSHundredSceneGetHistoryInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {gamehall.ICSHundredSceneGetHistoryInfo} message CSHundredSceneGetHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CSHundredSceneGetHistoryInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a CSHundredSceneGetHistoryInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.CSHundredSceneGetHistoryInfo} CSHundredSceneGetHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneGetHistoryInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.CSHundredSceneGetHistoryInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameId = reader.int32(); - break; - } - case 2: { - message.GameHistoryModel = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a CSHundredSceneGetHistoryInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.CSHundredSceneGetHistoryInfo} CSHundredSceneGetHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CSHundredSceneGetHistoryInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a CSHundredSceneGetHistoryInfo message. - * @function verify - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CSHundredSceneGetHistoryInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - if (message.GameHistoryModel != null && message.hasOwnProperty("GameHistoryModel")) - if (!$util.isInteger(message.GameHistoryModel)) - return "GameHistoryModel: integer expected"; - return null; - }; - - /** - * Creates a CSHundredSceneGetHistoryInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.CSHundredSceneGetHistoryInfo} CSHundredSceneGetHistoryInfo - */ - CSHundredSceneGetHistoryInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.CSHundredSceneGetHistoryInfo) - return object; - var message = new $root.gamehall.CSHundredSceneGetHistoryInfo(); - if (object.GameId != null) - message.GameId = object.GameId | 0; - if (object.GameHistoryModel != null) - message.GameHistoryModel = object.GameHistoryModel | 0; - return message; - }; - - /** - * Creates a plain object from a CSHundredSceneGetHistoryInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {gamehall.CSHundredSceneGetHistoryInfo} message CSHundredSceneGetHistoryInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CSHundredSceneGetHistoryInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameId = 0; - object.GameHistoryModel = 0; - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - if (message.GameHistoryModel != null && message.hasOwnProperty("GameHistoryModel")) - object.GameHistoryModel = message.GameHistoryModel; - return object; - }; - - /** - * Converts this CSHundredSceneGetHistoryInfo to JSON. - * @function toJSON - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @instance - * @returns {Object.} JSON object - */ - CSHundredSceneGetHistoryInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for CSHundredSceneGetHistoryInfo - * @function getTypeUrl - * @memberof gamehall.CSHundredSceneGetHistoryInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - CSHundredSceneGetHistoryInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.CSHundredSceneGetHistoryInfo"; - }; - - return CSHundredSceneGetHistoryInfo; - })(); - - gamehall.GameHistoryInfo = (function() { - - /** - * Properties of a GameHistoryInfo. - * @memberof gamehall - * @interface IGameHistoryInfo - * @property {string|null} [GameNumber] GameHistoryInfo GameNumber - * @property {number|Long|null} [CreatedTime] GameHistoryInfo CreatedTime - * @property {number|Long|null} [Multiple] GameHistoryInfo Multiple - * @property {string|null} [Hash] GameHistoryInfo Hash - */ - - /** - * Constructs a new GameHistoryInfo. - * @memberof gamehall - * @classdesc Represents a GameHistoryInfo. - * @implements IGameHistoryInfo - * @constructor - * @param {gamehall.IGameHistoryInfo=} [properties] Properties to set - */ - function GameHistoryInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * GameHistoryInfo GameNumber. - * @member {string} GameNumber - * @memberof gamehall.GameHistoryInfo - * @instance - */ - GameHistoryInfo.prototype.GameNumber = ""; - - /** - * GameHistoryInfo CreatedTime. - * @member {number|Long} CreatedTime - * @memberof gamehall.GameHistoryInfo - * @instance - */ - GameHistoryInfo.prototype.CreatedTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * GameHistoryInfo Multiple. - * @member {number|Long} Multiple - * @memberof gamehall.GameHistoryInfo - * @instance - */ - GameHistoryInfo.prototype.Multiple = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * GameHistoryInfo Hash. - * @member {string} Hash - * @memberof gamehall.GameHistoryInfo - * @instance - */ - GameHistoryInfo.prototype.Hash = ""; - - /** - * Creates a new GameHistoryInfo instance using the specified properties. - * @function create - * @memberof gamehall.GameHistoryInfo - * @static - * @param {gamehall.IGameHistoryInfo=} [properties] Properties to set - * @returns {gamehall.GameHistoryInfo} GameHistoryInfo instance - */ - GameHistoryInfo.create = function create(properties) { - return new GameHistoryInfo(properties); - }; - - /** - * Encodes the specified GameHistoryInfo message. Does not implicitly {@link gamehall.GameHistoryInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.GameHistoryInfo - * @static - * @param {gamehall.IGameHistoryInfo} message GameHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameHistoryInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.GameNumber != null && Object.hasOwnProperty.call(message, "GameNumber")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.GameNumber); - if (message.CreatedTime != null && Object.hasOwnProperty.call(message, "CreatedTime")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.CreatedTime); - if (message.Multiple != null && Object.hasOwnProperty.call(message, "Multiple")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.Multiple); - if (message.Hash != null && Object.hasOwnProperty.call(message, "Hash")) - writer.uint32(/* id 4, wireType 2 =*/34).string(message.Hash); - return writer; - }; - - /** - * Encodes the specified GameHistoryInfo message, length delimited. Does not implicitly {@link gamehall.GameHistoryInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.GameHistoryInfo - * @static - * @param {gamehall.IGameHistoryInfo} message GameHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - GameHistoryInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a GameHistoryInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.GameHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.GameHistoryInfo} GameHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameHistoryInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.GameHistoryInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.GameNumber = reader.string(); - break; - } - case 2: { - message.CreatedTime = reader.int64(); - break; - } - case 3: { - message.Multiple = reader.int64(); - break; - } - case 4: { - message.Hash = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a GameHistoryInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.GameHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.GameHistoryInfo} GameHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - GameHistoryInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a GameHistoryInfo message. - * @function verify - * @memberof gamehall.GameHistoryInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - GameHistoryInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.GameNumber != null && message.hasOwnProperty("GameNumber")) - if (!$util.isString(message.GameNumber)) - return "GameNumber: string expected"; - if (message.CreatedTime != null && message.hasOwnProperty("CreatedTime")) - if (!$util.isInteger(message.CreatedTime) && !(message.CreatedTime && $util.isInteger(message.CreatedTime.low) && $util.isInteger(message.CreatedTime.high))) - return "CreatedTime: integer|Long expected"; - if (message.Multiple != null && message.hasOwnProperty("Multiple")) - if (!$util.isInteger(message.Multiple) && !(message.Multiple && $util.isInteger(message.Multiple.low) && $util.isInteger(message.Multiple.high))) - return "Multiple: integer|Long expected"; - if (message.Hash != null && message.hasOwnProperty("Hash")) - if (!$util.isString(message.Hash)) - return "Hash: string expected"; - return null; - }; - - /** - * Creates a GameHistoryInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.GameHistoryInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.GameHistoryInfo} GameHistoryInfo - */ - GameHistoryInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.GameHistoryInfo) - return object; - var message = new $root.gamehall.GameHistoryInfo(); - if (object.GameNumber != null) - message.GameNumber = String(object.GameNumber); - if (object.CreatedTime != null) - if ($util.Long) - (message.CreatedTime = $util.Long.fromValue(object.CreatedTime)).unsigned = false; - else if (typeof object.CreatedTime === "string") - message.CreatedTime = parseInt(object.CreatedTime, 10); - else if (typeof object.CreatedTime === "number") - message.CreatedTime = object.CreatedTime; - else if (typeof object.CreatedTime === "object") - message.CreatedTime = new $util.LongBits(object.CreatedTime.low >>> 0, object.CreatedTime.high >>> 0).toNumber(); - if (object.Multiple != null) - if ($util.Long) - (message.Multiple = $util.Long.fromValue(object.Multiple)).unsigned = false; - else if (typeof object.Multiple === "string") - message.Multiple = parseInt(object.Multiple, 10); - else if (typeof object.Multiple === "number") - message.Multiple = object.Multiple; - else if (typeof object.Multiple === "object") - message.Multiple = new $util.LongBits(object.Multiple.low >>> 0, object.Multiple.high >>> 0).toNumber(); - if (object.Hash != null) - message.Hash = String(object.Hash); - return message; - }; - - /** - * Creates a plain object from a GameHistoryInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.GameHistoryInfo - * @static - * @param {gamehall.GameHistoryInfo} message GameHistoryInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - GameHistoryInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.GameNumber = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.CreatedTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.CreatedTime = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Multiple = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Multiple = options.longs === String ? "0" : 0; - object.Hash = ""; - } - if (message.GameNumber != null && message.hasOwnProperty("GameNumber")) - object.GameNumber = message.GameNumber; - if (message.CreatedTime != null && message.hasOwnProperty("CreatedTime")) - if (typeof message.CreatedTime === "number") - object.CreatedTime = options.longs === String ? String(message.CreatedTime) : message.CreatedTime; - else - object.CreatedTime = options.longs === String ? $util.Long.prototype.toString.call(message.CreatedTime) : options.longs === Number ? new $util.LongBits(message.CreatedTime.low >>> 0, message.CreatedTime.high >>> 0).toNumber() : message.CreatedTime; - if (message.Multiple != null && message.hasOwnProperty("Multiple")) - if (typeof message.Multiple === "number") - object.Multiple = options.longs === String ? String(message.Multiple) : message.Multiple; - else - object.Multiple = options.longs === String ? $util.Long.prototype.toString.call(message.Multiple) : options.longs === Number ? new $util.LongBits(message.Multiple.low >>> 0, message.Multiple.high >>> 0).toNumber() : message.Multiple; - if (message.Hash != null && message.hasOwnProperty("Hash")) - object.Hash = message.Hash; - return object; - }; - - /** - * Converts this GameHistoryInfo to JSON. - * @function toJSON - * @memberof gamehall.GameHistoryInfo - * @instance - * @returns {Object.} JSON object - */ - GameHistoryInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for GameHistoryInfo - * @function getTypeUrl - * @memberof gamehall.GameHistoryInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - GameHistoryInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.GameHistoryInfo"; - }; - - return GameHistoryInfo; - })(); - - gamehall.PlayerHistoryInfo = (function() { - - /** - * Properties of a PlayerHistoryInfo. - * @memberof gamehall - * @interface IPlayerHistoryInfo - * @property {string|null} [SpinID] PlayerHistoryInfo SpinID - * @property {number|Long|null} [CreatedTime] PlayerHistoryInfo CreatedTime - * @property {number|Long|null} [TotalBetValue] PlayerHistoryInfo TotalBetValue - * @property {number|Long|null} [TotalPriceValue] PlayerHistoryInfo TotalPriceValue - * @property {boolean|null} [IsFree] PlayerHistoryInfo IsFree - * @property {number|Long|null} [TotalBonusValue] PlayerHistoryInfo TotalBonusValue - * @property {number|Long|null} [Multiple] PlayerHistoryInfo Multiple - */ - - /** - * Constructs a new PlayerHistoryInfo. - * @memberof gamehall - * @classdesc Represents a PlayerHistoryInfo. - * @implements IPlayerHistoryInfo - * @constructor - * @param {gamehall.IPlayerHistoryInfo=} [properties] Properties to set - */ - function PlayerHistoryInfo(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * PlayerHistoryInfo SpinID. - * @member {string} SpinID - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.SpinID = ""; - - /** - * PlayerHistoryInfo CreatedTime. - * @member {number|Long} CreatedTime - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.CreatedTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerHistoryInfo TotalBetValue. - * @member {number|Long} TotalBetValue - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.TotalBetValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerHistoryInfo TotalPriceValue. - * @member {number|Long} TotalPriceValue - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.TotalPriceValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerHistoryInfo IsFree. - * @member {boolean} IsFree - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.IsFree = false; - - /** - * PlayerHistoryInfo TotalBonusValue. - * @member {number|Long} TotalBonusValue - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.TotalBonusValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * PlayerHistoryInfo Multiple. - * @member {number|Long} Multiple - * @memberof gamehall.PlayerHistoryInfo - * @instance - */ - PlayerHistoryInfo.prototype.Multiple = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * Creates a new PlayerHistoryInfo instance using the specified properties. - * @function create - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {gamehall.IPlayerHistoryInfo=} [properties] Properties to set - * @returns {gamehall.PlayerHistoryInfo} PlayerHistoryInfo instance - */ - PlayerHistoryInfo.create = function create(properties) { - return new PlayerHistoryInfo(properties); - }; - - /** - * Encodes the specified PlayerHistoryInfo message. Does not implicitly {@link gamehall.PlayerHistoryInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {gamehall.IPlayerHistoryInfo} message PlayerHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PlayerHistoryInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.SpinID != null && Object.hasOwnProperty.call(message, "SpinID")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.SpinID); - if (message.CreatedTime != null && Object.hasOwnProperty.call(message, "CreatedTime")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.CreatedTime); - if (message.TotalBetValue != null && Object.hasOwnProperty.call(message, "TotalBetValue")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.TotalBetValue); - if (message.TotalPriceValue != null && Object.hasOwnProperty.call(message, "TotalPriceValue")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.TotalPriceValue); - if (message.IsFree != null && Object.hasOwnProperty.call(message, "IsFree")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.IsFree); - if (message.TotalBonusValue != null && Object.hasOwnProperty.call(message, "TotalBonusValue")) - writer.uint32(/* id 6, wireType 0 =*/48).int64(message.TotalBonusValue); - if (message.Multiple != null && Object.hasOwnProperty.call(message, "Multiple")) - writer.uint32(/* id 7, wireType 0 =*/56).int64(message.Multiple); - return writer; - }; - - /** - * Encodes the specified PlayerHistoryInfo message, length delimited. Does not implicitly {@link gamehall.PlayerHistoryInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {gamehall.IPlayerHistoryInfo} message PlayerHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PlayerHistoryInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PlayerHistoryInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.PlayerHistoryInfo} PlayerHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PlayerHistoryInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.PlayerHistoryInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.SpinID = reader.string(); - break; - } - case 2: { - message.CreatedTime = reader.int64(); - break; - } - case 3: { - message.TotalBetValue = reader.int64(); - break; - } - case 4: { - message.TotalPriceValue = reader.int64(); - break; - } - case 5: { - message.IsFree = reader.bool(); - break; - } - case 6: { - message.TotalBonusValue = reader.int64(); - break; - } - case 7: { - message.Multiple = reader.int64(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PlayerHistoryInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.PlayerHistoryInfo} PlayerHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PlayerHistoryInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PlayerHistoryInfo message. - * @function verify - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PlayerHistoryInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.SpinID != null && message.hasOwnProperty("SpinID")) - if (!$util.isString(message.SpinID)) - return "SpinID: string expected"; - if (message.CreatedTime != null && message.hasOwnProperty("CreatedTime")) - if (!$util.isInteger(message.CreatedTime) && !(message.CreatedTime && $util.isInteger(message.CreatedTime.low) && $util.isInteger(message.CreatedTime.high))) - return "CreatedTime: integer|Long expected"; - if (message.TotalBetValue != null && message.hasOwnProperty("TotalBetValue")) - if (!$util.isInteger(message.TotalBetValue) && !(message.TotalBetValue && $util.isInteger(message.TotalBetValue.low) && $util.isInteger(message.TotalBetValue.high))) - return "TotalBetValue: integer|Long expected"; - if (message.TotalPriceValue != null && message.hasOwnProperty("TotalPriceValue")) - if (!$util.isInteger(message.TotalPriceValue) && !(message.TotalPriceValue && $util.isInteger(message.TotalPriceValue.low) && $util.isInteger(message.TotalPriceValue.high))) - return "TotalPriceValue: integer|Long expected"; - if (message.IsFree != null && message.hasOwnProperty("IsFree")) - if (typeof message.IsFree !== "boolean") - return "IsFree: boolean expected"; - if (message.TotalBonusValue != null && message.hasOwnProperty("TotalBonusValue")) - if (!$util.isInteger(message.TotalBonusValue) && !(message.TotalBonusValue && $util.isInteger(message.TotalBonusValue.low) && $util.isInteger(message.TotalBonusValue.high))) - return "TotalBonusValue: integer|Long expected"; - if (message.Multiple != null && message.hasOwnProperty("Multiple")) - if (!$util.isInteger(message.Multiple) && !(message.Multiple && $util.isInteger(message.Multiple.low) && $util.isInteger(message.Multiple.high))) - return "Multiple: integer|Long expected"; - return null; - }; - - /** - * Creates a PlayerHistoryInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.PlayerHistoryInfo} PlayerHistoryInfo - */ - PlayerHistoryInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.PlayerHistoryInfo) - return object; - var message = new $root.gamehall.PlayerHistoryInfo(); - if (object.SpinID != null) - message.SpinID = String(object.SpinID); - if (object.CreatedTime != null) - if ($util.Long) - (message.CreatedTime = $util.Long.fromValue(object.CreatedTime)).unsigned = false; - else if (typeof object.CreatedTime === "string") - message.CreatedTime = parseInt(object.CreatedTime, 10); - else if (typeof object.CreatedTime === "number") - message.CreatedTime = object.CreatedTime; - else if (typeof object.CreatedTime === "object") - message.CreatedTime = new $util.LongBits(object.CreatedTime.low >>> 0, object.CreatedTime.high >>> 0).toNumber(); - if (object.TotalBetValue != null) - if ($util.Long) - (message.TotalBetValue = $util.Long.fromValue(object.TotalBetValue)).unsigned = false; - else if (typeof object.TotalBetValue === "string") - message.TotalBetValue = parseInt(object.TotalBetValue, 10); - else if (typeof object.TotalBetValue === "number") - message.TotalBetValue = object.TotalBetValue; - else if (typeof object.TotalBetValue === "object") - message.TotalBetValue = new $util.LongBits(object.TotalBetValue.low >>> 0, object.TotalBetValue.high >>> 0).toNumber(); - if (object.TotalPriceValue != null) - if ($util.Long) - (message.TotalPriceValue = $util.Long.fromValue(object.TotalPriceValue)).unsigned = false; - else if (typeof object.TotalPriceValue === "string") - message.TotalPriceValue = parseInt(object.TotalPriceValue, 10); - else if (typeof object.TotalPriceValue === "number") - message.TotalPriceValue = object.TotalPriceValue; - else if (typeof object.TotalPriceValue === "object") - message.TotalPriceValue = new $util.LongBits(object.TotalPriceValue.low >>> 0, object.TotalPriceValue.high >>> 0).toNumber(); - if (object.IsFree != null) - message.IsFree = Boolean(object.IsFree); - if (object.TotalBonusValue != null) - if ($util.Long) - (message.TotalBonusValue = $util.Long.fromValue(object.TotalBonusValue)).unsigned = false; - else if (typeof object.TotalBonusValue === "string") - message.TotalBonusValue = parseInt(object.TotalBonusValue, 10); - else if (typeof object.TotalBonusValue === "number") - message.TotalBonusValue = object.TotalBonusValue; - else if (typeof object.TotalBonusValue === "object") - message.TotalBonusValue = new $util.LongBits(object.TotalBonusValue.low >>> 0, object.TotalBonusValue.high >>> 0).toNumber(); - if (object.Multiple != null) - if ($util.Long) - (message.Multiple = $util.Long.fromValue(object.Multiple)).unsigned = false; - else if (typeof object.Multiple === "string") - message.Multiple = parseInt(object.Multiple, 10); - else if (typeof object.Multiple === "number") - message.Multiple = object.Multiple; - else if (typeof object.Multiple === "object") - message.Multiple = new $util.LongBits(object.Multiple.low >>> 0, object.Multiple.high >>> 0).toNumber(); - return message; - }; - - /** - * Creates a plain object from a PlayerHistoryInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {gamehall.PlayerHistoryInfo} message PlayerHistoryInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PlayerHistoryInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.SpinID = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.CreatedTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.CreatedTime = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalBetValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalBetValue = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalPriceValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalPriceValue = options.longs === String ? "0" : 0; - object.IsFree = false; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalBonusValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalBonusValue = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.Multiple = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.Multiple = options.longs === String ? "0" : 0; - } - if (message.SpinID != null && message.hasOwnProperty("SpinID")) - object.SpinID = message.SpinID; - if (message.CreatedTime != null && message.hasOwnProperty("CreatedTime")) - if (typeof message.CreatedTime === "number") - object.CreatedTime = options.longs === String ? String(message.CreatedTime) : message.CreatedTime; - else - object.CreatedTime = options.longs === String ? $util.Long.prototype.toString.call(message.CreatedTime) : options.longs === Number ? new $util.LongBits(message.CreatedTime.low >>> 0, message.CreatedTime.high >>> 0).toNumber() : message.CreatedTime; - if (message.TotalBetValue != null && message.hasOwnProperty("TotalBetValue")) - if (typeof message.TotalBetValue === "number") - object.TotalBetValue = options.longs === String ? String(message.TotalBetValue) : message.TotalBetValue; - else - object.TotalBetValue = options.longs === String ? $util.Long.prototype.toString.call(message.TotalBetValue) : options.longs === Number ? new $util.LongBits(message.TotalBetValue.low >>> 0, message.TotalBetValue.high >>> 0).toNumber() : message.TotalBetValue; - if (message.TotalPriceValue != null && message.hasOwnProperty("TotalPriceValue")) - if (typeof message.TotalPriceValue === "number") - object.TotalPriceValue = options.longs === String ? String(message.TotalPriceValue) : message.TotalPriceValue; - else - object.TotalPriceValue = options.longs === String ? $util.Long.prototype.toString.call(message.TotalPriceValue) : options.longs === Number ? new $util.LongBits(message.TotalPriceValue.low >>> 0, message.TotalPriceValue.high >>> 0).toNumber() : message.TotalPriceValue; - if (message.IsFree != null && message.hasOwnProperty("IsFree")) - object.IsFree = message.IsFree; - if (message.TotalBonusValue != null && message.hasOwnProperty("TotalBonusValue")) - if (typeof message.TotalBonusValue === "number") - object.TotalBonusValue = options.longs === String ? String(message.TotalBonusValue) : message.TotalBonusValue; - else - object.TotalBonusValue = options.longs === String ? $util.Long.prototype.toString.call(message.TotalBonusValue) : options.longs === Number ? new $util.LongBits(message.TotalBonusValue.low >>> 0, message.TotalBonusValue.high >>> 0).toNumber() : message.TotalBonusValue; - if (message.Multiple != null && message.hasOwnProperty("Multiple")) - if (typeof message.Multiple === "number") - object.Multiple = options.longs === String ? String(message.Multiple) : message.Multiple; - else - object.Multiple = options.longs === String ? $util.Long.prototype.toString.call(message.Multiple) : options.longs === Number ? new $util.LongBits(message.Multiple.low >>> 0, message.Multiple.high >>> 0).toNumber() : message.Multiple; - return object; - }; - - /** - * Converts this PlayerHistoryInfo to JSON. - * @function toJSON - * @memberof gamehall.PlayerHistoryInfo - * @instance - * @returns {Object.} JSON object - */ - PlayerHistoryInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PlayerHistoryInfo - * @function getTypeUrl - * @memberof gamehall.PlayerHistoryInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PlayerHistoryInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.PlayerHistoryInfo"; - }; - - return PlayerHistoryInfo; - })(); - - gamehall.SCPlayerHistory = (function() { - - /** - * Properties of a SCPlayerHistory. - * @memberof gamehall - * @interface ISCPlayerHistory - * @property {Array.|null} [PlayerHistory] SCPlayerHistory PlayerHistory - * @property {Array.|null} [GameHistory] SCPlayerHistory GameHistory - */ - - /** - * Constructs a new SCPlayerHistory. - * @memberof gamehall - * @classdesc Represents a SCPlayerHistory. - * @implements ISCPlayerHistory - * @constructor - * @param {gamehall.ISCPlayerHistory=} [properties] Properties to set - */ - function SCPlayerHistory(properties) { - this.PlayerHistory = []; - this.GameHistory = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCPlayerHistory PlayerHistory. - * @member {Array.} PlayerHistory - * @memberof gamehall.SCPlayerHistory - * @instance - */ - SCPlayerHistory.prototype.PlayerHistory = $util.emptyArray; - - /** - * SCPlayerHistory GameHistory. - * @member {Array.} GameHistory - * @memberof gamehall.SCPlayerHistory - * @instance - */ - SCPlayerHistory.prototype.GameHistory = $util.emptyArray; - - /** - * Creates a new SCPlayerHistory instance using the specified properties. - * @function create - * @memberof gamehall.SCPlayerHistory - * @static - * @param {gamehall.ISCPlayerHistory=} [properties] Properties to set - * @returns {gamehall.SCPlayerHistory} SCPlayerHistory instance - */ - SCPlayerHistory.create = function create(properties) { - return new SCPlayerHistory(properties); - }; - - /** - * Encodes the specified SCPlayerHistory message. Does not implicitly {@link gamehall.SCPlayerHistory.verify|verify} messages. - * @function encode - * @memberof gamehall.SCPlayerHistory - * @static - * @param {gamehall.ISCPlayerHistory} message SCPlayerHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCPlayerHistory.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.PlayerHistory != null && message.PlayerHistory.length) - for (var i = 0; i < message.PlayerHistory.length; ++i) - $root.gamehall.PlayerHistoryInfo.encode(message.PlayerHistory[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.GameHistory != null && message.GameHistory.length) - for (var i = 0; i < message.GameHistory.length; ++i) - $root.gamehall.GameHistoryInfo.encode(message.GameHistory[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified SCPlayerHistory message, length delimited. Does not implicitly {@link gamehall.SCPlayerHistory.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCPlayerHistory - * @static - * @param {gamehall.ISCPlayerHistory} message SCPlayerHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCPlayerHistory.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCPlayerHistory message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCPlayerHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCPlayerHistory} SCPlayerHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCPlayerHistory.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCPlayerHistory(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.PlayerHistory && message.PlayerHistory.length)) - message.PlayerHistory = []; - message.PlayerHistory.push($root.gamehall.PlayerHistoryInfo.decode(reader, reader.uint32())); - break; - } - case 2: { - if (!(message.GameHistory && message.GameHistory.length)) - message.GameHistory = []; - message.GameHistory.push($root.gamehall.GameHistoryInfo.decode(reader, reader.uint32())); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCPlayerHistory message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCPlayerHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCPlayerHistory} SCPlayerHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCPlayerHistory.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCPlayerHistory message. - * @function verify - * @memberof gamehall.SCPlayerHistory - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCPlayerHistory.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.PlayerHistory != null && message.hasOwnProperty("PlayerHistory")) { - if (!Array.isArray(message.PlayerHistory)) - return "PlayerHistory: array expected"; - for (var i = 0; i < message.PlayerHistory.length; ++i) { - var error = $root.gamehall.PlayerHistoryInfo.verify(message.PlayerHistory[i]); - if (error) - return "PlayerHistory." + error; - } - } - if (message.GameHistory != null && message.hasOwnProperty("GameHistory")) { - if (!Array.isArray(message.GameHistory)) - return "GameHistory: array expected"; - for (var i = 0; i < message.GameHistory.length; ++i) { - var error = $root.gamehall.GameHistoryInfo.verify(message.GameHistory[i]); - if (error) - return "GameHistory." + error; - } - } - return null; - }; - - /** - * Creates a SCPlayerHistory message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCPlayerHistory - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCPlayerHistory} SCPlayerHistory - */ - SCPlayerHistory.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCPlayerHistory) - return object; - var message = new $root.gamehall.SCPlayerHistory(); - if (object.PlayerHistory) { - if (!Array.isArray(object.PlayerHistory)) - throw TypeError(".gamehall.SCPlayerHistory.PlayerHistory: array expected"); - message.PlayerHistory = []; - for (var i = 0; i < object.PlayerHistory.length; ++i) { - if (typeof object.PlayerHistory[i] !== "object") - throw TypeError(".gamehall.SCPlayerHistory.PlayerHistory: object expected"); - message.PlayerHistory[i] = $root.gamehall.PlayerHistoryInfo.fromObject(object.PlayerHistory[i]); - } - } - if (object.GameHistory) { - if (!Array.isArray(object.GameHistory)) - throw TypeError(".gamehall.SCPlayerHistory.GameHistory: array expected"); - message.GameHistory = []; - for (var i = 0; i < object.GameHistory.length; ++i) { - if (typeof object.GameHistory[i] !== "object") - throw TypeError(".gamehall.SCPlayerHistory.GameHistory: object expected"); - message.GameHistory[i] = $root.gamehall.GameHistoryInfo.fromObject(object.GameHistory[i]); - } - } - return message; - }; - - /** - * Creates a plain object from a SCPlayerHistory message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCPlayerHistory - * @static - * @param {gamehall.SCPlayerHistory} message SCPlayerHistory - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCPlayerHistory.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.PlayerHistory = []; - object.GameHistory = []; - } - if (message.PlayerHistory && message.PlayerHistory.length) { - object.PlayerHistory = []; - for (var j = 0; j < message.PlayerHistory.length; ++j) - object.PlayerHistory[j] = $root.gamehall.PlayerHistoryInfo.toObject(message.PlayerHistory[j], options); - } - if (message.GameHistory && message.GameHistory.length) { - object.GameHistory = []; - for (var j = 0; j < message.GameHistory.length; ++j) - object.GameHistory[j] = $root.gamehall.GameHistoryInfo.toObject(message.GameHistory[j], options); - } - return object; - }; - - /** - * Converts this SCPlayerHistory to JSON. - * @function toJSON - * @memberof gamehall.SCPlayerHistory - * @instance - * @returns {Object.} JSON object - */ - SCPlayerHistory.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCPlayerHistory - * @function getTypeUrl - * @memberof gamehall.SCPlayerHistory - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCPlayerHistory.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCPlayerHistory"; - }; - - return SCPlayerHistory; - })(); - - gamehall.BigWinHistoryInfo = (function() { - - /** - * Properties of a BigWinHistoryInfo. - * @memberof gamehall - * @interface IBigWinHistoryInfo - * @property {string|null} [SpinID] BigWinHistoryInfo SpinID - * @property {number|Long|null} [CreatedTime] BigWinHistoryInfo CreatedTime - * @property {number|Long|null} [BaseBet] BigWinHistoryInfo BaseBet - * @property {number|Long|null} [PriceValue] BigWinHistoryInfo PriceValue - * @property {string|null} [UserName] BigWinHistoryInfo UserName - * @property {boolean|null} [IsVirtualData] BigWinHistoryInfo IsVirtualData - * @property {number|Long|null} [TotalBet] BigWinHistoryInfo TotalBet - * @property {Array.|null} [Cards] BigWinHistoryInfo Cards - */ - - /** - * Constructs a new BigWinHistoryInfo. - * @memberof gamehall - * @classdesc Represents a BigWinHistoryInfo. - * @implements IBigWinHistoryInfo - * @constructor - * @param {gamehall.IBigWinHistoryInfo=} [properties] Properties to set - */ - function BigWinHistoryInfo(properties) { - this.Cards = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * BigWinHistoryInfo SpinID. - * @member {string} SpinID - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.SpinID = ""; - - /** - * BigWinHistoryInfo CreatedTime. - * @member {number|Long} CreatedTime - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.CreatedTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * BigWinHistoryInfo BaseBet. - * @member {number|Long} BaseBet - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.BaseBet = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * BigWinHistoryInfo PriceValue. - * @member {number|Long} PriceValue - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.PriceValue = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * BigWinHistoryInfo UserName. - * @member {string} UserName - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.UserName = ""; - - /** - * BigWinHistoryInfo IsVirtualData. - * @member {boolean} IsVirtualData - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.IsVirtualData = false; - - /** - * BigWinHistoryInfo TotalBet. - * @member {number|Long} TotalBet - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.TotalBet = $util.Long ? $util.Long.fromBits(0,0,false) : 0; - - /** - * BigWinHistoryInfo Cards. - * @member {Array.} Cards - * @memberof gamehall.BigWinHistoryInfo - * @instance - */ - BigWinHistoryInfo.prototype.Cards = $util.emptyArray; - - /** - * Creates a new BigWinHistoryInfo instance using the specified properties. - * @function create - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {gamehall.IBigWinHistoryInfo=} [properties] Properties to set - * @returns {gamehall.BigWinHistoryInfo} BigWinHistoryInfo instance - */ - BigWinHistoryInfo.create = function create(properties) { - return new BigWinHistoryInfo(properties); - }; - - /** - * Encodes the specified BigWinHistoryInfo message. Does not implicitly {@link gamehall.BigWinHistoryInfo.verify|verify} messages. - * @function encode - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {gamehall.IBigWinHistoryInfo} message BigWinHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BigWinHistoryInfo.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.SpinID != null && Object.hasOwnProperty.call(message, "SpinID")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.SpinID); - if (message.CreatedTime != null && Object.hasOwnProperty.call(message, "CreatedTime")) - writer.uint32(/* id 2, wireType 0 =*/16).int64(message.CreatedTime); - if (message.BaseBet != null && Object.hasOwnProperty.call(message, "BaseBet")) - writer.uint32(/* id 3, wireType 0 =*/24).int64(message.BaseBet); - if (message.PriceValue != null && Object.hasOwnProperty.call(message, "PriceValue")) - writer.uint32(/* id 4, wireType 0 =*/32).int64(message.PriceValue); - if (message.UserName != null && Object.hasOwnProperty.call(message, "UserName")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.UserName); - if (message.IsVirtualData != null && Object.hasOwnProperty.call(message, "IsVirtualData")) - writer.uint32(/* id 6, wireType 0 =*/48).bool(message.IsVirtualData); - if (message.TotalBet != null && Object.hasOwnProperty.call(message, "TotalBet")) - writer.uint32(/* id 7, wireType 0 =*/56).int64(message.TotalBet); - if (message.Cards != null && message.Cards.length) { - writer.uint32(/* id 8, wireType 2 =*/66).fork(); - for (var i = 0; i < message.Cards.length; ++i) - writer.int32(message.Cards[i]); - writer.ldelim(); - } - return writer; - }; - - /** - * Encodes the specified BigWinHistoryInfo message, length delimited. Does not implicitly {@link gamehall.BigWinHistoryInfo.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {gamehall.IBigWinHistoryInfo} message BigWinHistoryInfo message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - BigWinHistoryInfo.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a BigWinHistoryInfo message from the specified reader or buffer. - * @function decode - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.BigWinHistoryInfo} BigWinHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BigWinHistoryInfo.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.BigWinHistoryInfo(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - message.SpinID = reader.string(); - break; - } - case 2: { - message.CreatedTime = reader.int64(); - break; - } - case 3: { - message.BaseBet = reader.int64(); - break; - } - case 4: { - message.PriceValue = reader.int64(); - break; - } - case 5: { - message.UserName = reader.string(); - break; - } - case 6: { - message.IsVirtualData = reader.bool(); - break; - } - case 7: { - message.TotalBet = reader.int64(); - break; - } - case 8: { - if (!(message.Cards && message.Cards.length)) - message.Cards = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.Cards.push(reader.int32()); - } else - message.Cards.push(reader.int32()); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a BigWinHistoryInfo message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.BigWinHistoryInfo} BigWinHistoryInfo - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - BigWinHistoryInfo.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a BigWinHistoryInfo message. - * @function verify - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - BigWinHistoryInfo.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.SpinID != null && message.hasOwnProperty("SpinID")) - if (!$util.isString(message.SpinID)) - return "SpinID: string expected"; - if (message.CreatedTime != null && message.hasOwnProperty("CreatedTime")) - if (!$util.isInteger(message.CreatedTime) && !(message.CreatedTime && $util.isInteger(message.CreatedTime.low) && $util.isInteger(message.CreatedTime.high))) - return "CreatedTime: integer|Long expected"; - if (message.BaseBet != null && message.hasOwnProperty("BaseBet")) - if (!$util.isInteger(message.BaseBet) && !(message.BaseBet && $util.isInteger(message.BaseBet.low) && $util.isInteger(message.BaseBet.high))) - return "BaseBet: integer|Long expected"; - if (message.PriceValue != null && message.hasOwnProperty("PriceValue")) - if (!$util.isInteger(message.PriceValue) && !(message.PriceValue && $util.isInteger(message.PriceValue.low) && $util.isInteger(message.PriceValue.high))) - return "PriceValue: integer|Long expected"; - if (message.UserName != null && message.hasOwnProperty("UserName")) - if (!$util.isString(message.UserName)) - return "UserName: string expected"; - if (message.IsVirtualData != null && message.hasOwnProperty("IsVirtualData")) - if (typeof message.IsVirtualData !== "boolean") - return "IsVirtualData: boolean expected"; - if (message.TotalBet != null && message.hasOwnProperty("TotalBet")) - if (!$util.isInteger(message.TotalBet) && !(message.TotalBet && $util.isInteger(message.TotalBet.low) && $util.isInteger(message.TotalBet.high))) - return "TotalBet: integer|Long expected"; - if (message.Cards != null && message.hasOwnProperty("Cards")) { - if (!Array.isArray(message.Cards)) - return "Cards: array expected"; - for (var i = 0; i < message.Cards.length; ++i) - if (!$util.isInteger(message.Cards[i])) - return "Cards: integer[] expected"; - } - return null; - }; - - /** - * Creates a BigWinHistoryInfo message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {Object.} object Plain object - * @returns {gamehall.BigWinHistoryInfo} BigWinHistoryInfo - */ - BigWinHistoryInfo.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.BigWinHistoryInfo) - return object; - var message = new $root.gamehall.BigWinHistoryInfo(); - if (object.SpinID != null) - message.SpinID = String(object.SpinID); - if (object.CreatedTime != null) - if ($util.Long) - (message.CreatedTime = $util.Long.fromValue(object.CreatedTime)).unsigned = false; - else if (typeof object.CreatedTime === "string") - message.CreatedTime = parseInt(object.CreatedTime, 10); - else if (typeof object.CreatedTime === "number") - message.CreatedTime = object.CreatedTime; - else if (typeof object.CreatedTime === "object") - message.CreatedTime = new $util.LongBits(object.CreatedTime.low >>> 0, object.CreatedTime.high >>> 0).toNumber(); - if (object.BaseBet != null) - if ($util.Long) - (message.BaseBet = $util.Long.fromValue(object.BaseBet)).unsigned = false; - else if (typeof object.BaseBet === "string") - message.BaseBet = parseInt(object.BaseBet, 10); - else if (typeof object.BaseBet === "number") - message.BaseBet = object.BaseBet; - else if (typeof object.BaseBet === "object") - message.BaseBet = new $util.LongBits(object.BaseBet.low >>> 0, object.BaseBet.high >>> 0).toNumber(); - if (object.PriceValue != null) - if ($util.Long) - (message.PriceValue = $util.Long.fromValue(object.PriceValue)).unsigned = false; - else if (typeof object.PriceValue === "string") - message.PriceValue = parseInt(object.PriceValue, 10); - else if (typeof object.PriceValue === "number") - message.PriceValue = object.PriceValue; - else if (typeof object.PriceValue === "object") - message.PriceValue = new $util.LongBits(object.PriceValue.low >>> 0, object.PriceValue.high >>> 0).toNumber(); - if (object.UserName != null) - message.UserName = String(object.UserName); - if (object.IsVirtualData != null) - message.IsVirtualData = Boolean(object.IsVirtualData); - if (object.TotalBet != null) - if ($util.Long) - (message.TotalBet = $util.Long.fromValue(object.TotalBet)).unsigned = false; - else if (typeof object.TotalBet === "string") - message.TotalBet = parseInt(object.TotalBet, 10); - else if (typeof object.TotalBet === "number") - message.TotalBet = object.TotalBet; - else if (typeof object.TotalBet === "object") - message.TotalBet = new $util.LongBits(object.TotalBet.low >>> 0, object.TotalBet.high >>> 0).toNumber(); - if (object.Cards) { - if (!Array.isArray(object.Cards)) - throw TypeError(".gamehall.BigWinHistoryInfo.Cards: array expected"); - message.Cards = []; - for (var i = 0; i < object.Cards.length; ++i) - message.Cards[i] = object.Cards[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a BigWinHistoryInfo message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {gamehall.BigWinHistoryInfo} message BigWinHistoryInfo - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - BigWinHistoryInfo.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.Cards = []; - if (options.defaults) { - object.SpinID = ""; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.CreatedTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.CreatedTime = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.BaseBet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.BaseBet = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.PriceValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.PriceValue = options.longs === String ? "0" : 0; - object.UserName = ""; - object.IsVirtualData = false; - if ($util.Long) { - var long = new $util.Long(0, 0, false); - object.TotalBet = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.TotalBet = options.longs === String ? "0" : 0; - } - if (message.SpinID != null && message.hasOwnProperty("SpinID")) - object.SpinID = message.SpinID; - if (message.CreatedTime != null && message.hasOwnProperty("CreatedTime")) - if (typeof message.CreatedTime === "number") - object.CreatedTime = options.longs === String ? String(message.CreatedTime) : message.CreatedTime; - else - object.CreatedTime = options.longs === String ? $util.Long.prototype.toString.call(message.CreatedTime) : options.longs === Number ? new $util.LongBits(message.CreatedTime.low >>> 0, message.CreatedTime.high >>> 0).toNumber() : message.CreatedTime; - if (message.BaseBet != null && message.hasOwnProperty("BaseBet")) - if (typeof message.BaseBet === "number") - object.BaseBet = options.longs === String ? String(message.BaseBet) : message.BaseBet; - else - object.BaseBet = options.longs === String ? $util.Long.prototype.toString.call(message.BaseBet) : options.longs === Number ? new $util.LongBits(message.BaseBet.low >>> 0, message.BaseBet.high >>> 0).toNumber() : message.BaseBet; - if (message.PriceValue != null && message.hasOwnProperty("PriceValue")) - if (typeof message.PriceValue === "number") - object.PriceValue = options.longs === String ? String(message.PriceValue) : message.PriceValue; - else - object.PriceValue = options.longs === String ? $util.Long.prototype.toString.call(message.PriceValue) : options.longs === Number ? new $util.LongBits(message.PriceValue.low >>> 0, message.PriceValue.high >>> 0).toNumber() : message.PriceValue; - if (message.UserName != null && message.hasOwnProperty("UserName")) - object.UserName = message.UserName; - if (message.IsVirtualData != null && message.hasOwnProperty("IsVirtualData")) - object.IsVirtualData = message.IsVirtualData; - if (message.TotalBet != null && message.hasOwnProperty("TotalBet")) - if (typeof message.TotalBet === "number") - object.TotalBet = options.longs === String ? String(message.TotalBet) : message.TotalBet; - else - object.TotalBet = options.longs === String ? $util.Long.prototype.toString.call(message.TotalBet) : options.longs === Number ? new $util.LongBits(message.TotalBet.low >>> 0, message.TotalBet.high >>> 0).toNumber() : message.TotalBet; - if (message.Cards && message.Cards.length) { - object.Cards = []; - for (var j = 0; j < message.Cards.length; ++j) - object.Cards[j] = message.Cards[j]; - } - return object; - }; - - /** - * Converts this BigWinHistoryInfo to JSON. - * @function toJSON - * @memberof gamehall.BigWinHistoryInfo - * @instance - * @returns {Object.} JSON object - */ - BigWinHistoryInfo.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for BigWinHistoryInfo - * @function getTypeUrl - * @memberof gamehall.BigWinHistoryInfo - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - BigWinHistoryInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.BigWinHistoryInfo"; - }; - - return BigWinHistoryInfo; - })(); - - gamehall.SCBigWinHistory = (function() { - - /** - * Properties of a SCBigWinHistory. - * @memberof gamehall - * @interface ISCBigWinHistory - * @property {Array.|null} [BigWinHistory] SCBigWinHistory BigWinHistory - * @property {number|null} [GameId] SCBigWinHistory GameId - */ - - /** - * Constructs a new SCBigWinHistory. - * @memberof gamehall - * @classdesc Represents a SCBigWinHistory. - * @implements ISCBigWinHistory - * @constructor - * @param {gamehall.ISCBigWinHistory=} [properties] Properties to set - */ - function SCBigWinHistory(properties) { - this.BigWinHistory = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SCBigWinHistory BigWinHistory. - * @member {Array.} BigWinHistory - * @memberof gamehall.SCBigWinHistory - * @instance - */ - SCBigWinHistory.prototype.BigWinHistory = $util.emptyArray; - - /** - * SCBigWinHistory GameId. - * @member {number} GameId - * @memberof gamehall.SCBigWinHistory - * @instance - */ - SCBigWinHistory.prototype.GameId = 0; - - /** - * Creates a new SCBigWinHistory instance using the specified properties. - * @function create - * @memberof gamehall.SCBigWinHistory - * @static - * @param {gamehall.ISCBigWinHistory=} [properties] Properties to set - * @returns {gamehall.SCBigWinHistory} SCBigWinHistory instance - */ - SCBigWinHistory.create = function create(properties) { - return new SCBigWinHistory(properties); - }; - - /** - * Encodes the specified SCBigWinHistory message. Does not implicitly {@link gamehall.SCBigWinHistory.verify|verify} messages. - * @function encode - * @memberof gamehall.SCBigWinHistory - * @static - * @param {gamehall.ISCBigWinHistory} message SCBigWinHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCBigWinHistory.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.BigWinHistory != null && message.BigWinHistory.length) - for (var i = 0; i < message.BigWinHistory.length; ++i) - $root.gamehall.BigWinHistoryInfo.encode(message.BigWinHistory[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.GameId != null && Object.hasOwnProperty.call(message, "GameId")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.GameId); - return writer; - }; - - /** - * Encodes the specified SCBigWinHistory message, length delimited. Does not implicitly {@link gamehall.SCBigWinHistory.verify|verify} messages. - * @function encodeDelimited - * @memberof gamehall.SCBigWinHistory - * @static - * @param {gamehall.ISCBigWinHistory} message SCBigWinHistory message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SCBigWinHistory.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SCBigWinHistory message from the specified reader or buffer. - * @function decode - * @memberof gamehall.SCBigWinHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {gamehall.SCBigWinHistory} SCBigWinHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCBigWinHistory.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.gamehall.SCBigWinHistory(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: { - if (!(message.BigWinHistory && message.BigWinHistory.length)) - message.BigWinHistory = []; - message.BigWinHistory.push($root.gamehall.BigWinHistoryInfo.decode(reader, reader.uint32())); - break; - } - case 2: { - message.GameId = reader.int32(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a SCBigWinHistory message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof gamehall.SCBigWinHistory - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {gamehall.SCBigWinHistory} SCBigWinHistory - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SCBigWinHistory.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a SCBigWinHistory message. - * @function verify - * @memberof gamehall.SCBigWinHistory - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SCBigWinHistory.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.BigWinHistory != null && message.hasOwnProperty("BigWinHistory")) { - if (!Array.isArray(message.BigWinHistory)) - return "BigWinHistory: array expected"; - for (var i = 0; i < message.BigWinHistory.length; ++i) { - var error = $root.gamehall.BigWinHistoryInfo.verify(message.BigWinHistory[i]); - if (error) - return "BigWinHistory." + error; - } - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - if (!$util.isInteger(message.GameId)) - return "GameId: integer expected"; - return null; - }; - - /** - * Creates a SCBigWinHistory message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof gamehall.SCBigWinHistory - * @static - * @param {Object.} object Plain object - * @returns {gamehall.SCBigWinHistory} SCBigWinHistory - */ - SCBigWinHistory.fromObject = function fromObject(object) { - if (object instanceof $root.gamehall.SCBigWinHistory) - return object; - var message = new $root.gamehall.SCBigWinHistory(); - if (object.BigWinHistory) { - if (!Array.isArray(object.BigWinHistory)) - throw TypeError(".gamehall.SCBigWinHistory.BigWinHistory: array expected"); - message.BigWinHistory = []; - for (var i = 0; i < object.BigWinHistory.length; ++i) { - if (typeof object.BigWinHistory[i] !== "object") - throw TypeError(".gamehall.SCBigWinHistory.BigWinHistory: object expected"); - message.BigWinHistory[i] = $root.gamehall.BigWinHistoryInfo.fromObject(object.BigWinHistory[i]); - } - } - if (object.GameId != null) - message.GameId = object.GameId | 0; - return message; - }; - - /** - * Creates a plain object from a SCBigWinHistory message. Also converts values to other types if specified. - * @function toObject - * @memberof gamehall.SCBigWinHistory - * @static - * @param {gamehall.SCBigWinHistory} message SCBigWinHistory - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SCBigWinHistory.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.BigWinHistory = []; - if (options.defaults) - object.GameId = 0; - if (message.BigWinHistory && message.BigWinHistory.length) { - object.BigWinHistory = []; - for (var j = 0; j < message.BigWinHistory.length; ++j) - object.BigWinHistory[j] = $root.gamehall.BigWinHistoryInfo.toObject(message.BigWinHistory[j], options); - } - if (message.GameId != null && message.hasOwnProperty("GameId")) - object.GameId = message.GameId; - return object; - }; - - /** - * Converts this SCBigWinHistory to JSON. - * @function toJSON - * @memberof gamehall.SCBigWinHistory - * @instance - * @returns {Object.} JSON object - */ - SCBigWinHistory.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for SCBigWinHistory - * @function getTypeUrl - * @memberof gamehall.SCBigWinHistory - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SCBigWinHistory.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/gamehall.SCBigWinHistory"; - }; - - return SCBigWinHistory; - })(); - - return gamehall; -})(); - -module.exports = $root; diff --git a/protocol/player/player.pb.go b/protocol/player/player.pb.go index 4b725cd..ada7556 100644 --- a/protocol/player/player.pb.go +++ b/protocol/player/player.pb.go @@ -412,6 +412,7 @@ const ( PlayerPacketID_PACKET_CSUpdateAttribute PlayerPacketID = 2840 //请求更新属性 PlayerPacketID_PACKET_SCUpdateAttribute PlayerPacketID = 2841 //返回更新属性 PlayerPacketID_PACKET_SCGuideConfig PlayerPacketID = 2842 //返回引导配置 + PlayerPacketID_PACKET_SCDataConfig PlayerPacketID = 2843 //通知配置更新 ) // Enum value maps for PlayerPacketID. @@ -558,6 +559,7 @@ var ( 2840: "PACKET_CSUpdateAttribute", 2841: "PACKET_SCUpdateAttribute", 2842: "PACKET_SCGuideConfig", + 2843: "PACKET_SCDataConfig", } PlayerPacketID_value = map[string]int32{ "PACKET_PLAYERPACKET_ZERO": 0, @@ -701,6 +703,7 @@ var ( "PACKET_CSUpdateAttribute": 2840, "PACKET_SCUpdateAttribute": 2841, "PACKET_SCGuideConfig": 2842, + "PACKET_SCDataConfig": 2843, } ) @@ -10893,6 +10896,169 @@ func (x *SCGuideConfig) GetSkip() int32 { return 0 } +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Tp 类型: + // 1:小精灵快捷入口 On开关 Value地址 + // 2:比赛观战开关 On开关 + // ... + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` + On bool `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` + Value string `protobuf:"bytes,3,opt,name=Value,proto3" json:"Value,omitempty"` + Num int64 `protobuf:"varint,4,opt,name=Num,proto3" json:"Num,omitempty"` + Values []string `protobuf:"bytes,5,rep,name=Values,proto3" json:"Values,omitempty"` + Nums []int64 `protobuf:"varint,6,rep,packed,name=Nums,proto3" json:"Nums,omitempty"` + Ons []bool `protobuf:"varint,7,rep,packed,name=Ons,proto3" json:"Ons,omitempty"` + Map map[int64]int64 `protobuf:"bytes,8,rep,name=Map,proto3" json:"Map,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + MapStr map[string]string `protobuf:"bytes,9,rep,name=MapStr,proto3" json:"MapStr,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_player_proto_msgTypes[156] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_player_proto_msgTypes[156] + 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 Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_player_proto_rawDescGZIP(), []int{156} +} + +func (x *Config) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +func (x *Config) GetOn() bool { + if x != nil { + return x.On + } + return false +} + +func (x *Config) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *Config) GetNum() int64 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *Config) GetValues() []string { + if x != nil { + return x.Values + } + return nil +} + +func (x *Config) GetNums() []int64 { + if x != nil { + return x.Nums + } + return nil +} + +func (x *Config) GetOns() []bool { + if x != nil { + return x.Ons + } + return nil +} + +func (x *Config) GetMap() map[int64]int64 { + if x != nil { + return x.Map + } + return nil +} + +func (x *Config) GetMapStr() map[string]string { + if x != nil { + return x.MapStr + } + return nil +} + +//PACKET_SCDataConfig +type SCDataConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Cfg []*Config `protobuf:"bytes,1,rep,name=Cfg,proto3" json:"Cfg,omitempty"` +} + +func (x *SCDataConfig) Reset() { + *x = SCDataConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_player_proto_msgTypes[157] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCDataConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCDataConfig) ProtoMessage() {} + +func (x *SCDataConfig) ProtoReflect() protoreflect.Message { + mi := &file_player_proto_msgTypes[157] + 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 SCDataConfig.ProtoReflect.Descriptor instead. +func (*SCDataConfig) Descriptor() ([]byte, []int) { + return file_player_proto_rawDescGZIP(), []int{157} +} + +func (x *SCDataConfig) GetCfg() []*Config { + if x != nil { + return x.Cfg + } + return nil +} + var File_player_proto protoreflect.FileDescriptor var file_player_proto_rawDesc = []byte{ @@ -12008,390 +12174,417 @@ var file_player_proto_rawDesc = []byte{ 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x33, 0x0a, 0x0d, 0x53, 0x43, 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x2a, 0x87, 0x0f, 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, 0x15, 0x0a, 0x10, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x10, 0xe8, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10, 0xef, 0x07, 0x12, 0x1c, 0x0a, - 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10, 0xf5, 0x07, 0x12, - 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, - 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, - 0x6f, 0x77, 0x10, 0x95, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, - 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xa0, 0x08, 0x12, 0x14, - 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x4e, 0x75, 0x6c, - 0x6c, 0x10, 0xa4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, - 0x6b, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xa5, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x10, 0xa6, - 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x63, 0x6f, 0x6e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x10, 0xa7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, - 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa8, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa9, 0x08, 0x12, 0x17, - 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaa, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xab, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xac, 0x08, 0x12, 0x1e, - 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xae, 0x08, 0x12, 0x17, - 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x52, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x10, 0xaf, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x49, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb0, 0x08, 0x12, 0x16, - 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x54, 0x6f, 0x6f, - 0x4c, 0x65, 0x6e, 0x10, 0xb1, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0xb2, 0x08, 0x12, - 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x49, 0x6c, - 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xbb, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xbc, 0x08, - 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x61, 0x64, 0x53, 0x70, 0x72, 0x65, - 0x61, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x10, 0xc2, 0x08, 0x12, 0x1b, - 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, - 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xc3, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc4, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xc5, 0x08, - 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, - 0x69, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, 0x6f, 0x70, 0x10, 0xc6, 0x08, - 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, - 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc7, - 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, - 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x10, 0xd0, 0x08, 0x12, 0x14, 0x0a, - 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x6f, 0x72, - 0x10, 0xd4, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0xd5, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd6, - 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x65, 0x72, 0x48, 0x61, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd7, 0x08, 0x12, 0x1c, 0x0a, 0x17, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x6f, 0x50, - 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x10, 0xd8, 0x08, 0x12, 0x28, 0x0a, 0x23, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, - 0x6c, 0x10, 0xd3, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, - 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd5, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, - 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd6, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x62, 0x6f, 0x78, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd7, 0x0f, 0x12, 0x1c, 0x0a, - 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd8, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd9, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, - 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xda, 0x0f, 0x12, 0x1e, 0x0a, - 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x4e, - 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdb, 0x0f, 0x12, 0x21, 0x0a, - 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdc, 0x0f, - 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, - 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, - 0x10, 0xdd, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, - 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, - 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xde, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x4e, - 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdf, 0x0f, 0x12, 0x22, 0x0a, - 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, - 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xe0, - 0x0f, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, - 0x6e, 0x6b, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x10, 0xe1, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, - 0x67, 0x10, 0xe2, 0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, - 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x10, 0xe3, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, - 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x10, 0xe4, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x61, 0x6e, - 0x6b, 0x41, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x5f, 0x4e, 0x6f, 0x74, 0x53, 0x61, 0x6d, 0x65, 0x10, - 0xe5, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, - 0x61, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe6, 0x0f, 0x12, 0x15, 0x0a, 0x10, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x10, - 0xb4, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x43, - 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xb5, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x10, - 0xb6, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x43, - 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x10, 0xb7, 0x10, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, - 0x42, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xd9, - 0x36, 0x12, 0x29, 0x0a, 0x24, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, - 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x43, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xda, 0x36, 0x12, 0x1a, 0x0a, 0x15, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xc1, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f, 0x46, 0x72, 0x6f, 0x6e, 0x74, - 0x10, 0xc2, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, - 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f, 0x45, 0x6e, 0x64, 0x10, 0xc3, 0x3e, 0x12, 0x15, 0x0a, 0x10, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x43, 0x6c, 0x6f, 0x73, 0x65, - 0x10, 0xc4, 0x3e, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, - 0x65, 0x5f, 0x53, 0x6b, 0x69, 0x70, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x53, 0x6b, 0x69, 0x70, 0x43, 0x6c, 0x6f, 0x73, - 0x65, 0x10, 0xc6, 0x3e, 0x2a, 0xad, 0x20, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x5a, - 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb4, 0x10, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb5, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x41, 0x59, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x10, 0xb6, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, - 0x54, 0x41, 0x10, 0xb7, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, - 0x54, 0x41, 0x10, 0xb8, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x10, 0xb9, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x45, 0x58, - 0x10, 0xba, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x50, 0x4d, 0x43, 0x4d, 0x44, 0x10, 0xbb, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x43, 0x48, 0x47, 0x44, - 0x41, 0x54, 0x41, 0x10, 0xbc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, - 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbd, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57, 0x45, 0x43, - 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbe, 0x10, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, - 0x49, 0x44, 0x10, 0xbf, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xc0, 0x10, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, - 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc1, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc2, 0x10, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x50, - 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, - 0x49, 0x4e, 0x44, 0x10, 0xc4, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x4f, 0x4b, - 0x45, 0x4e, 0x10, 0xc7, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, - 0x4e, 0x10, 0xc8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47, 0x10, 0xc9, - 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, - 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47, 0x41, 0x43, 0x4b, 0x10, 0xca, - 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, - 0x52, 0x56, 0x4d, 0x53, 0x47, 0x10, 0xcb, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, - 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcc, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, - 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcd, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, - 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xce, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, - 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xcf, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, - 0x4e, 0x44, 0x10, 0xd0, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10, - 0xd1, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd2, 0x10, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, - 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xd3, - 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, - 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, - 0x10, 0xd4, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, 0x73, 0x4f, 0x70, - 0x65, 0x6e, 0x10, 0xd5, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, - 0xd6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdc, 0x10, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdd, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e, - 0x10, 0xde, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xdf, 0x10, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe0, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, - 0xe1, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xe2, - 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, - 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xe3, 0x10, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, - 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, - 0x50, 0x41, 0x59, 0x10, 0xe5, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe6, 0x10, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, - 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe7, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f, - 0x49, 0x4e, 0x10, 0xe8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, - 0xe9, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xea, - 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0xeb, 0x10, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xec, - 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, - 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43, 0x4f, 0x44, 0x45, 0x10, - 0xed, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xee, - 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, - 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x10, - 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, - 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, - 0xf0, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49, 0x4e, 0x4c, 0x4f, - 0x47, 0x10, 0xf1, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf2, 0x10, 0x12, 0x17, 0x0a, - 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, - 0x54, 0x45, 0x52, 0x10, 0xf3, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45, 0x10, - 0xf4, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf5, 0x10, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4e, 0x56, 0x49, - 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, - 0x45, 0x10, 0xf7, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, - 0x41, 0x53, 0x53, 0x10, 0xf8, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf9, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, - 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfa, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x53, - 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfb, 0x10, 0x12, 0x21, 0x0a, 0x1c, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, - 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfc, 0x10, 0x12, - 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, - 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, - 0xfd, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, - 0x4f, 0x44, 0x45, 0x10, 0xfe, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xff, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, - 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x80, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4f, 0x53, 0x49, 0x4e, 0x53, 0x54, - 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x81, 0x11, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x82, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x10, 0x83, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x84, 0x11, 0x12, - 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, - 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x85, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, - 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0x86, 0x11, 0x12, - 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x87, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, - 0x49, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x88, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x52, 0x55, 0x53, 0x54, 0x45, 0x45, - 0x53, 0x48, 0x49, 0x50, 0x54, 0x49, 0x50, 0x53, 0x10, 0x89, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, - 0x47, 0x10, 0x8a, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x47, 0x41, 0x4d, 0x45, 0x45, 0x58, 0x44, 0x52, 0x4f, 0x50, 0x49, 0x54, 0x45, 0x4d, 0x53, - 0x10, 0x8b, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8c, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8d, - 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, - 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, 0x8e, 0x11, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, - 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, 0x8f, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x90, - 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, - 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x91, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x92, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x93, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x94, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x41, 0x59, 0x47, 0x4f, 0x4f, 0x44, 0x53, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0x95, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x96, 0x11, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4c, 0x49, 0x45, - 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x97, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, - 0x47, 0x10, 0x98, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x99, 0x11, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x54, 0x54, 0x50, - 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x9a, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9b, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9c, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf1, 0x15, - 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x65, - 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf2, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, - 0x77, 0x65, 0x72, 0x10, 0xf3, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, - 0x72, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xf4, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x70, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x10, 0xf5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, - 0x10, 0xf6, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf7, 0x15, - 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, - 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf8, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf9, 0x15, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, - 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x10, 0xfb, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfc, 0x15, 0x12, 0x16, 0x0a, 0x11, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, - 0x74, 0x10, 0xfd, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x10, - 0xfe, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, - 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xff, 0x15, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x80, - 0x16, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, - 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, - 0x81, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x82, 0x16, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, - 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x83, 0x16, 0x12, 0x20, 0x0a, 0x1b, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0x84, 0x16, 0x12, 0x11, - 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x41, 0x44, 0x56, 0x10, 0x85, - 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x41, 0x44, - 0x56, 0x10, 0x86, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, 0x64, 0x41, 0x77, 0x61, 0x72, - 0x79, 0x10, 0x87, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x88, 0x16, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0x89, 0x16, 0x12, 0x1d, - 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0x8a, 0x16, 0x12, 0x17, 0x0a, - 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x10, 0x8b, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x8c, 0x16, 0x12, - 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, - 0x8d, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0x8e, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x10, 0x8f, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, - 0x10, 0x90, 0x16, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, - 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x91, 0x16, 0x12, 0x26, 0x0a, 0x21, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x10, 0x92, 0x16, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x49, 0x74, 0x65, 0x6d, 0x10, 0x93, 0x16, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x10, 0x94, 0x16, 0x12, - 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x4c, 0x6f, 0x67, 0x10, 0x95, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x96, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x97, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x98, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x99, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x75, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x10, 0x9a, 0x16, 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, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x22, 0xe0, 0x02, 0x0a, 0x06, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, + 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x75, 0x6d, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x03, 0x52, 0x04, 0x4e, 0x75, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x6e, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x08, 0x52, 0x03, 0x4f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x4d, + 0x61, 0x70, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x32, 0x0a, 0x06, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x06, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x1a, 0x36, 0x0a, 0x08, 0x4d, 0x61, + 0x70, 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, 0x39, 0x0a, 0x0b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x30, 0x0a, + 0x0c, 0x53, 0x43, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, + 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x2a, + 0x87, 0x0f, 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, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xe8, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10, + 0xef, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, + 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07, + 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x10, 0xf5, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, + 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, + 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, + 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x95, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, + 0x10, 0xa0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, + 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0xa4, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xa5, 0x08, + 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x74, 0x6c, 0x79, 0x10, 0xa6, 0x08, 0x12, 0x13, 0x0a, 0x0e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, + 0x63, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa7, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x53, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xa8, 0x08, 0x12, + 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x10, 0xa9, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x73, 0x65, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xaa, 0x08, 0x12, 0x1f, 0x0a, 0x1a, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xab, 0x08, 0x12, 0x14, 0x0a, + 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x10, 0xac, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, + 0x42, 0x6f, 0x78, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x10, 0xae, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x49, + 0x73, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x10, 0xaf, 0x08, 0x12, 0x15, 0x0a, 0x10, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, + 0x10, 0xb0, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, 0x6b, + 0x49, 0x73, 0x54, 0x6f, 0x6f, 0x4c, 0x65, 0x6e, 0x10, 0xb1, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x71, 0x75, 0x61, + 0x6c, 0x10, 0xb2, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x69, 0x63, + 0x6b, 0x49, 0x73, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xbb, 0x08, 0x12, 0x16, 0x0a, + 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x64, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x10, 0xbc, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x61, + 0x64, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x10, 0xc2, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xc3, 0x08, + 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x42, + 0x69, 0x6e, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xc4, 0x08, 0x12, 0x17, 0x0a, 0x12, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x42, 0x69, + 0x6e, 0x64, 0x10, 0xc5, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x70, + 0x72, 0x65, 0x61, 0x64, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x4c, 0x6f, + 0x6f, 0x70, 0x10, 0xc6, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x10, 0xc7, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, + 0x69, 0x63, 0x6b, 0x49, 0x73, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x10, + 0xd0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x50, 0x72, 0x6f, + 0x6d, 0x6f, 0x74, 0x6f, 0x72, 0x10, 0xd4, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4e, 0x6f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x10, 0xd5, 0x08, 0x12, 0x16, + 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x74, 0x55, 0x73, 0x65, 0x72, 0x42, + 0x69, 0x6e, 0x64, 0x10, 0xd6, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, + 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x48, 0x61, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x10, 0xd7, + 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x10, 0xd8, 0x08, 0x12, + 0x28, 0x0a, 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, + 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xd3, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd5, 0x0f, 0x12, 0x21, 0x0a, 0x1c, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, + 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd6, 0x0f, 0x12, + 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x66, 0x65, 0x62, 0x6f, 0x78, 0x5f, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, + 0xd7, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd8, 0x0f, + 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, + 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, 0xd9, + 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, + 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x10, + 0xda, 0x0f, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, + 0xdb, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, + 0x61, 0x6c, 0x10, 0xdc, 0x0f, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, + 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, + 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xdd, 0x0f, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, 0xde, 0x0f, 0x12, 0x23, 0x0a, + 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, + 0x5f, 0x41, 0x63, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x6c, 0x6c, 0x65, 0x67, 0x61, 0x6c, 0x10, + 0xdf, 0x0f, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, + 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x10, 0xe0, 0x0f, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, + 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xe1, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x6f, 0x6f, 0x4d, + 0x61, 0x6e, 0x79, 0x52, 0x65, 0x67, 0x10, 0xe2, 0x0f, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe3, 0x0f, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe4, 0x0f, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6e, 0x64, 0x41, 0x6c, 0x69, 0x5f, 0x4e, 0x6f, 0x74, + 0x53, 0x61, 0x6d, 0x65, 0x10, 0xe5, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x42, 0x69, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x5f, 0x4e, + 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0xe6, 0x0f, + 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x10, 0xb4, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x4a, 0x79, 0x62, 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0xb5, 0x10, + 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4a, 0x79, 0x62, 0x5f, 0x54, 0x69, 0x6d, + 0x65, 0x45, 0x72, 0x72, 0x10, 0xb6, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x4a, 0x79, 0x62, 0x5f, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72, 0x10, 0xb7, 0x10, 0x12, 0x26, + 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, + 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x65, 0x74, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x10, 0xd9, 0x36, 0x12, 0x29, 0x0a, 0x24, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, + 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x5f, 0x59, 0x6f, 0x75, 0x48, 0x61, 0x64, 0x42, 0x61, 0x6e, + 0x6b, 0x65, 0x72, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xda, + 0x36, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, + 0x74, 0x65, 0x70, 0x5f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xc1, 0x3e, 0x12, 0x19, 0x0a, + 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f, + 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x10, 0xc2, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x53, 0x74, 0x65, 0x70, 0x5f, 0x45, 0x6e, 0x64, 0x10, 0xc3, + 0x3e, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, + 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xc4, 0x3e, 0x12, 0x14, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x53, 0x6b, 0x69, 0x70, 0x10, 0xc5, 0x3e, 0x12, 0x19, + 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x75, 0x69, 0x64, 0x65, 0x5f, 0x53, 0x6b, 0x69, + 0x70, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xc6, 0x3e, 0x2a, 0xc7, 0x20, 0x0a, 0x0e, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x18, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, + 0x54, 0x41, 0x10, 0xb4, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb5, 0x10, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x41, + 0x59, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0xb6, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb7, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x49, 0x52, 0x44, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xb8, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, + 0x54, 0x41, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xb9, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, + 0x41, 0x54, 0x41, 0x45, 0x58, 0x10, 0xba, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4d, 0x43, 0x4d, 0x44, 0x10, 0xbb, 0x10, 0x12, 0x1b, + 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x4f, 0x42, 0x4f, + 0x54, 0x43, 0x48, 0x47, 0x44, 0x41, 0x54, 0x41, 0x10, 0xbc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x57, + 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbd, 0x10, 0x12, 0x21, + 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x57, 0x45, 0x43, 0x48, 0x41, 0x54, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0xbe, + 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, + 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, 0x10, 0xbf, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x49, 0x44, + 0x10, 0xc0, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xc1, 0x10, 0x12, 0x17, 0x0a, 0x12, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, + 0x4d, 0x45, 0x10, 0xc2, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x53, 0x50, 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc3, 0x10, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x50, + 0x52, 0x45, 0x41, 0x44, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xc4, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc7, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x4e, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x10, 0xc8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, + 0x4d, 0x53, 0x47, 0x10, 0xc9, 0x10, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x4e, 0x45, 0x57, 0x4d, 0x53, 0x47, + 0x41, 0x43, 0x4b, 0x10, 0xca, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x52, 0x56, 0x4d, 0x53, 0x47, 0x10, 0xcb, 0x10, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, + 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcc, 0x10, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, + 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xcd, 0x10, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, + 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xce, 0x10, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x49, 0x53, 0x48, 0x4a, + 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x44, 0x41, 0x54, 0x41, 0x10, 0xcf, 0x10, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, + 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd0, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, + 0x4f, 0x54, 0x45, 0x52, 0x10, 0xd1, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, + 0x52, 0x10, 0xd2, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x50, 0x52, 0x4f, 0x4d, 0x4f, 0x54, 0x45, 0x52, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x10, 0xd3, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, 0x57, 0x49, + 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd4, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x65, 0x74, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x4c, + 0x57, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xd5, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x61, 0x79, 0x41, 0x63, 0x74, 0x5f, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x10, 0xd6, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, + 0xdc, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x4e, 0x49, 0x43, 0x4b, 0x10, 0xdd, 0x10, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x49, 0x43, 0x4f, 0x4e, 0x10, 0xde, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x49, 0x43, 0x4f, 0x4e, + 0x10, 0xdf, 0x10, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x45, 0x58, 0x10, 0xe0, 0x10, 0x12, 0x18, 0x0a, + 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, + 0x45, 0x53, 0x45, 0x58, 0x10, 0xe1, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x10, 0xe2, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x41, 0x43, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x10, 0xe3, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe4, 0x10, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x49, + 0x4e, 0x44, 0x41, 0x4c, 0x49, 0x50, 0x41, 0x59, 0x10, 0xe5, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, + 0x4b, 0x10, 0xe6, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0xe7, 0x10, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, + 0x52, 0x4f, 0x50, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe8, 0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4f, 0x50, + 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xe9, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, + 0x4f, 0x52, 0x44, 0x10, 0xea, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, + 0x52, 0x44, 0x10, 0xeb, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x43, + 0x4f, 0x44, 0x45, 0x10, 0xec, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x43, 0x4f, 0x44, 0x45, 0x10, 0xed, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, + 0x4c, 0x4f, 0x47, 0x10, 0xee, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x49, 0x4e, 0x4c, + 0x4f, 0x47, 0x10, 0xef, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, 0x4f, 0x49, + 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x41, 0x46, 0x45, 0x42, 0x4f, 0x58, 0x43, + 0x4f, 0x49, 0x4e, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, + 0xf2, 0x10, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0xf3, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, + 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xf4, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x4f, 0x55, 0x54, 0x4c, 0x49, 0x4e, 0x45, + 0x10, 0xf5, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf6, 0x10, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4e, 0x56, 0x49, + 0x54, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xf7, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf8, 0x10, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, 0x49, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x53, 0x53, 0x10, 0xf9, 0x10, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x42, 0x41, 0x50, + 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfa, 0x10, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x42, + 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x50, 0x41, 0x53, 0x53, 0x10, 0xfb, + 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, + 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, + 0x45, 0x10, 0xfc, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x47, 0x45, 0x54, 0x49, 0x4d, 0x41, 0x47, 0x45, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, + 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfd, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xfe, 0x10, 0x12, 0x22, 0x0a, 0x1d, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x53, 0x4c, 0x49, 0x44, + 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x43, 0x4f, 0x44, 0x45, 0x10, 0xff, 0x10, 0x12, + 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x4f, 0x53, + 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x80, 0x11, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x4f, + 0x53, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x81, + 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, + 0x55, 0x45, 0x52, 0x59, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x82, 0x11, 0x12, 0x1a, 0x0a, + 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0x83, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, + 0x47, 0x10, 0x84, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x47, 0x45, 0x54, 0x44, 0x41, 0x54, 0x41, 0x4c, 0x4f, 0x47, 0x10, 0x85, 0x11, 0x12, + 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, + 0x52, 0x10, 0x86, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x87, 0x11, 0x12, + 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x88, 0x11, + 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x52, + 0x55, 0x53, 0x54, 0x45, 0x45, 0x53, 0x48, 0x49, 0x50, 0x54, 0x49, 0x50, 0x53, 0x10, 0x89, 0x11, + 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x53, + 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x8a, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x45, 0x58, 0x44, 0x52, 0x4f, 0x50, + 0x49, 0x54, 0x45, 0x4d, 0x53, 0x10, 0x8b, 0x11, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x42, 0x55, 0x59, 0x10, 0x8c, 0x11, 0x12, + 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, + 0x42, 0x55, 0x59, 0x10, 0x8d, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, + 0x8e, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x44, 0x52, 0x41, 0x57, 0x56, 0x49, 0x50, 0x47, 0x49, 0x46, 0x54, 0x10, 0x8f, 0x11, 0x12, 0x16, + 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x49, + 0x4e, 0x46, 0x4f, 0x10, 0x90, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x91, 0x11, 0x12, 0x1b, + 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x57, 0x45, 0x4c, + 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x92, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, 0x76, + 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x93, 0x11, 0x12, 0x1f, 0x0a, 0x1a, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x49, 0x50, 0x50, 0x72, 0x69, + 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x94, 0x11, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x41, 0x59, 0x47, 0x4f, + 0x4f, 0x44, 0x53, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x95, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x10, 0x96, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x97, 0x11, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4c, 0x49, 0x45, + 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x98, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, + 0x10, 0x99, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x10, 0x9a, 0x11, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9b, 0x11, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x6d, 0x61, 0x67, 0x65, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0x9c, 0x11, 0x12, 0x16, 0x0a, + 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, + 0x72, 0x6c, 0x10, 0xf1, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x48, 0x65, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x10, 0xf2, 0x15, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x55, 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x10, 0xf3, 0x15, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, + 0x6e, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xf4, 0x15, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x55, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0xf5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, + 0x53, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf6, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x4d, 0x53, 0x43, 0x6f, + 0x64, 0x65, 0x10, 0xf7, 0x15, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x10, 0xf8, 0x15, 0x12, 0x15, 0x0a, 0x10, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, + 0x10, 0xf9, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x42, 0x69, 0x6e, 0x64, 0x54, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x15, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x54, + 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfb, 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfc, + 0x15, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, + 0x6c, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xfd, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfe, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x53, 0x61, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, + 0x66, 0x6f, 0x10, 0xff, 0x15, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, + 0x6e, 0x66, 0x6f, 0x10, 0x80, 0x16, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x81, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x10, 0x82, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x83, + 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x10, 0x84, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x41, 0x44, 0x56, 0x10, 0x85, 0x16, 0x12, 0x11, 0x0a, 0x0c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x41, 0x44, 0x56, 0x10, 0x86, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x65, 0x74, 0x57, 0x65, 0x65, 0x6b, 0x43, 0x61, 0x72, + 0x64, 0x41, 0x77, 0x61, 0x72, 0x79, 0x10, 0x87, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, + 0x6e, 0x10, 0x88, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x10, 0x89, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x10, + 0x8a, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, + 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x8b, 0x16, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x4d, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x10, 0x8c, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x8d, 0x16, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0x8e, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x8f, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x10, 0x90, 0x16, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x91, 0x16, + 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x4c, 0x75, 0x63, 0x6b, 0x79, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x92, 0x16, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x93, 0x16, 0x12, 0x16, 0x0a, 0x11, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, + 0x67, 0x10, 0x94, 0x16, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x10, 0x95, 0x16, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x96, 0x16, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x6f, 0x70, 0x55, 0x70, + 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x97, 0x16, + 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x98, 0x16, 0x12, + 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x99, 0x16, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x47, 0x75, 0x69, 0x64, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x9a, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x10, 0x9b, 0x16, 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, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -12407,7 +12600,7 @@ func file_player_proto_rawDescGZIP() []byte { } var file_player_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_player_proto_msgTypes = make([]protoimpl.MessageInfo, 163) +var file_player_proto_msgTypes = make([]protoimpl.MessageInfo, 167) var file_player_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: player.OpResultCode (PlayerPacketID)(0), // 1: player.PlayerPacketID @@ -12567,24 +12760,28 @@ var file_player_proto_goTypes = []interface{}{ (*CSUpdateAttribute)(nil), // 155: player.CSUpdateAttribute (*SCUpdateAttribute)(nil), // 156: player.SCUpdateAttribute (*SCGuideConfig)(nil), // 157: player.SCGuideConfig - nil, // 158: player.PlayerData.RankScoreEntry - nil, // 159: player.SCPlayerDataUpdate.RankScoreEntry - nil, // 160: player.SCGameExDropItems.ItemsEntry - nil, // 161: player.SCVIPDraw.AwardEntry - nil, // 162: player.VIPcfg.Privilege1Entry - nil, // 163: player.VIPcfg.Privilege9Entry - nil, // 164: player.SCBindTelInfo.BindTelRewardEntry - (*server.DB_GameItem)(nil), // 165: server.DB_GameItem + (*Config)(nil), // 158: player.Config + (*SCDataConfig)(nil), // 159: player.SCDataConfig + nil, // 160: player.PlayerData.RankScoreEntry + nil, // 161: player.SCPlayerDataUpdate.RankScoreEntry + nil, // 162: player.SCGameExDropItems.ItemsEntry + nil, // 163: player.SCVIPDraw.AwardEntry + nil, // 164: player.VIPcfg.Privilege1Entry + nil, // 165: player.VIPcfg.Privilege9Entry + nil, // 166: player.SCBindTelInfo.BindTelRewardEntry + nil, // 167: player.Config.MapEntry + nil, // 168: player.Config.MapStrEntry + (*server.DB_GameItem)(nil), // 169: server.DB_GameItem } var file_player_proto_depIdxs = []int32{ 4, // 0: player.SCBillList.Items:type_name -> player.BillItem 0, // 1: player.SCSavePlayerInfo.OpRetCode:type_name -> player.OpResultCode - 158, // 2: player.PlayerData.RankScore:type_name -> player.PlayerData.RankScoreEntry + 160, // 2: player.PlayerData.RankScore:type_name -> player.PlayerData.RankScoreEntry 9, // 3: player.PlayerData.WeekCard:type_name -> player.WeekInfo 0, // 4: player.SCPlayerData.OpRetCode:type_name -> player.OpResultCode 8, // 5: player.SCPlayerData.Data:type_name -> player.PlayerData 10, // 6: player.SCPlayerData.MiniGameArr:type_name -> player.MiniGameInfo - 159, // 7: player.SCPlayerDataUpdate.RankScore:type_name -> player.SCPlayerDataUpdate.RankScoreEntry + 161, // 7: player.SCPlayerDataUpdate.RankScore:type_name -> player.SCPlayerDataUpdate.RankScoreEntry 8, // 8: player.SCThirdPlayerData.Data:type_name -> player.PlayerData 0, // 9: player.SCChangeNick.OpRetCode:type_name -> player.OpResultCode 0, // 10: player.SCChangePassword.OpRetCode:type_name -> player.OpResultCode @@ -12621,19 +12818,19 @@ var file_player_proto_depIdxs = []int32{ 93, // 41: player.JybInfoAward.ItemId:type_name -> player.ItemInfo 0, // 42: player.SCPlayerSetting.OpRetCode:type_name -> player.OpResultCode 94, // 43: player.SCPlayerSetting.GainItem:type_name -> player.JybInfoAward - 160, // 44: player.SCGameExDropItems.Items:type_name -> player.SCGameExDropItems.ItemsEntry + 162, // 44: player.SCGameExDropItems.Items:type_name -> player.SCGameExDropItems.ItemsEntry 0, // 45: player.SCVIPBuy.OpRetCode:type_name -> player.OpResultCode 0, // 46: player.SCVIPDraw.OpRetCode:type_name -> player.OpResultCode - 161, // 47: player.SCVIPDraw.Award:type_name -> player.SCVIPDraw.AwardEntry + 163, // 47: player.SCVIPDraw.Award:type_name -> player.SCVIPDraw.AwardEntry 93, // 48: player.VIPcfg.Item:type_name -> player.ItemInfo - 162, // 49: player.VIPcfg.Privilege1:type_name -> player.VIPcfg.Privilege1Entry + 164, // 49: player.VIPcfg.Privilege1:type_name -> player.VIPcfg.Privilege1Entry 93, // 50: player.VIPcfg.Privilege7:type_name -> player.ItemInfo - 163, // 51: player.VIPcfg.Privilege9:type_name -> player.VIPcfg.Privilege9Entry + 165, // 51: player.VIPcfg.Privilege9:type_name -> player.VIPcfg.Privilege9Entry 0, // 52: player.SCVIPInfo.OpRetCode:type_name -> player.OpResultCode 103, // 53: player.SCVIPInfo.List:type_name -> player.VIPcfg 108, // 54: player.SCPayGoodsInfo.Item:type_name -> player.PayItem 0, // 55: player.SCClientLog.OpRetCode:type_name -> player.OpResultCode - 164, // 56: player.SCBindTelInfo.BindTelReward:type_name -> player.SCBindTelInfo.BindTelRewardEntry + 166, // 56: player.SCBindTelInfo.BindTelReward:type_name -> player.SCBindTelInfo.BindTelRewardEntry 0, // 57: player.SCPlayerSMSCode.Code:type_name -> player.OpResultCode 0, // 58: player.SCBindTel.Code:type_name -> player.OpResultCode 0, // 59: player.SCHttpPass.OpRetCode:type_name -> player.OpResultCode @@ -12646,17 +12843,20 @@ var file_player_proto_depIdxs = []int32{ 128, // 66: player.SCDiamondLotteryInfo.Item:type_name -> player.LotteryItem 128, // 67: player.SCDiamondLottery.Item:type_name -> player.LotteryItem 128, // 68: player.SCDiamondLotteryLuckyAward.Item:type_name -> player.LotteryItem - 165, // 69: player.SCItem.Items:type_name -> server.DB_GameItem + 169, // 69: player.SCItem.Items:type_name -> server.DB_GameItem 149, // 70: player.SCAwardLog.AwardLog:type_name -> player.AwardLogData 151, // 71: player.SCAwardLog.AnnouncerLog:type_name -> player.AnnouncerLogInfo 150, // 72: player.AwardLogData.AwardLog:type_name -> player.AwardLogInfo 154, // 73: player.SCPopUpWindowsConfig.Info:type_name -> player.WindowsInfo 0, // 74: player.SCUpdateAttribute.OpRetCode:type_name -> player.OpResultCode - 75, // [75:75] is the sub-list for method output_type - 75, // [75:75] is the sub-list for method input_type - 75, // [75:75] is the sub-list for extension type_name - 75, // [75:75] is the sub-list for extension extendee - 0, // [0:75] is the sub-list for field type_name + 167, // 75: player.Config.Map:type_name -> player.Config.MapEntry + 168, // 76: player.Config.MapStr:type_name -> player.Config.MapStrEntry + 158, // 77: player.SCDataConfig.Cfg:type_name -> player.Config + 78, // [78:78] is the sub-list for method output_type + 78, // [78:78] is the sub-list for method input_type + 78, // [78:78] is the sub-list for extension type_name + 78, // [78:78] is the sub-list for extension extendee + 0, // [0:78] is the sub-list for field type_name } func init() { file_player_proto_init() } @@ -14537,6 +14737,30 @@ func file_player_proto_init() { return nil } } + file_player_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_player_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCDataConfig); 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{ @@ -14544,7 +14768,7 @@ func file_player_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_player_proto_rawDesc, NumEnums: 2, - NumMessages: 163, + NumMessages: 167, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/player/player.proto b/protocol/player/player.proto index 986daad..d336347 100644 --- a/protocol/player/player.proto +++ b/protocol/player/player.proto @@ -204,7 +204,6 @@ enum PlayerPacketID { PACKET_SCBillList = 2813; // 账变记录 PACKET_CSSavePlayerInfo = 2814; // 保存个人资料 PACKET_SCSavePlayerInfo = 2815; // 保存个人资料 - PACKET_CS_PhoneLotteryInfo = 2816;//请求抽奖信息 PACKET_SC_PhoneLotteryInfo = 2817;//返回抽奖信息 PACKET_CS_PhoneLottery = 2818;//请求抽奖 @@ -232,6 +231,7 @@ enum PlayerPacketID { PACKET_CSUpdateAttribute = 2840;//请求更新属性 PACKET_SCUpdateAttribute = 2841;//返回更新属性 PACKET_SCGuideConfig = 2842;//返回引导配置 + PACKET_SCDataConfig = 2843;//通知配置更新 } // 账变记录 @@ -1346,4 +1346,25 @@ message SCUpdateAttribute{ message SCGuideConfig{ int32 On = 2; // 引导开关 1开启 2关闭 int32 Skip = 3; // 引导跳过开关 1开启 2关闭 +} + +message Config{ + // Tp 类型: + // 1:小精灵快捷入口 On开关 Value地址 + // 2:比赛观战开关 On开关 + // ... + int32 Tp = 1; + bool On = 2; + string Value = 3; + int64 Num = 4; + repeated string Values = 5; + repeated int64 Nums = 6; + repeated bool Ons = 7; + map Map = 8; + map MapStr = 9; +} + +//PACKET_SCDataConfig +message SCDataConfig{ + repeated Config Cfg = 1; } \ No newline at end of file diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index def91f5..8685ba9 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -4302,6 +4302,7 @@ type DB_GameFree struct { NegativeMax int32 `protobuf:"varint,70,opt,name=NegativeMax,proto3" json:"NegativeMax,omitempty"` RatioMax int32 `protobuf:"varint,71,opt,name=RatioMax,proto3" json:"RatioMax,omitempty"` IsDrop int32 `protobuf:"varint,72,opt,name=IsDrop,proto3" json:"IsDrop,omitempty"` + IsCustom int32 `protobuf:"varint,73,opt,name=IsCustom,proto3" json:"IsCustom,omitempty"` } func (x *DB_GameFree) Reset() { @@ -4840,6 +4841,13 @@ func (x *DB_GameFree) GetIsDrop() int32 { return 0 } +func (x *DB_GameFree) GetIsCustom() int32 { + if x != nil { + return x.IsCustom + } + return 0 +} + type DB_GameFreeArray struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -10738,9 +10746,11 @@ type DB_VIPShow struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - SkinId int32 `protobuf:"varint,2,opt,name=SkinId,proto3" json:"SkinId,omitempty"` - VIPLevel int32 `protobuf:"varint,3,opt,name=VIPLevel,proto3" json:"VIPLevel,omitempty"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` + SkinId int32 `protobuf:"varint,3,opt,name=SkinId,proto3" json:"SkinId,omitempty"` + VIPLevel int32 `protobuf:"varint,4,opt,name=VIPLevel,proto3" json:"VIPLevel,omitempty"` + VIPDes string `protobuf:"bytes,5,opt,name=VIPDes,proto3" json:"VIPDes,omitempty"` } func (x *DB_VIPShow) Reset() { @@ -10782,6 +10792,13 @@ func (x *DB_VIPShow) GetId() int32 { return 0 } +func (x *DB_VIPShow) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + func (x *DB_VIPShow) GetSkinId() int32 { if x != nil { return x.SkinId @@ -10796,6 +10813,13 @@ func (x *DB_VIPShow) GetVIPLevel() int32 { return 0 } +func (x *DB_VIPShow) GetVIPDes() string { + if x != nil { + return x.VIPDes + } + return "" +} + type DB_VIPShowArray struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -11380,7 +11404,7 @@ var file_pbdata_proto_rawDesc = []byte{ 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbd, 0x11, 0x0a, + 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd9, 0x11, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 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, @@ -11520,780 +11544,784 @@ var file_pbdata_proto_rawDesc = []byte{ 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, 0x61, 0x78, 0x18, 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x48, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x22, 0x39, 0x0a, 0x10, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xc5, 0x04, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, + 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x49, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x49, 0x73, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xc5, 0x04, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x74, 0x65, 0x6d, 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, 0x22, 0x0a, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x53, + 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x30, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, + 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, + 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6d, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, + 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, + 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, + 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x49, + 0x63, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, + 0x31, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 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, 0x39, 0x0a, 0x10, 0x44, + 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 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, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0x1e, 0x0a, 0x0a, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x0a, 0x0c, + 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x55, 0x70, + 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x6f, + 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, + 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 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, 0x22, 0x0a, 0x0c, 0x53, - 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0c, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x07, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x30, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x61, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x53, 0x61, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, - 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, - 0x63, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 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, - 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 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, 0x03, 0x41, 0x72, 0x72, 0x22, 0x87, 0x02, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 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, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x44, + 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x22, 0x39, 0x0a, + 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x3f, + 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 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, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x55, 0x70, 0x52, - 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x0b, 0x55, 0x70, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, - 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x4f, 0x64, 0x64, 0x73, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb3, 0x01, 0x0a, 0x0b, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 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, - 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 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, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x52, - 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, - 0x75, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, - 0x69, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, - 0x66, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x64, 0x0a, 0x0e, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x65, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, - 0x73, 0x69, 0x64, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x75, 0x62, 0x73, 0x69, 0x64, 0x79, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, - 0x44, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, - 0x6d, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, - 0x61, 0x6d, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x12, 0x14, - 0x0a, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, - 0x61, 0x74, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x22, 0x3b, - 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa0, 0x01, 0x0a, 0x14, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 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, - 0x53, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x22, 0x4b, - 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x0b, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, - 0x65, 0x74, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, - 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, - 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, - 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, - 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa3, - 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x36, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, - 0x66, 0x74, 0x42, 0x6f, 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x44, 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, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, - 0x6f, 0x78, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf1, 0x02, - 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x68, 0x6f, 0x70, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, - 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, - 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, - 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 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, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, + 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x31, + 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x31, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, + 0x74, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x65, 0x31, + 0x12, 0x18, 0x0a, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x07, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x31, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x44, 0x72, + 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 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, 0x53, 0x74, 0x6f, 0x72, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1e, + 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, + 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, + 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, + 0x61, 0x74, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, + 0x65, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x50, 0x65, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, + 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, + 0x11, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x5f, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x0a, 0x44, + 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, + 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, + 0x78, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x44, 0x1a, 0x39, 0x0a, 0x0b, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 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, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x42, 0x6f, 0x78, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, + 0x74, 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf1, 0x02, 0x0a, 0x0b, 0x44, 0x42, + 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, + 0x70, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x44, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, + 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x61, 0x79, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x44, 0x61, 0x79, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x71, + 0x75, 0x69, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x45, 0x71, 0x75, 0x69, + 0x74, 0x79, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 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, 0x44, 0x61, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 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, 0x39, 0x0a, + 0x10, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, + 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x49, + 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2e, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8e, 0x01, + 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, + 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, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, + 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, + 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x34, + 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, 0x35, 0x22, 0x3f, + 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, + 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0x88, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, + 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, + 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, + 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, + 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 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, 0x16, 0x0a, 0x06, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, + 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x19, 0x44, 0x42, 0x5f, + 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x08, + 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, + 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x72, 0x75, 0x65, + 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, + 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, 0x44, 0x42, 0x5f, 0x4c, + 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, + 0x3a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, 0x3b, 0x0a, 0x11, 0x44, + 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x4e, + 0x61, 0x6d, 0x65, 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, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x61, + 0x6d, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x42, + 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 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, 0x22, 0x37, 0x0a, 0x0f, + 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, + 0x47, 0x69, 0x72, 0x6c, 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, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4e, + 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x12, 0x1e, + 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x28, + 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x6e, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, + 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x78, 0x12, 0x16, + 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, + 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, + 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, + 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, + 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe9, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x65, + 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, + 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x65, + 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, + 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, + 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 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, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x47, 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x01, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, - 0x69, 0x66, 0x74, 0x43, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x76, 0x0a, 0x14, - 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, - 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x2e, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x49, 0x63, 0x65, 0x41, 0x67, - 0x65, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, - 0x4f, 0x64, 0x64, 0x73, 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, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, - 0x6f, 0x64, 0x64, 0x73, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, - 0x65, 0x6f, 0x64, 0x64, 0x73, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, - 0x64, 0x73, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, - 0x64, 0x64, 0x73, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, 0x73, - 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x61, 0x74, 0x65, 0x6f, 0x64, 0x64, - 0x73, 0x35, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, - 0x4f, 0x64, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, - 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x6e, - 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x47, - 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, - 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, - 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4e, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x4c, 0x65, - 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 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, - 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x4c, 0x65, - 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x2a, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, - 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x9d, 0x01, 0x0a, - 0x19, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, - 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, - 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0c, 0x54, 0x72, 0x75, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x52, 0x61, 0x74, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1e, - 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x33, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4c, 0x65, 0x67, 0x65, 0x6e, 0x64, 0x5f, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x3a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x72, 0x22, - 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x2d, 0x0a, 0x07, - 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 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, 0x22, 0x31, 0x0a, 0x0c, 0x44, - 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, - 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, - 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 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, - 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x79, 0x41, 0x72, - 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, - 0x65, 0x42, 0x6f, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x31, 0x0a, 0x0b, 0x44, 0x42, 0x5f, - 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 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, 0x22, 0x39, 0x0a, 0x10, - 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, 0x72, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x47, 0x69, - 0x72, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xb0, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x4e, - 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x32, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, - 0x42, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x42, 0x6f, 0x6e, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, - 0x64, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, - 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x41, 0x64, 0x64, 0x4d, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, - 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, - 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x50, 0x61, - 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x39, - 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, - 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x61, 0x73, 0x73, - 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xe9, 0x02, 0x0a, 0x0b, 0x44, 0x42, - 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x50, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6c, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x43, - 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x49, 0x74, 0x65, 0x6d, - 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 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, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0xa2, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 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, 0x05, 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, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, - 0x64, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, - 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, 0x0a, - 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, - 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, 0x0a, - 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, - 0x72, 0x61, 0x74, 0x65, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, - 0x72, 0x61, 0x74, 0x65, 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, - 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, - 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x02, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa2, 0x02, 0x0a, + 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 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, 0x05, 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, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x64, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, 0x64, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x32, 0x12, 0x12, 0x0a, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x4f, 0x64, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, + 0x72, 0x61, 0x74, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, + 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x64, 0x64, 0x72, 0x61, 0x74, 0x65, + 0x34, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x02, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, + 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x20, 0x0a, + 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, 0x12, + 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, + 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x69, + 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, + 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, + 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, + 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, + 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, + 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, + 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x30, + 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, + 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa5, 0x05, + 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x69, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x78, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x75, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x4d, 0x61, 0x78, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, - 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x47, 0x6f, 0x6c, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, - 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x28, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, - 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x69, - 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, - 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6f, 0x72, 0x70, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x72, 0x6f, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, - 0x6f, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x30, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, - 0x78, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x45, 0x78, 0x70, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x78, 0x70, 0x52, 0x03, 0x41, 0x72, - 0x72, 0x22, 0xa5, 0x05, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 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, 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, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, - 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, - 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, - 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, - 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, - 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, - 0x64, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, - 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, - 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, - 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, - 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, - 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, - 0x6f, 0x74, 0x4f, 0x64, 0x64, 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, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x06, 0x56, 0x69, 0x70, 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, - 0x74, 0x4f, 0x64, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x97, - 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, - 0x43, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, - 0x35, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 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, - 0x37, 0x0a, 0x09, 0x47, 0x61, 0x69, 0x6e, 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, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, - 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, - 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x45, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, - 0x63, 0x6c, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, - 0x22, 0x7a, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 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, 0x14, 0x0a, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, - 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, - 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, - 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x32, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x32, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, - 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, - 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, - 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x27, 0x0a, 0x0f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, - 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, - 0x74, 0x69, 0x76, 0x65, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, - 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0x83, 0x04, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x53, 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, - 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x53, 0x6b, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, - 0x65, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, - 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, - 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, - 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, - 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, - 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, - 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, - 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, - 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, - 0x75, 0x72, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x54, 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, - 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, - 0x6b, 0x69, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, - 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, - 0x69, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, - 0x49, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 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, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, - 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, - 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x55, 0x70, - 0x49, 0x74, 0x65, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 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, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x61, 0x79, 0x4c, + 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x61, 0x79, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x50, 0x61, 0x79, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x2e, 0x0a, 0x12, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x2c, 0x0a, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x49, 0x6e, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, + 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, + 0x6e, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, + 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x64, 0x64, 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x64, 0x64, + 0x73, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, + 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x72, 0x64, 0x52, 0x61, 0x74, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x43, 0x61, 0x72, 0x64, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, 0x52, 0x61, + 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, + 0x62, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x62, + 0x41, 0x72, 0x72, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x4c, + 0x69, 0x62, 0x41, 0x72, 0x72, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x03, 0x41, + 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0x5d, 0x0a, 0x09, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, + 0x64, 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, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x56, + 0x69, 0x70, 0x4f, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, + 0x4f, 0x64, 0x64, 0x22, 0x35, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x50, 0x6f, 0x74, 0x4f, 0x64, 0x64, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x23, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x6f, 0x74, 0x4f, 0x64, 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x97, 0x02, 0x0a, 0x0f, 0x44, + 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x35, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, + 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x73, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x35, 0x0a, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x1a, 0x37, 0x0a, 0x09, 0x43, 0x6f, 0x73, 0x74, 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, 0x37, 0x0a, 0x09, 0x47, + 0x61, 0x69, 0x6e, 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, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, + 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x50, 0x72, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x46, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x52, 0x61, + 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x45, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x45, 0x6e, 0x64, 0x22, + 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, + 0x6e, 0x6b, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7a, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xff, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, + 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x31, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x31, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x4e, + 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, + 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x49, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x33, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x33, 0x4e, 0x75, 0x6d, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x52, 0x61, + 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x27, 0x0a, + 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, + 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x57, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x2c, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x57, 0x6f, 0x72, 0x64, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x83, + 0x04, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x6b, + 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x6b, 0x69, 0x6e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x53, 0x6b, 0x69, 0x6e, 0x50, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x6b, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x3f, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, + 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, + 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x22, 0x0a, + 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x65, + 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x54, + 0x75, 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x54, 0x75, + 0x72, 0x6e, 0x4b, 0x65, 0x79, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x49, + 0x74, 0x65, 0x6d, 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, + 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd7, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x53, + 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x06, 0x55, 0x70, 0x49, 0x74, 0x65, 0x6d, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 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, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, + 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x6b, + 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x53, 0x6b, 0x69, 0x6e, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x73, 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, 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, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xbb, + 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 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, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, + 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, + 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, + 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, + 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x0d, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, + 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4d, + 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, 0x22, 0x45, 0x0a, 0x16, + 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, + 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, + 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, + 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, 0x03, 0x41, 0x72, + 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 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, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, + 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x03, 0x41, 0x72, - 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6b, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x41, - 0x72, 0x72, 0x22, 0xbb, 0x03, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, - 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 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, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6c, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, - 0x0a, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4e, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, - 0x72, 0x6d, 0x43, 0x6f, 0x6c, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x31, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x32, 0x12, 0x1a, - 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6c, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x35, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, - 0x6c, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x18, 0x0e, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x72, 0x79, 0x4f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x4d, 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4d, - 0x61, 0x72, 0x79, 0x4d, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, - 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x50, 0x6f, 0x74, - 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2b, 0x0a, 0x03, 0x41, 0x72, - 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7d, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, - 0x73, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1e, - 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x68, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfd, 0x02, 0x0a, 0x07, 0x44, 0x42, - 0x5f, 0x54, 0x61, 0x73, 0x6b, 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, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, - 0x54, 0x61, 0x73, 0x6b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, - 0x1b, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, - 0x12, 0x2c, 0x0a, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, - 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x44, 0x65, 0x73, 0x63, 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, - 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, - 0x69, 0x72, 0x64, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, - 0x72, 0x64, 0x49, 0x44, 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, - 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, - 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x43, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, - 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x44, 0x65, 0x73, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, - 0x70, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xce, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, - 0x49, 0x50, 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, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, - 0x70, 0x45, 0x78, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 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, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 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, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, - 0x49, 0x50, 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, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, - 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, - 0x49, 0x64, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, - 0x64, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, - 0x65, 0x38, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, - 0x49, 0x44, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, - 0x50, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, - 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, - 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x39, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, - 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 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, 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, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, - 0x49, 0x50, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x56, 0x49, 0x50, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x50, 0x0a, 0x0a, 0x44, 0x42, 0x5f, - 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x37, 0x0a, 0x0f, 0x44, - 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, - 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x52, - 0x03, 0x41, 0x72, 0x72, 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, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x61, 0x73, 0x6b, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x85, 0x02, 0x0a, 0x1b, 0x44, 0x42, 0x5f, + 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, + 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x2c, 0x0a, 0x11, + 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x04, + 0x44, 0x65, 0x73, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, + 0x12, 0x34, 0x0a, 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x15, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, + 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x68, 0x69, 0x72, 0x64, 0x49, 0x44, + 0x22, 0x59, 0x0a, 0x20, 0x44, 0x42, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x43, 0x0a, 0x07, 0x44, + 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x44, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x44, 0x65, 0x73, + 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, + 0x12, 0x21, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x54, 0x69, 0x70, 0x73, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0xce, 0x06, 0x0a, 0x06, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 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, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x56, 0x69, 0x70, 0x45, + 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x56, 0x69, 0x70, 0x45, 0x78, 0x70, + 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x05, 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, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x08, 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, 0x09, 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, 0x0a, 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, 0x0b, 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, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 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, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x14, + 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, + 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x2f, + 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x2e, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, + 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x72, 0x65, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x39, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, + 0x6c, 0x65, 0x67, 0x65, 0x39, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x50, 0x72, + 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x77, 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, 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, 0x2f, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x41, 0x72, + 0x72, 0x61, 0x79, 0x12, 0x20, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x7c, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, + 0x68, 0x6f, 0x77, 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, 0x16, 0x0a, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x56, 0x49, 0x50, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x56, + 0x49, 0x50, 0x44, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x56, 0x49, 0x50, + 0x44, 0x65, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, + 0x77, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x24, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x56, 0x49, 0x50, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x03, 0x41, 0x72, 0x72, 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, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index 490d130..f288601 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -837,6 +837,8 @@ message DB_GameFree { int32 IsDrop = 72; + int32 IsCustom = 73; + } message DB_GameFreeArray { @@ -1755,9 +1757,13 @@ message DB_VIPShow { int32 Id = 1; - int32 SkinId = 2; + int32 Type = 2; - int32 VIPLevel = 3; + int32 SkinId = 3; + + int32 VIPLevel = 4; + + string VIPDes = 5; } diff --git a/protocol/server/server.pb.go b/protocol/server/server.pb.go index 19e37f1..3f7a0d9 100644 --- a/protocol/server/server.pb.go +++ b/protocol/server/server.pb.go @@ -123,6 +123,7 @@ const ( SSPacketID_PACKET_GW_ADDSINGLEADJUST SSPacketID = 1551 SSPacketID_PACKET_WG_BUYRECTIMEITEM SSPacketID = 1552 SSPacketID_PACKET_WG_UpdateSkin SSPacketID = 1553 // 修改皮肤id + SSPacketID_PACKET_PlayerChangeItems SSPacketID = 1554 // 修改玩家道具数量 ) // Enum value maps for SSPacketID. @@ -224,6 +225,7 @@ var ( 1551: "PACKET_GW_ADDSINGLEADJUST", 1552: "PACKET_WG_BUYRECTIMEITEM", 1553: "PACKET_WG_UpdateSkin", + 1554: "PACKET_PlayerChangeItems", } SSPacketID_value = map[string]int32{ "PACKET_SERVER_ZERO": 0, @@ -322,6 +324,7 @@ var ( "PACKET_GW_ADDSINGLEADJUST": 1551, "PACKET_WG_BUYRECTIMEITEM": 1552, "PACKET_WG_UpdateSkin": 1553, + "PACKET_PlayerChangeItems": 1554, } ) @@ -845,41 +848,265 @@ func (x *ServerNotice) GetText() string { return "" } +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Num int64 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_server_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 Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{8} +} + +func (x *Item) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Item) GetNum() int64 { + if x != nil { + return x.Num + } + return 0 +} + +type CustomParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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"` // 房卡场付费方式 1房主 2AA + 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关闭 +} + +func (x *CustomParam) Reset() { + *x = CustomParam{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CustomParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CustomParam) ProtoMessage() {} + +func (x *CustomParam) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[9] + 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 CustomParam.ProtoReflect.Descriptor instead. +func (*CustomParam) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{9} +} + +func (x *CustomParam) GetRoomTypeId() int32 { + if x != nil { + return x.RoomTypeId + } + return 0 +} + +func (x *CustomParam) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + +func (x *CustomParam) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *CustomParam) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *CustomParam) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + +type MatchParam struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MatchSortId int64 `protobuf:"varint,1,opt,name=MatchSortId,proto3" json:"MatchSortId,omitempty"` // 比赛实例id + MatchId int32 `protobuf:"varint,2,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛配置id + IsFinals bool `protobuf:"varint,3,opt,name=IsFinals,proto3" json:"IsFinals,omitempty"` // 是否决赛 + CurrRound int32 `protobuf:"varint,4,opt,name=CurrRound,proto3" json:"CurrRound,omitempty"` // 当前第几轮 + CurrPlayerNum int32 `protobuf:"varint,5,opt,name=CurrPlayerNum,proto3" json:"CurrPlayerNum,omitempty"` // 本轮玩家数 + NextPlayerNum int32 `protobuf:"varint,6,opt,name=NextPlayerNum,proto3" json:"NextPlayerNum,omitempty"` // 下轮最大玩家数 + MatchType int32 `protobuf:"varint,7,opt,name=MatchType,proto3" json:"MatchType,omitempty"` // 比赛类型 +} + +func (x *MatchParam) Reset() { + *x = MatchParam{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MatchParam) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchParam) ProtoMessage() {} + +func (x *MatchParam) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[10] + 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 MatchParam.ProtoReflect.Descriptor instead. +func (*MatchParam) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{10} +} + +func (x *MatchParam) GetMatchSortId() int64 { + if x != nil { + return x.MatchSortId + } + return 0 +} + +func (x *MatchParam) GetMatchId() int32 { + if x != nil { + return x.MatchId + } + return 0 +} + +func (x *MatchParam) GetIsFinals() bool { + if x != nil { + return x.IsFinals + } + return false +} + +func (x *MatchParam) GetCurrRound() int32 { + if x != nil { + return x.CurrRound + } + return 0 +} + +func (x *MatchParam) GetCurrPlayerNum() int32 { + if x != nil { + return x.CurrPlayerNum + } + return 0 +} + +func (x *MatchParam) GetNextPlayerNum() int32 { + if x != nil { + return x.NextPlayerNum + } + return 0 +} + +func (x *MatchParam) GetMatchType() int32 { + if x != nil { + return x.MatchType + } + return 0 +} + //PACKET_WG_CREATESCENE type WGCreateScene struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SceneId int32 `protobuf:"varint,1,opt,name=SceneId,proto3" json:"SceneId,omitempty"` - GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` - GameMode int32 `protobuf:"varint,3,opt,name=GameMode,proto3" json:"GameMode,omitempty"` - Params []int64 `protobuf:"varint,4,rep,packed,name=Params,proto3" json:"Params,omitempty"` - Creator int32 `protobuf:"varint,5,opt,name=Creator,proto3" json:"Creator,omitempty"` - Agentor int32 `protobuf:"varint,6,opt,name=Agentor,proto3" json:"Agentor,omitempty"` - ReplayCode string `protobuf:"bytes,7,opt,name=ReplayCode,proto3" json:"ReplayCode,omitempty"` - ParamsEx []int32 `protobuf:"varint,8,rep,packed,name=ParamsEx,proto3" json:"ParamsEx,omitempty"` - SceneMode int32 `protobuf:"varint,9,opt,name=SceneMode,proto3" json:"SceneMode,omitempty"` - HallId int32 `protobuf:"varint,10,opt,name=HallId,proto3" json:"HallId,omitempty"` - Platform string `protobuf:"bytes,11,opt,name=Platform,proto3" json:"Platform,omitempty"` - DBGameFree *DB_GameFree `protobuf:"bytes,12,opt,name=DBGameFree,proto3" json:"DBGameFree,omitempty"` - GroupId int32 `protobuf:"varint,13,opt,name=GroupId,proto3" json:"GroupId,omitempty"` - EnterAfterStart bool `protobuf:"varint,14,opt,name=EnterAfterStart,proto3" json:"EnterAfterStart,omitempty"` - TotalOfGames int32 `protobuf:"varint,15,opt,name=TotalOfGames,proto3" json:"TotalOfGames,omitempty"` - Club int32 `protobuf:"varint,16,opt,name=Club,proto3" json:"Club,omitempty"` //俱乐部Id - ClubRoomId string `protobuf:"bytes,17,opt,name=ClubRoomId,proto3" json:"ClubRoomId,omitempty"` - ClubRoomPos int32 `protobuf:"varint,18,opt,name=ClubRoomPos,proto3" json:"ClubRoomPos,omitempty"` - ClubRate int32 `protobuf:"varint,19,opt,name=ClubRate,proto3" json:"ClubRate,omitempty"` - BaseScore int32 `protobuf:"varint,20,opt,name=BaseScore,proto3" json:"BaseScore,omitempty"` - PlayerNum int32 `protobuf:"varint,21,opt,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` - RealCtrl bool `protobuf:"varint,22,opt,name=RealCtrl,proto3" json:"RealCtrl,omitempty"` - ChessRank []int32 `protobuf:"varint,23,rep,packed,name=ChessRank,proto3" json:"ChessRank,omitempty"` + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + SceneId int32 `protobuf:"varint,2,opt,name=SceneId,proto3" json:"SceneId,omitempty"` // 房间id + GameId int32 `protobuf:"varint,3,opt,name=GameId,proto3" json:"GameId,omitempty"` // 游戏id + GameMode int32 `protobuf:"varint,4,opt,name=GameMode,proto3" json:"GameMode,omitempty"` // 废弃,游戏模式 + SceneMode int32 `protobuf:"varint,5,opt,name=SceneMode,proto3" json:"SceneMode,omitempty"` // 房间模式 + ReplayCode string `protobuf:"bytes,6,opt,name=ReplayCode,proto3" json:"ReplayCode,omitempty"` // 回放码 + DBGameFree *DB_GameFree `protobuf:"bytes,7,opt,name=DBGameFree,proto3" json:"DBGameFree,omitempty"` // 场次配置 + TotalOfGames int32 `protobuf:"varint,8,opt,name=TotalOfGames,proto3" json:"TotalOfGames,omitempty"` // 总局数 + PlayerNum int32 `protobuf:"varint,9,opt,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` // 最大玩家数 + EnterAfterStart bool `protobuf:"varint,10,opt,name=EnterAfterStart,proto3" json:"EnterAfterStart,omitempty"` // 是否开始后可加入 + Creator int32 `protobuf:"varint,11,opt,name=Creator,proto3" json:"Creator,omitempty"` // 创建者id + BaseScore int32 `protobuf:"varint,12,opt,name=BaseScore,proto3" json:"BaseScore,omitempty"` // 底分 + Items []*Item `protobuf:"bytes,13,rep,name=Items,proto3" json:"Items,omitempty"` // 获得道具 + CostItems []*Item `protobuf:"bytes,14,rep,name=CostItems,proto3" json:"CostItems,omitempty"` // 消耗道具 + Custom *CustomParam `protobuf:"bytes,15,opt,name=Custom,proto3" json:"Custom,omitempty"` // 房卡场参数 + Match *MatchParam `protobuf:"bytes,16,opt,name=Match,proto3" json:"Match,omitempty"` // 比赛场参数 + ChessRank []int32 `protobuf:"varint,26,rep,packed,name=ChessRank,proto3" json:"ChessRank,omitempty"` // 象棋段位配置 + Params []int64 `protobuf:"varint,27,rep,packed,name=Params,proto3" json:"Params,omitempty"` // 游戏参数,GameRule中定义,不要有其他用途,含义不明确 } func (x *WGCreateScene) Reset() { *x = WGCreateScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[8] + mi := &file_server_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -892,7 +1119,7 @@ func (x *WGCreateScene) String() string { func (*WGCreateScene) ProtoMessage() {} func (x *WGCreateScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[8] + mi := &file_server_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -905,7 +1132,14 @@ func (x *WGCreateScene) ProtoReflect() protoreflect.Message { // Deprecated: Use WGCreateScene.ProtoReflect.Descriptor instead. func (*WGCreateScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{8} + return file_server_proto_rawDescGZIP(), []int{11} +} + +func (x *WGCreateScene) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" } func (x *WGCreateScene) GetSceneId() int32 { @@ -929,23 +1163,9 @@ func (x *WGCreateScene) GetGameMode() int32 { return 0 } -func (x *WGCreateScene) GetParams() []int64 { +func (x *WGCreateScene) GetSceneMode() int32 { if x != nil { - return x.Params - } - return nil -} - -func (x *WGCreateScene) GetCreator() int32 { - if x != nil { - return x.Creator - } - return 0 -} - -func (x *WGCreateScene) GetAgentor() int32 { - if x != nil { - return x.Agentor + return x.SceneMode } return 0 } @@ -957,34 +1177,6 @@ func (x *WGCreateScene) GetReplayCode() string { return "" } -func (x *WGCreateScene) GetParamsEx() []int32 { - if x != nil { - return x.ParamsEx - } - return nil -} - -func (x *WGCreateScene) GetSceneMode() int32 { - if x != nil { - return x.SceneMode - } - return 0 -} - -func (x *WGCreateScene) GetHallId() int32 { - if x != nil { - return x.HallId - } - return 0 -} - -func (x *WGCreateScene) GetPlatform() string { - if x != nil { - return x.Platform - } - return "" -} - func (x *WGCreateScene) GetDBGameFree() *DB_GameFree { if x != nil { return x.DBGameFree @@ -992,20 +1184,6 @@ func (x *WGCreateScene) GetDBGameFree() *DB_GameFree { return nil } -func (x *WGCreateScene) GetGroupId() int32 { - if x != nil { - return x.GroupId - } - return 0 -} - -func (x *WGCreateScene) GetEnterAfterStart() bool { - if x != nil { - return x.EnterAfterStart - } - return false -} - func (x *WGCreateScene) GetTotalOfGames() int32 { if x != nil { return x.TotalOfGames @@ -1013,41 +1191,6 @@ func (x *WGCreateScene) GetTotalOfGames() int32 { return 0 } -func (x *WGCreateScene) GetClub() int32 { - if x != nil { - return x.Club - } - return 0 -} - -func (x *WGCreateScene) GetClubRoomId() string { - if x != nil { - return x.ClubRoomId - } - return "" -} - -func (x *WGCreateScene) GetClubRoomPos() int32 { - if x != nil { - return x.ClubRoomPos - } - return 0 -} - -func (x *WGCreateScene) GetClubRate() int32 { - if x != nil { - return x.ClubRate - } - return 0 -} - -func (x *WGCreateScene) GetBaseScore() int32 { - if x != nil { - return x.BaseScore - } - return 0 -} - func (x *WGCreateScene) GetPlayerNum() int32 { if x != nil { return x.PlayerNum @@ -1055,13 +1198,55 @@ func (x *WGCreateScene) GetPlayerNum() int32 { return 0 } -func (x *WGCreateScene) GetRealCtrl() bool { +func (x *WGCreateScene) GetEnterAfterStart() bool { if x != nil { - return x.RealCtrl + return x.EnterAfterStart } return false } +func (x *WGCreateScene) GetCreator() int32 { + if x != nil { + return x.Creator + } + return 0 +} + +func (x *WGCreateScene) GetBaseScore() int32 { + if x != nil { + return x.BaseScore + } + return 0 +} + +func (x *WGCreateScene) GetItems() []*Item { + if x != nil { + return x.Items + } + return nil +} + +func (x *WGCreateScene) GetCostItems() []*Item { + if x != nil { + return x.CostItems + } + return nil +} + +func (x *WGCreateScene) GetCustom() *CustomParam { + if x != nil { + return x.Custom + } + return nil +} + +func (x *WGCreateScene) GetMatch() *MatchParam { + if x != nil { + return x.Match + } + return nil +} + func (x *WGCreateScene) GetChessRank() []int32 { if x != nil { return x.ChessRank @@ -1069,6 +1254,13 @@ func (x *WGCreateScene) GetChessRank() []int32 { return nil } +func (x *WGCreateScene) GetParams() []int64 { + if x != nil { + return x.Params + } + return nil +} + //PACKET_WG_DESTROYSCENE type WGDestroyScene struct { state protoimpl.MessageState @@ -1082,7 +1274,7 @@ type WGDestroyScene struct { func (x *WGDestroyScene) Reset() { *x = WGDestroyScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[9] + mi := &file_server_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1095,7 +1287,7 @@ func (x *WGDestroyScene) String() string { func (*WGDestroyScene) ProtoMessage() {} func (x *WGDestroyScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[9] + mi := &file_server_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1108,7 +1300,7 @@ func (x *WGDestroyScene) ProtoReflect() protoreflect.Message { // Deprecated: Use WGDestroyScene.ProtoReflect.Descriptor instead. func (*WGDestroyScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{9} + return file_server_proto_rawDescGZIP(), []int{12} } func (x *WGDestroyScene) GetIds() []int64 { @@ -1138,7 +1330,7 @@ type GWDestroyScene struct { func (x *GWDestroyScene) Reset() { *x = GWDestroyScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[10] + mi := &file_server_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1151,7 +1343,7 @@ func (x *GWDestroyScene) String() string { func (*GWDestroyScene) ProtoMessage() {} func (x *GWDestroyScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[10] + mi := &file_server_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1164,7 +1356,7 @@ func (x *GWDestroyScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GWDestroyScene.ProtoReflect.Descriptor instead. func (*GWDestroyScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{10} + return file_server_proto_rawDescGZIP(), []int{13} } func (x *GWDestroyScene) GetSceneId() int64 { @@ -1193,7 +1385,7 @@ type RebateTask struct { func (x *RebateTask) Reset() { *x = RebateTask{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[11] + mi := &file_server_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1206,7 +1398,7 @@ func (x *RebateTask) String() string { func (*RebateTask) ProtoMessage() {} func (x *RebateTask) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[11] + mi := &file_server_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1219,7 +1411,7 @@ func (x *RebateTask) ProtoReflect() protoreflect.Message { // Deprecated: Use RebateTask.ProtoReflect.Descriptor instead. func (*RebateTask) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{11} + return file_server_proto_rawDescGZIP(), []int{14} } func (x *RebateTask) GetRebateSwitch() bool { @@ -1269,7 +1461,7 @@ type WGPlayerEnter struct { func (x *WGPlayerEnter) Reset() { *x = WGPlayerEnter{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[12] + mi := &file_server_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1282,7 +1474,7 @@ func (x *WGPlayerEnter) String() string { func (*WGPlayerEnter) ProtoMessage() {} func (x *WGPlayerEnter) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[12] + mi := &file_server_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1295,7 +1487,7 @@ func (x *WGPlayerEnter) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerEnter.ProtoReflect.Descriptor instead. func (*WGPlayerEnter) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{12} + return file_server_proto_rawDescGZIP(), []int{15} } func (x *WGPlayerEnter) GetSid() int64 { @@ -1461,7 +1653,7 @@ type WGAudienceSit struct { func (x *WGAudienceSit) Reset() { *x = WGAudienceSit{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[13] + mi := &file_server_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1474,7 +1666,7 @@ func (x *WGAudienceSit) String() string { func (*WGAudienceSit) ProtoMessage() {} func (x *WGAudienceSit) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[13] + mi := &file_server_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1487,7 +1679,7 @@ func (x *WGAudienceSit) ProtoReflect() protoreflect.Message { // Deprecated: Use WGAudienceSit.ProtoReflect.Descriptor instead. func (*WGAudienceSit) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{13} + return file_server_proto_rawDescGZIP(), []int{16} } func (x *WGAudienceSit) GetSnId() int32 { @@ -1533,7 +1725,7 @@ type WGPlayerReturn struct { func (x *WGPlayerReturn) Reset() { *x = WGPlayerReturn{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[14] + mi := &file_server_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1546,7 +1738,7 @@ func (x *WGPlayerReturn) String() string { func (*WGPlayerReturn) ProtoMessage() {} func (x *WGPlayerReturn) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[14] + mi := &file_server_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1559,7 +1751,7 @@ func (x *WGPlayerReturn) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerReturn.ProtoReflect.Descriptor instead. func (*WGPlayerReturn) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{14} + return file_server_proto_rawDescGZIP(), []int{17} } func (x *WGPlayerReturn) GetPlayerId() int32 { @@ -1621,7 +1813,7 @@ type GWPlayerLeave struct { func (x *GWPlayerLeave) Reset() { *x = GWPlayerLeave{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[15] + mi := &file_server_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1634,7 +1826,7 @@ func (x *GWPlayerLeave) String() string { func (*GWPlayerLeave) ProtoMessage() {} func (x *GWPlayerLeave) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[15] + mi := &file_server_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1647,7 +1839,7 @@ func (x *GWPlayerLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerLeave.ProtoReflect.Descriptor instead. func (*GWPlayerLeave) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{15} + return file_server_proto_rawDescGZIP(), []int{18} } func (x *GWPlayerLeave) GetRoomId() int32 { @@ -1796,7 +1988,7 @@ type WGPlayerDropLine struct { func (x *WGPlayerDropLine) Reset() { *x = WGPlayerDropLine{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[16] + mi := &file_server_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1809,7 +2001,7 @@ func (x *WGPlayerDropLine) String() string { func (*WGPlayerDropLine) ProtoMessage() {} func (x *WGPlayerDropLine) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[16] + mi := &file_server_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1822,7 +2014,7 @@ func (x *WGPlayerDropLine) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerDropLine.ProtoReflect.Descriptor instead. func (*WGPlayerDropLine) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{16} + return file_server_proto_rawDescGZIP(), []int{19} } func (x *WGPlayerDropLine) GetId() int32 { @@ -1854,7 +2046,7 @@ type WGPlayerRehold struct { func (x *WGPlayerRehold) Reset() { *x = WGPlayerRehold{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[17] + mi := &file_server_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1867,7 +2059,7 @@ func (x *WGPlayerRehold) String() string { func (*WGPlayerRehold) ProtoMessage() {} func (x *WGPlayerRehold) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[17] + mi := &file_server_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1880,7 +2072,7 @@ func (x *WGPlayerRehold) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerRehold.ProtoReflect.Descriptor instead. func (*WGPlayerRehold) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{17} + return file_server_proto_rawDescGZIP(), []int{20} } func (x *WGPlayerRehold) GetId() int32 { @@ -1924,7 +2116,7 @@ type GWBilledRoomCard struct { func (x *GWBilledRoomCard) Reset() { *x = GWBilledRoomCard{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[18] + mi := &file_server_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1937,7 +2129,7 @@ func (x *GWBilledRoomCard) String() string { func (*GWBilledRoomCard) ProtoMessage() {} func (x *GWBilledRoomCard) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[18] + mi := &file_server_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1950,7 +2142,7 @@ func (x *GWBilledRoomCard) ProtoReflect() protoreflect.Message { // Deprecated: Use GWBilledRoomCard.ProtoReflect.Descriptor instead. func (*GWBilledRoomCard) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{18} + return file_server_proto_rawDescGZIP(), []int{21} } func (x *GWBilledRoomCard) GetRoomId() int32 { @@ -1984,7 +2176,7 @@ type GGPlayerSessionBind struct { func (x *GGPlayerSessionBind) Reset() { *x = GGPlayerSessionBind{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[19] + mi := &file_server_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1997,7 +2189,7 @@ func (x *GGPlayerSessionBind) String() string { func (*GGPlayerSessionBind) ProtoMessage() {} func (x *GGPlayerSessionBind) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[19] + mi := &file_server_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2010,7 +2202,7 @@ func (x *GGPlayerSessionBind) ProtoReflect() protoreflect.Message { // Deprecated: Use GGPlayerSessionBind.ProtoReflect.Descriptor instead. func (*GGPlayerSessionBind) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{19} + return file_server_proto_rawDescGZIP(), []int{22} } func (x *GGPlayerSessionBind) GetSid() int64 { @@ -2067,7 +2259,7 @@ type GGPlayerSessionUnBind struct { func (x *GGPlayerSessionUnBind) Reset() { *x = GGPlayerSessionUnBind{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[20] + mi := &file_server_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2080,7 +2272,7 @@ func (x *GGPlayerSessionUnBind) String() string { func (*GGPlayerSessionUnBind) ProtoMessage() {} func (x *GGPlayerSessionUnBind) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[20] + mi := &file_server_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2093,7 +2285,7 @@ func (x *GGPlayerSessionUnBind) ProtoReflect() protoreflect.Message { // Deprecated: Use GGPlayerSessionUnBind.ProtoReflect.Descriptor instead. func (*GGPlayerSessionUnBind) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{20} + return file_server_proto_rawDescGZIP(), []int{23} } func (x *GGPlayerSessionUnBind) GetSid() int64 { @@ -2118,7 +2310,7 @@ type WGDayTimeChange struct { func (x *WGDayTimeChange) Reset() { *x = WGDayTimeChange{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[21] + mi := &file_server_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2131,7 +2323,7 @@ func (x *WGDayTimeChange) String() string { func (*WGDayTimeChange) ProtoMessage() {} func (x *WGDayTimeChange) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[21] + mi := &file_server_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2144,7 +2336,7 @@ func (x *WGDayTimeChange) ProtoReflect() protoreflect.Message { // Deprecated: Use WGDayTimeChange.ProtoReflect.Descriptor instead. func (*WGDayTimeChange) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{21} + return file_server_proto_rawDescGZIP(), []int{24} } func (x *WGDayTimeChange) GetMinute() int32 { @@ -2200,7 +2392,7 @@ type ReplayPlayerData struct { func (x *ReplayPlayerData) Reset() { *x = ReplayPlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[22] + mi := &file_server_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2213,7 +2405,7 @@ func (x *ReplayPlayerData) String() string { func (*ReplayPlayerData) ProtoMessage() {} func (x *ReplayPlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[22] + mi := &file_server_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2226,7 +2418,7 @@ func (x *ReplayPlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayPlayerData.ProtoReflect.Descriptor instead. func (*ReplayPlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{22} + return file_server_proto_rawDescGZIP(), []int{25} } func (x *ReplayPlayerData) GetAccId() string { @@ -2302,7 +2494,7 @@ type ReplayRecord struct { func (x *ReplayRecord) Reset() { *x = ReplayRecord{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[23] + mi := &file_server_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2315,7 +2507,7 @@ func (x *ReplayRecord) String() string { func (*ReplayRecord) ProtoMessage() {} func (x *ReplayRecord) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[23] + mi := &file_server_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2328,7 +2520,7 @@ func (x *ReplayRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplayRecord.ProtoReflect.Descriptor instead. func (*ReplayRecord) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{23} + return file_server_proto_rawDescGZIP(), []int{26} } func (x *ReplayRecord) GetTimeStamp() int64 { @@ -2384,7 +2576,7 @@ type ReplaySequene struct { func (x *ReplaySequene) Reset() { *x = ReplaySequene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[24] + mi := &file_server_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2397,7 +2589,7 @@ func (x *ReplaySequene) String() string { func (*ReplaySequene) ProtoMessage() {} func (x *ReplaySequene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[24] + mi := &file_server_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2410,7 +2602,7 @@ func (x *ReplaySequene) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplaySequene.ProtoReflect.Descriptor instead. func (*ReplaySequene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{24} + return file_server_proto_rawDescGZIP(), []int{27} } func (x *ReplaySequene) GetSequenes() []*ReplayRecord { @@ -2448,7 +2640,7 @@ type GRReplaySequene struct { func (x *GRReplaySequene) Reset() { *x = GRReplaySequene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[25] + mi := &file_server_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2461,7 +2653,7 @@ func (x *GRReplaySequene) String() string { func (*GRReplaySequene) ProtoMessage() {} func (x *GRReplaySequene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[25] + mi := &file_server_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2474,7 +2666,7 @@ func (x *GRReplaySequene) ProtoReflect() protoreflect.Message { // Deprecated: Use GRReplaySequene.ProtoReflect.Descriptor instead. func (*GRReplaySequene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{25} + return file_server_proto_rawDescGZIP(), []int{28} } func (x *GRReplaySequene) GetName() string { @@ -2621,7 +2813,7 @@ type WRLoginRec struct { func (x *WRLoginRec) Reset() { *x = WRLoginRec{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[26] + mi := &file_server_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2634,7 +2826,7 @@ func (x *WRLoginRec) String() string { func (*WRLoginRec) ProtoMessage() {} func (x *WRLoginRec) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[26] + mi := &file_server_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2647,7 +2839,7 @@ func (x *WRLoginRec) ProtoReflect() protoreflect.Message { // Deprecated: Use WRLoginRec.ProtoReflect.Descriptor instead. func (*WRLoginRec) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{26} + return file_server_proto_rawDescGZIP(), []int{29} } func (x *WRLoginRec) GetSnId() int32 { @@ -2711,7 +2903,7 @@ type WRGameDetail struct { func (x *WRGameDetail) Reset() { *x = WRGameDetail{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[27] + mi := &file_server_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2724,7 +2916,7 @@ func (x *WRGameDetail) String() string { func (*WRGameDetail) ProtoMessage() {} func (x *WRGameDetail) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[27] + mi := &file_server_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2737,7 +2929,7 @@ func (x *WRGameDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use WRGameDetail.ProtoReflect.Descriptor instead. func (*WRGameDetail) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{27} + return file_server_proto_rawDescGZIP(), []int{30} } func (x *WRGameDetail) GetGameDetail() []byte { @@ -2760,7 +2952,7 @@ type WRPlayerData struct { func (x *WRPlayerData) Reset() { *x = WRPlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[28] + mi := &file_server_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2773,7 +2965,7 @@ func (x *WRPlayerData) String() string { func (*WRPlayerData) ProtoMessage() {} func (x *WRPlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[28] + mi := &file_server_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2786,7 +2978,7 @@ func (x *WRPlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use WRPlayerData.ProtoReflect.Descriptor instead. func (*WRPlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{28} + return file_server_proto_rawDescGZIP(), []int{31} } func (x *WRPlayerData) GetSid() int64 { @@ -2816,7 +3008,7 @@ type WTPlayerPay struct { func (x *WTPlayerPay) Reset() { *x = WTPlayerPay{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[29] + mi := &file_server_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2829,7 +3021,7 @@ func (x *WTPlayerPay) String() string { func (*WTPlayerPay) ProtoMessage() {} func (x *WTPlayerPay) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[29] + mi := &file_server_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2842,7 +3034,7 @@ func (x *WTPlayerPay) ProtoReflect() protoreflect.Message { // Deprecated: Use WTPlayerPay.ProtoReflect.Descriptor instead. func (*WTPlayerPay) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{29} + return file_server_proto_rawDescGZIP(), []int{32} } func (x *WTPlayerPay) GetPlayerData() []byte { @@ -2875,7 +3067,7 @@ type PlayerGameRec struct { func (x *PlayerGameRec) Reset() { *x = PlayerGameRec{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[30] + mi := &file_server_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2888,7 +3080,7 @@ func (x *PlayerGameRec) String() string { func (*PlayerGameRec) ProtoMessage() {} func (x *PlayerGameRec) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[30] + mi := &file_server_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2901,7 +3093,7 @@ func (x *PlayerGameRec) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerGameRec.ProtoReflect.Descriptor instead. func (*PlayerGameRec) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{30} + return file_server_proto_rawDescGZIP(), []int{33} } func (x *PlayerGameRec) GetId() int32 { @@ -2962,7 +3154,7 @@ type GWGameRec struct { func (x *GWGameRec) Reset() { *x = GWGameRec{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[31] + mi := &file_server_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2975,7 +3167,7 @@ func (x *GWGameRec) String() string { func (*GWGameRec) ProtoMessage() {} func (x *GWGameRec) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[31] + mi := &file_server_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2988,7 +3180,7 @@ func (x *GWGameRec) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameRec.ProtoReflect.Descriptor instead. func (*GWGameRec) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{31} + return file_server_proto_rawDescGZIP(), []int{34} } func (x *GWGameRec) GetRoomId() int32 { @@ -3041,7 +3233,7 @@ type GWSceneStart struct { func (x *GWSceneStart) Reset() { *x = GWSceneStart{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[32] + mi := &file_server_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3054,7 +3246,7 @@ func (x *GWSceneStart) String() string { func (*GWSceneStart) ProtoMessage() {} func (x *GWSceneStart) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[32] + mi := &file_server_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3067,7 +3259,7 @@ func (x *GWSceneStart) ProtoReflect() protoreflect.Message { // Deprecated: Use GWSceneStart.ProtoReflect.Descriptor instead. func (*GWSceneStart) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{32} + return file_server_proto_rawDescGZIP(), []int{35} } func (x *GWSceneStart) GetRoomId() int32 { @@ -3110,7 +3302,7 @@ type PlayerCtx struct { func (x *PlayerCtx) Reset() { *x = PlayerCtx{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[33] + mi := &file_server_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3123,7 +3315,7 @@ func (x *PlayerCtx) String() string { func (*PlayerCtx) ProtoMessage() {} func (x *PlayerCtx) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[33] + mi := &file_server_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3136,7 +3328,7 @@ func (x *PlayerCtx) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerCtx.ProtoReflect.Descriptor instead. func (*PlayerCtx) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{33} + return file_server_proto_rawDescGZIP(), []int{36} } func (x *PlayerCtx) GetSnId() int32 { @@ -3172,7 +3364,7 @@ type FishRecord struct { func (x *FishRecord) Reset() { *x = FishRecord{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[34] + mi := &file_server_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3185,7 +3377,7 @@ func (x *FishRecord) String() string { func (*FishRecord) ProtoMessage() {} func (x *FishRecord) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[34] + mi := &file_server_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3198,7 +3390,7 @@ func (x *FishRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use FishRecord.ProtoReflect.Descriptor instead. func (*FishRecord) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{34} + return file_server_proto_rawDescGZIP(), []int{37} } func (x *FishRecord) GetFishId() int32 { @@ -3228,7 +3420,7 @@ type GWFishRecord struct { func (x *GWFishRecord) Reset() { *x = GWFishRecord{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[35] + mi := &file_server_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3241,7 +3433,7 @@ func (x *GWFishRecord) String() string { func (*GWFishRecord) ProtoMessage() {} func (x *GWFishRecord) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[35] + mi := &file_server_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3254,7 +3446,7 @@ func (x *GWFishRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use GWFishRecord.ProtoReflect.Descriptor instead. func (*GWFishRecord) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{35} + return file_server_proto_rawDescGZIP(), []int{38} } func (x *GWFishRecord) GetGameFreeId() int32 { @@ -3286,14 +3478,13 @@ type GWSceneState struct { unknownFields protoimpl.UnknownFields RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` - CurrState int32 `protobuf:"varint,2,opt,name=CurrState,proto3" json:"CurrState,omitempty"` - Fishing int32 `protobuf:"varint,3,opt,name=Fishing,proto3" json:"Fishing,omitempty"` + RoomState int32 `protobuf:"varint,2,opt,name=RoomState,proto3" json:"RoomState,omitempty"` } func (x *GWSceneState) Reset() { *x = GWSceneState{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[36] + mi := &file_server_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3306,7 +3497,7 @@ func (x *GWSceneState) String() string { func (*GWSceneState) ProtoMessage() {} func (x *GWSceneState) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[36] + mi := &file_server_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3319,7 +3510,7 @@ func (x *GWSceneState) ProtoReflect() protoreflect.Message { // Deprecated: Use GWSceneState.ProtoReflect.Descriptor instead. func (*GWSceneState) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{36} + return file_server_proto_rawDescGZIP(), []int{39} } func (x *GWSceneState) GetRoomId() int32 { @@ -3329,16 +3520,9 @@ func (x *GWSceneState) GetRoomId() int32 { return 0 } -func (x *GWSceneState) GetCurrState() int32 { +func (x *GWSceneState) GetRoomState() int32 { if x != nil { - return x.CurrState - } - return 0 -} - -func (x *GWSceneState) GetFishing() int32 { - if x != nil { - return x.Fishing + return x.RoomState } return 0 } @@ -3360,7 +3544,7 @@ type WRInviteRobot struct { func (x *WRInviteRobot) Reset() { *x = WRInviteRobot{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[37] + mi := &file_server_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3373,7 +3557,7 @@ func (x *WRInviteRobot) String() string { func (*WRInviteRobot) ProtoMessage() {} func (x *WRInviteRobot) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[37] + mi := &file_server_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3386,7 +3570,7 @@ func (x *WRInviteRobot) ProtoReflect() protoreflect.Message { // Deprecated: Use WRInviteRobot.ProtoReflect.Descriptor instead. func (*WRInviteRobot) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{37} + return file_server_proto_rawDescGZIP(), []int{40} } func (x *WRInviteRobot) GetRoomId() int32 { @@ -3444,7 +3628,7 @@ type WRInviteCreateRoom struct { func (x *WRInviteCreateRoom) Reset() { *x = WRInviteCreateRoom{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[38] + mi := &file_server_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3457,7 +3641,7 @@ func (x *WRInviteCreateRoom) String() string { func (*WRInviteCreateRoom) ProtoMessage() {} func (x *WRInviteCreateRoom) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[38] + mi := &file_server_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3470,7 +3654,7 @@ func (x *WRInviteCreateRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use WRInviteCreateRoom.ProtoReflect.Descriptor instead. func (*WRInviteCreateRoom) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{38} + return file_server_proto_rawDescGZIP(), []int{41} } func (x *WRInviteCreateRoom) GetCnt() int32 { @@ -3502,7 +3686,7 @@ type WGAgentKickOutPlayer struct { func (x *WGAgentKickOutPlayer) Reset() { *x = WGAgentKickOutPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[39] + mi := &file_server_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3515,7 +3699,7 @@ func (x *WGAgentKickOutPlayer) String() string { func (*WGAgentKickOutPlayer) ProtoMessage() {} func (x *WGAgentKickOutPlayer) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[39] + mi := &file_server_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3528,7 +3712,7 @@ func (x *WGAgentKickOutPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use WGAgentKickOutPlayer.ProtoReflect.Descriptor instead. func (*WGAgentKickOutPlayer) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{39} + return file_server_proto_rawDescGZIP(), []int{42} } func (x *WGAgentKickOutPlayer) GetRoomId() int32 { @@ -3572,7 +3756,7 @@ type WDDataAnalysis struct { func (x *WDDataAnalysis) Reset() { *x = WDDataAnalysis{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[40] + mi := &file_server_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3585,7 +3769,7 @@ func (x *WDDataAnalysis) String() string { func (*WDDataAnalysis) ProtoMessage() {} func (x *WDDataAnalysis) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[40] + mi := &file_server_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3598,7 +3782,7 @@ func (x *WDDataAnalysis) ProtoReflect() protoreflect.Message { // Deprecated: Use WDDataAnalysis.ProtoReflect.Descriptor instead. func (*WDDataAnalysis) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{40} + return file_server_proto_rawDescGZIP(), []int{43} } func (x *WDDataAnalysis) GetDataType() int32 { @@ -3627,7 +3811,7 @@ type PlayerCard struct { func (x *PlayerCard) Reset() { *x = PlayerCard{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[41] + mi := &file_server_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3640,7 +3824,7 @@ func (x *PlayerCard) String() string { func (*PlayerCard) ProtoMessage() {} func (x *PlayerCard) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[41] + mi := &file_server_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3653,7 +3837,7 @@ func (x *PlayerCard) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerCard.ProtoReflect.Descriptor instead. func (*PlayerCard) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{41} + return file_server_proto_rawDescGZIP(), []int{44} } func (x *PlayerCard) GetPos() int32 { @@ -3683,7 +3867,7 @@ type GNPlayerCards struct { func (x *GNPlayerCards) Reset() { *x = GNPlayerCards{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[42] + mi := &file_server_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3696,7 +3880,7 @@ func (x *GNPlayerCards) String() string { func (*GNPlayerCards) ProtoMessage() {} func (x *GNPlayerCards) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[42] + mi := &file_server_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3709,7 +3893,7 @@ func (x *GNPlayerCards) ProtoReflect() protoreflect.Message { // Deprecated: Use GNPlayerCards.ProtoReflect.Descriptor instead. func (*GNPlayerCards) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{42} + return file_server_proto_rawDescGZIP(), []int{45} } func (x *GNPlayerCards) GetSceneId() int32 { @@ -3748,7 +3932,7 @@ type RobotData struct { func (x *RobotData) Reset() { *x = RobotData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[43] + mi := &file_server_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3761,7 +3945,7 @@ func (x *RobotData) String() string { func (*RobotData) ProtoMessage() {} func (x *RobotData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[43] + mi := &file_server_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3774,7 +3958,7 @@ func (x *RobotData) ProtoReflect() protoreflect.Message { // Deprecated: Use RobotData.ProtoReflect.Descriptor instead. func (*RobotData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{43} + return file_server_proto_rawDescGZIP(), []int{46} } func (x *RobotData) GetTotalIn() int64 { @@ -3824,7 +4008,7 @@ type GNPlayerParam struct { func (x *GNPlayerParam) Reset() { *x = GNPlayerParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[44] + mi := &file_server_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3837,7 +4021,7 @@ func (x *GNPlayerParam) String() string { func (*GNPlayerParam) ProtoMessage() {} func (x *GNPlayerParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[44] + mi := &file_server_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3850,7 +4034,7 @@ func (x *GNPlayerParam) ProtoReflect() protoreflect.Message { // Deprecated: Use GNPlayerParam.ProtoReflect.Descriptor instead. func (*GNPlayerParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{44} + return file_server_proto_rawDescGZIP(), []int{47} } func (x *GNPlayerParam) GetSceneId() int32 { @@ -3881,7 +4065,7 @@ type GWRebuildScene struct { func (x *GWRebuildScene) Reset() { *x = GWRebuildScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[45] + mi := &file_server_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3894,7 +4078,7 @@ func (x *GWRebuildScene) String() string { func (*GWRebuildScene) ProtoMessage() {} func (x *GWRebuildScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[45] + mi := &file_server_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3907,7 +4091,7 @@ func (x *GWRebuildScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GWRebuildScene.ProtoReflect.Descriptor instead. func (*GWRebuildScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{45} + return file_server_proto_rawDescGZIP(), []int{48} } func (x *GWRebuildScene) GetSceneIds() []int32 { @@ -3937,7 +4121,7 @@ type WGRebindPlayerSnId struct { func (x *WGRebindPlayerSnId) Reset() { *x = WGRebindPlayerSnId{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[46] + mi := &file_server_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3950,7 +4134,7 @@ func (x *WGRebindPlayerSnId) String() string { func (*WGRebindPlayerSnId) ProtoMessage() {} func (x *WGRebindPlayerSnId) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[46] + mi := &file_server_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3963,7 +4147,7 @@ func (x *WGRebindPlayerSnId) ProtoReflect() protoreflect.Message { // Deprecated: Use WGRebindPlayerSnId.ProtoReflect.Descriptor instead. func (*WGRebindPlayerSnId) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{46} + return file_server_proto_rawDescGZIP(), []int{49} } func (x *WGRebindPlayerSnId) GetOldSnId() int32 { @@ -3994,7 +4178,7 @@ type GWPlayerFlag struct { func (x *GWPlayerFlag) Reset() { *x = GWPlayerFlag{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[47] + mi := &file_server_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4007,7 +4191,7 @@ func (x *GWPlayerFlag) String() string { func (*GWPlayerFlag) ProtoMessage() {} func (x *GWPlayerFlag) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[47] + mi := &file_server_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4020,7 +4204,7 @@ func (x *GWPlayerFlag) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerFlag.ProtoReflect.Descriptor instead. func (*GWPlayerFlag) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{47} + return file_server_proto_rawDescGZIP(), []int{50} } func (x *GWPlayerFlag) GetSnId() int32 { @@ -4059,7 +4243,7 @@ type WGHundredOp struct { func (x *WGHundredOp) Reset() { *x = WGHundredOp{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[48] + mi := &file_server_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4072,7 +4256,7 @@ func (x *WGHundredOp) String() string { func (*WGHundredOp) ProtoMessage() {} func (x *WGHundredOp) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[48] + mi := &file_server_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4085,7 +4269,7 @@ func (x *WGHundredOp) ProtoReflect() protoreflect.Message { // Deprecated: Use WGHundredOp.ProtoReflect.Descriptor instead. func (*WGHundredOp) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{48} + return file_server_proto_rawDescGZIP(), []int{51} } func (x *WGHundredOp) GetSnid() int32 { @@ -4129,7 +4313,7 @@ type GWNewNotice struct { func (x *GWNewNotice) Reset() { *x = GWNewNotice{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[49] + mi := &file_server_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4142,7 +4326,7 @@ func (x *GWNewNotice) String() string { func (*GWNewNotice) ProtoMessage() {} func (x *GWNewNotice) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[49] + mi := &file_server_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4155,7 +4339,7 @@ func (x *GWNewNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use GWNewNotice.ProtoReflect.Descriptor instead. func (*GWNewNotice) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{49} + return file_server_proto_rawDescGZIP(), []int{52} } func (x *GWNewNotice) GetCh() string { @@ -4240,7 +4424,7 @@ type PlayerStatics struct { func (x *PlayerStatics) Reset() { *x = PlayerStatics{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[50] + mi := &file_server_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4253,7 +4437,7 @@ func (x *PlayerStatics) String() string { func (*PlayerStatics) ProtoMessage() {} func (x *PlayerStatics) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[50] + mi := &file_server_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4266,7 +4450,7 @@ func (x *PlayerStatics) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerStatics.ProtoReflect.Descriptor instead. func (*PlayerStatics) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{50} + return file_server_proto_rawDescGZIP(), []int{53} } func (x *PlayerStatics) GetSnId() int32 { @@ -4346,7 +4530,7 @@ type GWPlayerStatics struct { func (x *GWPlayerStatics) Reset() { *x = GWPlayerStatics{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[51] + mi := &file_server_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4359,7 +4543,7 @@ func (x *GWPlayerStatics) String() string { func (*GWPlayerStatics) ProtoMessage() {} func (x *GWPlayerStatics) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[51] + mi := &file_server_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4372,7 +4556,7 @@ func (x *GWPlayerStatics) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerStatics.ProtoReflect.Descriptor instead. func (*GWPlayerStatics) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{51} + return file_server_proto_rawDescGZIP(), []int{54} } func (x *GWPlayerStatics) GetRoomId() int32 { @@ -4419,7 +4603,7 @@ type WGResetCoinPool struct { func (x *WGResetCoinPool) Reset() { *x = WGResetCoinPool{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[52] + mi := &file_server_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4432,7 +4616,7 @@ func (x *WGResetCoinPool) String() string { func (*WGResetCoinPool) ProtoMessage() {} func (x *WGResetCoinPool) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[52] + mi := &file_server_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4445,7 +4629,7 @@ func (x *WGResetCoinPool) ProtoReflect() protoreflect.Message { // Deprecated: Use WGResetCoinPool.ProtoReflect.Descriptor instead. func (*WGResetCoinPool) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{52} + return file_server_proto_rawDescGZIP(), []int{55} } func (x *WGResetCoinPool) GetPlatform() string { @@ -4507,7 +4691,7 @@ type WGSetPlayerBlackLevel struct { func (x *WGSetPlayerBlackLevel) Reset() { *x = WGSetPlayerBlackLevel{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[53] + mi := &file_server_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4520,7 +4704,7 @@ func (x *WGSetPlayerBlackLevel) String() string { func (*WGSetPlayerBlackLevel) ProtoMessage() {} func (x *WGSetPlayerBlackLevel) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[53] + mi := &file_server_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4533,7 +4717,7 @@ func (x *WGSetPlayerBlackLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSetPlayerBlackLevel.ProtoReflect.Descriptor instead. func (*WGSetPlayerBlackLevel) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{53} + return file_server_proto_rawDescGZIP(), []int{56} } func (x *WGSetPlayerBlackLevel) GetSnId() int32 { @@ -4596,7 +4780,7 @@ type GWAutoRelieveWBLevel struct { func (x *GWAutoRelieveWBLevel) Reset() { *x = GWAutoRelieveWBLevel{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[54] + mi := &file_server_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4609,7 +4793,7 @@ func (x *GWAutoRelieveWBLevel) String() string { func (*GWAutoRelieveWBLevel) ProtoMessage() {} func (x *GWAutoRelieveWBLevel) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[54] + mi := &file_server_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4622,7 +4806,7 @@ func (x *GWAutoRelieveWBLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use GWAutoRelieveWBLevel.ProtoReflect.Descriptor instead. func (*GWAutoRelieveWBLevel) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{54} + return file_server_proto_rawDescGZIP(), []int{57} } func (x *GWAutoRelieveWBLevel) GetSnId() int32 { @@ -4648,7 +4832,7 @@ type GWScenePlayerLog struct { func (x *GWScenePlayerLog) Reset() { *x = GWScenePlayerLog{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[55] + mi := &file_server_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4661,7 +4845,7 @@ func (x *GWScenePlayerLog) String() string { func (*GWScenePlayerLog) ProtoMessage() {} func (x *GWScenePlayerLog) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[55] + mi := &file_server_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4674,7 +4858,7 @@ func (x *GWScenePlayerLog) ProtoReflect() protoreflect.Message { // Deprecated: Use GWScenePlayerLog.ProtoReflect.Descriptor instead. func (*GWScenePlayerLog) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{55} + return file_server_proto_rawDescGZIP(), []int{58} } func (x *GWScenePlayerLog) GetGameId() int32 { @@ -4720,7 +4904,7 @@ type GWPlayerForceLeave struct { func (x *GWPlayerForceLeave) Reset() { *x = GWPlayerForceLeave{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[56] + mi := &file_server_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4733,7 +4917,7 @@ func (x *GWPlayerForceLeave) String() string { func (*GWPlayerForceLeave) ProtoMessage() {} func (x *GWPlayerForceLeave) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[56] + mi := &file_server_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4746,7 +4930,7 @@ func (x *GWPlayerForceLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerForceLeave.ProtoReflect.Descriptor instead. func (*GWPlayerForceLeave) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{56} + return file_server_proto_rawDescGZIP(), []int{59} } func (x *GWPlayerForceLeave) GetRoomId() int32 { @@ -4796,7 +4980,7 @@ type PlayerData struct { func (x *PlayerData) Reset() { *x = PlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[57] + mi := &file_server_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4809,7 +4993,7 @@ func (x *PlayerData) String() string { func (*PlayerData) ProtoMessage() {} func (x *PlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[57] + mi := &file_server_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4822,7 +5006,7 @@ func (x *PlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerData.ProtoReflect.Descriptor instead. func (*PlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{57} + return file_server_proto_rawDescGZIP(), []int{60} } func (x *PlayerData) GetSnId() int32 { @@ -4894,7 +5078,7 @@ type GWPlayerData struct { func (x *GWPlayerData) Reset() { *x = GWPlayerData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[58] + mi := &file_server_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4907,7 +5091,7 @@ func (x *GWPlayerData) String() string { func (*GWPlayerData) ProtoMessage() {} func (x *GWPlayerData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[58] + mi := &file_server_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4920,7 +5104,7 @@ func (x *GWPlayerData) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerData.ProtoReflect.Descriptor instead. func (*GWPlayerData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{58} + return file_server_proto_rawDescGZIP(), []int{61} } func (x *GWPlayerData) GetDatas() []*PlayerData { @@ -4962,7 +5146,7 @@ type PlayerWinScore struct { func (x *PlayerWinScore) Reset() { *x = PlayerWinScore{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[59] + mi := &file_server_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4975,7 +5159,7 @@ func (x *PlayerWinScore) String() string { func (*PlayerWinScore) ProtoMessage() {} func (x *PlayerWinScore) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[59] + mi := &file_server_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4988,7 +5172,7 @@ func (x *PlayerWinScore) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerWinScore.ProtoReflect.Descriptor instead. func (*PlayerWinScore) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{59} + return file_server_proto_rawDescGZIP(), []int{62} } func (x *PlayerWinScore) GetSnId() int32 { @@ -5055,7 +5239,7 @@ type GWPlayerWinScore struct { func (x *GWPlayerWinScore) Reset() { *x = GWPlayerWinScore{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[60] + mi := &file_server_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5068,7 +5252,7 @@ func (x *GWPlayerWinScore) String() string { func (*GWPlayerWinScore) ProtoMessage() {} func (x *GWPlayerWinScore) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[60] + mi := &file_server_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5081,7 +5265,7 @@ func (x *GWPlayerWinScore) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerWinScore.ProtoReflect.Descriptor instead. func (*GWPlayerWinScore) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{60} + return file_server_proto_rawDescGZIP(), []int{63} } func (x *GWPlayerWinScore) GetGameFreeId() int32 { @@ -5130,7 +5314,7 @@ type WGPayerOnGameCount struct { func (x *WGPayerOnGameCount) Reset() { *x = WGPayerOnGameCount{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[61] + mi := &file_server_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5143,7 +5327,7 @@ func (x *WGPayerOnGameCount) String() string { func (*WGPayerOnGameCount) ProtoMessage() {} func (x *WGPayerOnGameCount) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[61] + mi := &file_server_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5156,7 +5340,7 @@ func (x *WGPayerOnGameCount) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPayerOnGameCount.ProtoReflect.Descriptor instead. func (*WGPayerOnGameCount) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{61} + return file_server_proto_rawDescGZIP(), []int{64} } func (x *WGPayerOnGameCount) GetDTCount() []int32 { @@ -5178,7 +5362,7 @@ type GRGameFreeData struct { func (x *GRGameFreeData) Reset() { *x = GRGameFreeData{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[62] + mi := &file_server_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5191,7 +5375,7 @@ func (x *GRGameFreeData) String() string { func (*GRGameFreeData) ProtoMessage() {} func (x *GRGameFreeData) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[62] + mi := &file_server_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5204,7 +5388,7 @@ func (x *GRGameFreeData) ProtoReflect() protoreflect.Message { // Deprecated: Use GRGameFreeData.ProtoReflect.Descriptor instead. func (*GRGameFreeData) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{62} + return file_server_proto_rawDescGZIP(), []int{65} } func (x *GRGameFreeData) GetRoomId() int32 { @@ -5233,7 +5417,7 @@ type WGSyncPlayerSafeBoxCoin struct { func (x *WGSyncPlayerSafeBoxCoin) Reset() { *x = WGSyncPlayerSafeBoxCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[63] + mi := &file_server_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5246,7 +5430,7 @@ func (x *WGSyncPlayerSafeBoxCoin) String() string { func (*WGSyncPlayerSafeBoxCoin) ProtoMessage() {} func (x *WGSyncPlayerSafeBoxCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[63] + mi := &file_server_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5259,7 +5443,7 @@ func (x *WGSyncPlayerSafeBoxCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSyncPlayerSafeBoxCoin.ProtoReflect.Descriptor instead. func (*WGSyncPlayerSafeBoxCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{63} + return file_server_proto_rawDescGZIP(), []int{66} } func (x *WGSyncPlayerSafeBoxCoin) GetSnId() int32 { @@ -5291,7 +5475,7 @@ type WGClubMessage struct { func (x *WGClubMessage) Reset() { *x = WGClubMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[64] + mi := &file_server_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5304,7 +5488,7 @@ func (x *WGClubMessage) String() string { func (*WGClubMessage) ProtoMessage() {} func (x *WGClubMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[64] + mi := &file_server_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5317,7 +5501,7 @@ func (x *WGClubMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use WGClubMessage.ProtoReflect.Descriptor instead. func (*WGClubMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{64} + return file_server_proto_rawDescGZIP(), []int{67} } func (x *WGClubMessage) GetClubId() int64 { @@ -5364,7 +5548,7 @@ type DWThirdRebateMessage struct { func (x *DWThirdRebateMessage) Reset() { *x = DWThirdRebateMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[65] + mi := &file_server_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5377,7 +5561,7 @@ func (x *DWThirdRebateMessage) String() string { func (*DWThirdRebateMessage) ProtoMessage() {} func (x *DWThirdRebateMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[65] + mi := &file_server_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5390,7 +5574,7 @@ func (x *DWThirdRebateMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DWThirdRebateMessage.ProtoReflect.Descriptor instead. func (*DWThirdRebateMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{65} + return file_server_proto_rawDescGZIP(), []int{68} } func (x *DWThirdRebateMessage) GetTag() uint64 { @@ -5449,7 +5633,7 @@ type DWThirdRoundMessage struct { func (x *DWThirdRoundMessage) Reset() { *x = DWThirdRoundMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[66] + mi := &file_server_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5462,7 +5646,7 @@ func (x *DWThirdRoundMessage) String() string { func (*DWThirdRoundMessage) ProtoMessage() {} func (x *DWThirdRoundMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[66] + mi := &file_server_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5475,7 +5659,7 @@ func (x *DWThirdRoundMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DWThirdRoundMessage.ProtoReflect.Descriptor instead. func (*DWThirdRoundMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{66} + return file_server_proto_rawDescGZIP(), []int{69} } func (x *DWThirdRoundMessage) GetTag() uint64 { @@ -5568,7 +5752,7 @@ type WDACKThirdRebateMessage struct { func (x *WDACKThirdRebateMessage) Reset() { *x = WDACKThirdRebateMessage{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[67] + mi := &file_server_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5581,7 +5765,7 @@ func (x *WDACKThirdRebateMessage) String() string { func (*WDACKThirdRebateMessage) ProtoMessage() {} func (x *WDACKThirdRebateMessage) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[67] + mi := &file_server_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5594,7 +5778,7 @@ func (x *WDACKThirdRebateMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use WDACKThirdRebateMessage.ProtoReflect.Descriptor instead. func (*WDACKThirdRebateMessage) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{67} + return file_server_proto_rawDescGZIP(), []int{70} } func (x *WDACKThirdRebateMessage) GetTag() uint64 { @@ -5625,7 +5809,7 @@ type GWGameStateLog struct { func (x *GWGameStateLog) Reset() { *x = GWGameStateLog{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[68] + mi := &file_server_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5638,7 +5822,7 @@ func (x *GWGameStateLog) String() string { func (*GWGameStateLog) ProtoMessage() {} func (x *GWGameStateLog) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[68] + mi := &file_server_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5651,7 +5835,7 @@ func (x *GWGameStateLog) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameStateLog.ProtoReflect.Descriptor instead. func (*GWGameStateLog) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{68} + return file_server_proto_rawDescGZIP(), []int{71} } func (x *GWGameStateLog) GetSceneId() int32 { @@ -5691,7 +5875,7 @@ type GWGameState struct { func (x *GWGameState) Reset() { *x = GWGameState{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[69] + mi := &file_server_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5704,7 +5888,7 @@ func (x *GWGameState) String() string { func (*GWGameState) ProtoMessage() {} func (x *GWGameState) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[69] + mi := &file_server_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5717,7 +5901,7 @@ func (x *GWGameState) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameState.ProtoReflect.Descriptor instead. func (*GWGameState) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{69} + return file_server_proto_rawDescGZIP(), []int{72} } func (x *GWGameState) GetSceneId() int32 { @@ -5774,7 +5958,7 @@ type GWGameJackList struct { func (x *GWGameJackList) Reset() { *x = GWGameJackList{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[70] + mi := &file_server_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5787,7 +5971,7 @@ func (x *GWGameJackList) String() string { func (*GWGameJackList) ProtoMessage() {} func (x *GWGameJackList) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[70] + mi := &file_server_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5800,7 +5984,7 @@ func (x *GWGameJackList) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameJackList.ProtoReflect.Descriptor instead. func (*GWGameJackList) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{70} + return file_server_proto_rawDescGZIP(), []int{73} } func (x *GWGameJackList) GetSnId() int32 { @@ -5872,7 +6056,7 @@ type GWGameJackCoin struct { func (x *GWGameJackCoin) Reset() { *x = GWGameJackCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[71] + mi := &file_server_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5885,7 +6069,7 @@ func (x *GWGameJackCoin) String() string { func (*GWGameJackCoin) ProtoMessage() {} func (x *GWGameJackCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[71] + mi := &file_server_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5898,7 +6082,7 @@ func (x *GWGameJackCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use GWGameJackCoin.ProtoReflect.Descriptor instead. func (*GWGameJackCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{71} + return file_server_proto_rawDescGZIP(), []int{74} } func (x *GWGameJackCoin) GetPlatform() []string { @@ -5928,7 +6112,7 @@ type WGNiceIdRebind struct { func (x *WGNiceIdRebind) Reset() { *x = WGNiceIdRebind{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[72] + mi := &file_server_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5941,7 +6125,7 @@ func (x *WGNiceIdRebind) String() string { func (*WGNiceIdRebind) ProtoMessage() {} func (x *WGNiceIdRebind) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[72] + mi := &file_server_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5954,7 +6138,7 @@ func (x *WGNiceIdRebind) ProtoReflect() protoreflect.Message { // Deprecated: Use WGNiceIdRebind.ProtoReflect.Descriptor instead. func (*WGNiceIdRebind) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{72} + return file_server_proto_rawDescGZIP(), []int{75} } func (x *WGNiceIdRebind) GetUser() int32 { @@ -5984,7 +6168,7 @@ type PLAYERWINCOININFO struct { func (x *PLAYERWINCOININFO) Reset() { *x = PLAYERWINCOININFO{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[73] + mi := &file_server_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5997,7 +6181,7 @@ func (x *PLAYERWINCOININFO) String() string { func (*PLAYERWINCOININFO) ProtoMessage() {} func (x *PLAYERWINCOININFO) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[73] + mi := &file_server_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6010,7 +6194,7 @@ func (x *PLAYERWINCOININFO) ProtoReflect() protoreflect.Message { // Deprecated: Use PLAYERWINCOININFO.ProtoReflect.Descriptor instead. func (*PLAYERWINCOININFO) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{73} + return file_server_proto_rawDescGZIP(), []int{76} } func (x *PLAYERWINCOININFO) GetSnId() int32 { @@ -6046,7 +6230,7 @@ type GWPLAYERWINCOIN struct { func (x *GWPLAYERWINCOIN) Reset() { *x = GWPLAYERWINCOIN{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[74] + mi := &file_server_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6059,7 +6243,7 @@ func (x *GWPLAYERWINCOIN) String() string { func (*GWPLAYERWINCOIN) ProtoMessage() {} func (x *GWPLAYERWINCOIN) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[74] + mi := &file_server_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6072,7 +6256,7 @@ func (x *GWPLAYERWINCOIN) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPLAYERWINCOIN.ProtoReflect.Descriptor instead. func (*GWPLAYERWINCOIN) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{74} + return file_server_proto_rawDescGZIP(), []int{77} } func (x *GWPLAYERWINCOIN) GetPlayer() []*PLAYERWINCOININFO { @@ -6095,7 +6279,7 @@ type GWPlayerAutoMarkTag struct { func (x *GWPlayerAutoMarkTag) Reset() { *x = GWPlayerAutoMarkTag{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[75] + mi := &file_server_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6108,7 +6292,7 @@ func (x *GWPlayerAutoMarkTag) String() string { func (*GWPlayerAutoMarkTag) ProtoMessage() {} func (x *GWPlayerAutoMarkTag) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[75] + mi := &file_server_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6121,7 +6305,7 @@ func (x *GWPlayerAutoMarkTag) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerAutoMarkTag.ProtoReflect.Descriptor instead. func (*GWPlayerAutoMarkTag) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{75} + return file_server_proto_rawDescGZIP(), []int{78} } func (x *GWPlayerAutoMarkTag) GetSnId() int32 { @@ -6152,7 +6336,7 @@ type WGInviteRobEnterCoinSceneQueue struct { func (x *WGInviteRobEnterCoinSceneQueue) Reset() { *x = WGInviteRobEnterCoinSceneQueue{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[76] + mi := &file_server_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6165,7 +6349,7 @@ func (x *WGInviteRobEnterCoinSceneQueue) String() string { func (*WGInviteRobEnterCoinSceneQueue) ProtoMessage() {} func (x *WGInviteRobEnterCoinSceneQueue) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[76] + mi := &file_server_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6178,7 +6362,7 @@ func (x *WGInviteRobEnterCoinSceneQueue) ProtoReflect() protoreflect.Message { // Deprecated: Use WGInviteRobEnterCoinSceneQueue.ProtoReflect.Descriptor instead. func (*WGInviteRobEnterCoinSceneQueue) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{76} + return file_server_proto_rawDescGZIP(), []int{79} } func (x *WGInviteRobEnterCoinSceneQueue) GetPlatform() string { @@ -6214,7 +6398,7 @@ type WGGameForceStart struct { func (x *WGGameForceStart) Reset() { *x = WGGameForceStart{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[77] + mi := &file_server_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6227,7 +6411,7 @@ func (x *WGGameForceStart) String() string { func (*WGGameForceStart) ProtoMessage() {} func (x *WGGameForceStart) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[77] + mi := &file_server_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6240,7 +6424,7 @@ func (x *WGGameForceStart) ProtoReflect() protoreflect.Message { // Deprecated: Use WGGameForceStart.ProtoReflect.Descriptor instead. func (*WGGameForceStart) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{77} + return file_server_proto_rawDescGZIP(), []int{80} } func (x *WGGameForceStart) GetSceneId() int32 { @@ -6265,7 +6449,7 @@ type ProfitControlGameCfg struct { func (x *ProfitControlGameCfg) Reset() { *x = ProfitControlGameCfg{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[78] + mi := &file_server_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6278,7 +6462,7 @@ func (x *ProfitControlGameCfg) String() string { func (*ProfitControlGameCfg) ProtoMessage() {} func (x *ProfitControlGameCfg) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[78] + mi := &file_server_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6291,7 +6475,7 @@ func (x *ProfitControlGameCfg) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfitControlGameCfg.ProtoReflect.Descriptor instead. func (*ProfitControlGameCfg) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{78} + return file_server_proto_rawDescGZIP(), []int{81} } func (x *ProfitControlGameCfg) GetGameFreeId() int32 { @@ -6341,7 +6525,7 @@ type ProfitControlPlatformCfg struct { func (x *ProfitControlPlatformCfg) Reset() { *x = ProfitControlPlatformCfg{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[79] + mi := &file_server_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6354,7 +6538,7 @@ func (x *ProfitControlPlatformCfg) String() string { func (*ProfitControlPlatformCfg) ProtoMessage() {} func (x *ProfitControlPlatformCfg) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[79] + mi := &file_server_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6367,7 +6551,7 @@ func (x *ProfitControlPlatformCfg) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfitControlPlatformCfg.ProtoReflect.Descriptor instead. func (*ProfitControlPlatformCfg) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{79} + return file_server_proto_rawDescGZIP(), []int{82} } func (x *ProfitControlPlatformCfg) GetPlatform() string { @@ -6396,7 +6580,7 @@ type WGProfitControlCorrect struct { func (x *WGProfitControlCorrect) Reset() { *x = WGProfitControlCorrect{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[80] + mi := &file_server_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6409,7 +6593,7 @@ func (x *WGProfitControlCorrect) String() string { func (*WGProfitControlCorrect) ProtoMessage() {} func (x *WGProfitControlCorrect) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[80] + mi := &file_server_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6422,7 +6606,7 @@ func (x *WGProfitControlCorrect) ProtoReflect() protoreflect.Message { // Deprecated: Use WGProfitControlCorrect.ProtoReflect.Descriptor instead. func (*WGProfitControlCorrect) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{80} + return file_server_proto_rawDescGZIP(), []int{83} } func (x *WGProfitControlCorrect) GetCfg() []*ProfitControlPlatformCfg { @@ -6444,7 +6628,7 @@ type GWChangeSceneEvent struct { func (x *GWChangeSceneEvent) Reset() { *x = GWChangeSceneEvent{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[81] + mi := &file_server_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6457,7 +6641,7 @@ func (x *GWChangeSceneEvent) String() string { func (*GWChangeSceneEvent) ProtoMessage() {} func (x *GWChangeSceneEvent) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[81] + mi := &file_server_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6470,7 +6654,7 @@ func (x *GWChangeSceneEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use GWChangeSceneEvent.ProtoReflect.Descriptor instead. func (*GWChangeSceneEvent) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{81} + return file_server_proto_rawDescGZIP(), []int{84} } func (x *GWChangeSceneEvent) GetSceneId() int32 { @@ -6492,7 +6676,7 @@ type PlayerIParam struct { func (x *PlayerIParam) Reset() { *x = PlayerIParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[82] + mi := &file_server_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6505,7 +6689,7 @@ func (x *PlayerIParam) String() string { func (*PlayerIParam) ProtoMessage() {} func (x *PlayerIParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[82] + mi := &file_server_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6518,7 +6702,7 @@ func (x *PlayerIParam) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerIParam.ProtoReflect.Descriptor instead. func (*PlayerIParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{82} + return file_server_proto_rawDescGZIP(), []int{85} } func (x *PlayerIParam) GetParamId() int32 { @@ -6547,7 +6731,7 @@ type PlayerSParam struct { func (x *PlayerSParam) Reset() { *x = PlayerSParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[83] + mi := &file_server_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6560,7 +6744,7 @@ func (x *PlayerSParam) String() string { func (*PlayerSParam) ProtoMessage() {} func (x *PlayerSParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[83] + mi := &file_server_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6573,7 +6757,7 @@ func (x *PlayerSParam) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerSParam.ProtoReflect.Descriptor instead. func (*PlayerSParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{83} + return file_server_proto_rawDescGZIP(), []int{86} } func (x *PlayerSParam) GetParamId() int32 { @@ -6602,7 +6786,7 @@ type PlayerCParam struct { func (x *PlayerCParam) Reset() { *x = PlayerCParam{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[84] + mi := &file_server_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6615,7 +6799,7 @@ func (x *PlayerCParam) String() string { func (*PlayerCParam) ProtoMessage() {} func (x *PlayerCParam) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[84] + mi := &file_server_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6628,7 +6812,7 @@ func (x *PlayerCParam) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerCParam.ProtoReflect.Descriptor instead. func (*PlayerCParam) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{84} + return file_server_proto_rawDescGZIP(), []int{87} } func (x *PlayerCParam) GetStrKey() string { @@ -6657,7 +6841,7 @@ type PlayerMatchCoin struct { func (x *PlayerMatchCoin) Reset() { *x = PlayerMatchCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[85] + mi := &file_server_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6670,7 +6854,7 @@ func (x *PlayerMatchCoin) String() string { func (*PlayerMatchCoin) ProtoMessage() {} func (x *PlayerMatchCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[85] + mi := &file_server_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6683,7 +6867,7 @@ func (x *PlayerMatchCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerMatchCoin.ProtoReflect.Descriptor instead. func (*PlayerMatchCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{85} + return file_server_proto_rawDescGZIP(), []int{88} } func (x *PlayerMatchCoin) GetSnId() int32 { @@ -6715,7 +6899,7 @@ type GWPlayerMatchBilled struct { func (x *GWPlayerMatchBilled) Reset() { *x = GWPlayerMatchBilled{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[86] + mi := &file_server_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6728,7 +6912,7 @@ func (x *GWPlayerMatchBilled) String() string { func (*GWPlayerMatchBilled) ProtoMessage() {} func (x *GWPlayerMatchBilled) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[86] + mi := &file_server_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6741,7 +6925,7 @@ func (x *GWPlayerMatchBilled) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerMatchBilled.ProtoReflect.Descriptor instead. func (*GWPlayerMatchBilled) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{86} + return file_server_proto_rawDescGZIP(), []int{89} } func (x *GWPlayerMatchBilled) GetSceneId() int32 { @@ -6789,7 +6973,7 @@ type GWPlayerMatchGrade struct { func (x *GWPlayerMatchGrade) Reset() { *x = GWPlayerMatchGrade{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[87] + mi := &file_server_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6802,7 +6986,7 @@ func (x *GWPlayerMatchGrade) String() string { func (*GWPlayerMatchGrade) ProtoMessage() {} func (x *GWPlayerMatchGrade) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[87] + mi := &file_server_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6815,7 +6999,7 @@ func (x *GWPlayerMatchGrade) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerMatchGrade.ProtoReflect.Descriptor instead. func (*GWPlayerMatchGrade) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{87} + return file_server_proto_rawDescGZIP(), []int{90} } func (x *GWPlayerMatchGrade) GetSceneId() int32 { @@ -6875,7 +7059,7 @@ type WGPlayerQuitMatch struct { func (x *WGPlayerQuitMatch) Reset() { *x = WGPlayerQuitMatch{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[88] + mi := &file_server_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6888,7 +7072,7 @@ func (x *WGPlayerQuitMatch) String() string { func (*WGPlayerQuitMatch) ProtoMessage() {} func (x *WGPlayerQuitMatch) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[88] + mi := &file_server_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6901,7 +7085,7 @@ func (x *WGPlayerQuitMatch) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerQuitMatch.ProtoReflect.Descriptor instead. func (*WGPlayerQuitMatch) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{88} + return file_server_proto_rawDescGZIP(), []int{91} } func (x *WGPlayerQuitMatch) GetSnId() int32 { @@ -6942,7 +7126,7 @@ type WGSceneMatchBaseChange struct { func (x *WGSceneMatchBaseChange) Reset() { *x = WGSceneMatchBaseChange{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[89] + mi := &file_server_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6955,7 +7139,7 @@ func (x *WGSceneMatchBaseChange) String() string { func (*WGSceneMatchBaseChange) ProtoMessage() {} func (x *WGSceneMatchBaseChange) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[89] + mi := &file_server_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6968,7 +7152,7 @@ func (x *WGSceneMatchBaseChange) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSceneMatchBaseChange.ProtoReflect.Descriptor instead. func (*WGSceneMatchBaseChange) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{89} + return file_server_proto_rawDescGZIP(), []int{92} } func (x *WGSceneMatchBaseChange) GetSceneIds() []int32 { @@ -7021,7 +7205,7 @@ type SSRedirectToPlayer struct { func (x *SSRedirectToPlayer) Reset() { *x = SSRedirectToPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[90] + mi := &file_server_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7034,7 +7218,7 @@ func (x *SSRedirectToPlayer) String() string { func (*SSRedirectToPlayer) ProtoMessage() {} func (x *SSRedirectToPlayer) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[90] + mi := &file_server_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7047,7 +7231,7 @@ func (x *SSRedirectToPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use SSRedirectToPlayer.ProtoReflect.Descriptor instead. func (*SSRedirectToPlayer) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{90} + return file_server_proto_rawDescGZIP(), []int{93} } func (x *SSRedirectToPlayer) GetSnId() int32 { @@ -7094,7 +7278,7 @@ type WGInviteMatchRob struct { func (x *WGInviteMatchRob) Reset() { *x = WGInviteMatchRob{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[91] + mi := &file_server_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7107,7 +7291,7 @@ func (x *WGInviteMatchRob) String() string { func (*WGInviteMatchRob) ProtoMessage() {} func (x *WGInviteMatchRob) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[91] + mi := &file_server_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7120,7 +7304,7 @@ func (x *WGInviteMatchRob) ProtoReflect() protoreflect.Message { // Deprecated: Use WGInviteMatchRob.ProtoReflect.Descriptor instead. func (*WGInviteMatchRob) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{91} + return file_server_proto_rawDescGZIP(), []int{94} } func (x *WGInviteMatchRob) GetPlatform() string { @@ -7171,7 +7355,7 @@ type GameInfo struct { func (x *GameInfo) Reset() { *x = GameInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[92] + mi := &file_server_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7184,7 +7368,7 @@ func (x *GameInfo) String() string { func (*GameInfo) ProtoMessage() {} func (x *GameInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[92] + mi := &file_server_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7197,7 +7381,7 @@ func (x *GameInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GameInfo.ProtoReflect.Descriptor instead. func (*GameInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{92} + return file_server_proto_rawDescGZIP(), []int{95} } func (x *GameInfo) GetGameId() int32 { @@ -7236,7 +7420,7 @@ type WGGameJackpot struct { func (x *WGGameJackpot) Reset() { *x = WGGameJackpot{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[93] + mi := &file_server_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7249,7 +7433,7 @@ func (x *WGGameJackpot) String() string { func (*WGGameJackpot) ProtoMessage() {} func (x *WGGameJackpot) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[93] + mi := &file_server_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7262,7 +7446,7 @@ func (x *WGGameJackpot) ProtoReflect() protoreflect.Message { // Deprecated: Use WGGameJackpot.ProtoReflect.Descriptor instead. func (*WGGameJackpot) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{93} + return file_server_proto_rawDescGZIP(), []int{96} } func (x *WGGameJackpot) GetSid() int64 { @@ -7312,7 +7496,7 @@ type BigWinHistoryInfo struct { func (x *BigWinHistoryInfo) Reset() { *x = BigWinHistoryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[94] + mi := &file_server_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7325,7 +7509,7 @@ func (x *BigWinHistoryInfo) String() string { func (*BigWinHistoryInfo) ProtoMessage() {} func (x *BigWinHistoryInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[94] + mi := &file_server_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7338,7 +7522,7 @@ func (x *BigWinHistoryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use BigWinHistoryInfo.ProtoReflect.Descriptor instead. func (*BigWinHistoryInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{94} + return file_server_proto_rawDescGZIP(), []int{97} } func (x *BigWinHistoryInfo) GetSpinID() string { @@ -7418,7 +7602,7 @@ type WGPlayerEnterMiniGame struct { func (x *WGPlayerEnterMiniGame) Reset() { *x = WGPlayerEnterMiniGame{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[95] + mi := &file_server_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7431,7 +7615,7 @@ func (x *WGPlayerEnterMiniGame) String() string { func (*WGPlayerEnterMiniGame) ProtoMessage() {} func (x *WGPlayerEnterMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[95] + mi := &file_server_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7444,7 +7628,7 @@ func (x *WGPlayerEnterMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerEnterMiniGame.ProtoReflect.Descriptor instead. func (*WGPlayerEnterMiniGame) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{95} + return file_server_proto_rawDescGZIP(), []int{98} } func (x *WGPlayerEnterMiniGame) GetSid() int64 { @@ -7532,7 +7716,7 @@ type WGPlayerLeaveMiniGame struct { func (x *WGPlayerLeaveMiniGame) Reset() { *x = WGPlayerLeaveMiniGame{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[96] + mi := &file_server_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7545,7 +7729,7 @@ func (x *WGPlayerLeaveMiniGame) String() string { func (*WGPlayerLeaveMiniGame) ProtoMessage() {} func (x *WGPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[96] + mi := &file_server_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7558,7 +7742,7 @@ func (x *WGPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerLeaveMiniGame.ProtoReflect.Descriptor instead. func (*WGPlayerLeaveMiniGame) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{96} + return file_server_proto_rawDescGZIP(), []int{99} } func (x *WGPlayerLeaveMiniGame) GetSid() int64 { @@ -7601,7 +7785,7 @@ type WGPlayerLeave struct { func (x *WGPlayerLeave) Reset() { *x = WGPlayerLeave{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[97] + mi := &file_server_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7614,7 +7798,7 @@ func (x *WGPlayerLeave) String() string { func (*WGPlayerLeave) ProtoMessage() {} func (x *WGPlayerLeave) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[97] + mi := &file_server_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7627,7 +7811,7 @@ func (x *WGPlayerLeave) ProtoReflect() protoreflect.Message { // Deprecated: Use WGPlayerLeave.ProtoReflect.Descriptor instead. func (*WGPlayerLeave) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{97} + return file_server_proto_rawDescGZIP(), []int{100} } func (x *WGPlayerLeave) GetSnId() int32 { @@ -7653,7 +7837,7 @@ type GWPlayerLeaveMiniGame struct { func (x *GWPlayerLeaveMiniGame) Reset() { *x = GWPlayerLeaveMiniGame{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[98] + mi := &file_server_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7666,7 +7850,7 @@ func (x *GWPlayerLeaveMiniGame) String() string { func (*GWPlayerLeaveMiniGame) ProtoMessage() {} func (x *GWPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[98] + mi := &file_server_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7679,7 +7863,7 @@ func (x *GWPlayerLeaveMiniGame) ProtoReflect() protoreflect.Message { // Deprecated: Use GWPlayerLeaveMiniGame.ProtoReflect.Descriptor instead. func (*GWPlayerLeaveMiniGame) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{98} + return file_server_proto_rawDescGZIP(), []int{101} } func (x *GWPlayerLeaveMiniGame) GetSceneId() int32 { @@ -7729,7 +7913,7 @@ type GWDestroyMiniScene struct { func (x *GWDestroyMiniScene) Reset() { *x = GWDestroyMiniScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[99] + mi := &file_server_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7742,7 +7926,7 @@ func (x *GWDestroyMiniScene) String() string { func (*GWDestroyMiniScene) ProtoMessage() {} func (x *GWDestroyMiniScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[99] + mi := &file_server_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7755,7 +7939,7 @@ func (x *GWDestroyMiniScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GWDestroyMiniScene.ProtoReflect.Descriptor instead. func (*GWDestroyMiniScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{99} + return file_server_proto_rawDescGZIP(), []int{102} } func (x *GWDestroyMiniScene) GetSceneId() int32 { @@ -7777,7 +7961,7 @@ type GRDestroyScene struct { func (x *GRDestroyScene) Reset() { *x = GRDestroyScene{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[100] + mi := &file_server_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7790,7 +7974,7 @@ func (x *GRDestroyScene) String() string { func (*GRDestroyScene) ProtoMessage() {} func (x *GRDestroyScene) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[100] + mi := &file_server_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7803,7 +7987,7 @@ func (x *GRDestroyScene) ProtoReflect() protoreflect.Message { // Deprecated: Use GRDestroyScene.ProtoReflect.Descriptor instead. func (*GRDestroyScene) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{100} + return file_server_proto_rawDescGZIP(), []int{103} } func (x *GRDestroyScene) GetSceneId() int32 { @@ -7825,7 +8009,7 @@ type RWAccountInvalid struct { func (x *RWAccountInvalid) Reset() { *x = RWAccountInvalid{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[101] + mi := &file_server_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7838,7 +8022,7 @@ func (x *RWAccountInvalid) String() string { func (*RWAccountInvalid) ProtoMessage() {} func (x *RWAccountInvalid) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[101] + mi := &file_server_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7851,7 +8035,7 @@ func (x *RWAccountInvalid) ProtoReflect() protoreflect.Message { // Deprecated: Use RWAccountInvalid.ProtoReflect.Descriptor instead. func (*RWAccountInvalid) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{101} + return file_server_proto_rawDescGZIP(), []int{104} } func (x *RWAccountInvalid) GetAcc() string { @@ -7874,7 +8058,7 @@ type WGDTRoomInfo struct { func (x *WGDTRoomInfo) Reset() { *x = WGDTRoomInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[102] + mi := &file_server_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7887,7 +8071,7 @@ func (x *WGDTRoomInfo) String() string { func (*WGDTRoomInfo) ProtoMessage() {} func (x *WGDTRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[102] + mi := &file_server_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7900,7 +8084,7 @@ func (x *WGDTRoomInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use WGDTRoomInfo.ProtoReflect.Descriptor instead. func (*WGDTRoomInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{102} + return file_server_proto_rawDescGZIP(), []int{105} } func (x *WGDTRoomInfo) GetDataKey() string { @@ -7935,7 +8119,7 @@ type PlayerDTCoin struct { func (x *PlayerDTCoin) Reset() { *x = PlayerDTCoin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[103] + mi := &file_server_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7948,7 +8132,7 @@ func (x *PlayerDTCoin) String() string { func (*PlayerDTCoin) ProtoMessage() {} func (x *PlayerDTCoin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[103] + mi := &file_server_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7961,7 +8145,7 @@ func (x *PlayerDTCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use PlayerDTCoin.ProtoReflect.Descriptor instead. func (*PlayerDTCoin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{103} + return file_server_proto_rawDescGZIP(), []int{106} } func (x *PlayerDTCoin) GetNickName() string { @@ -8032,7 +8216,7 @@ type EResult struct { func (x *EResult) Reset() { *x = EResult{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[104] + mi := &file_server_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8045,7 +8229,7 @@ func (x *EResult) String() string { func (*EResult) ProtoMessage() {} func (x *EResult) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[104] + mi := &file_server_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8058,7 +8242,7 @@ func (x *EResult) ProtoReflect() protoreflect.Message { // Deprecated: Use EResult.ProtoReflect.Descriptor instead. func (*EResult) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{104} + return file_server_proto_rawDescGZIP(), []int{107} } func (x *EResult) GetIndex() string { @@ -8100,7 +8284,7 @@ type GWDTRoomInfo struct { func (x *GWDTRoomInfo) Reset() { *x = GWDTRoomInfo{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[105] + mi := &file_server_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8113,7 +8297,7 @@ func (x *GWDTRoomInfo) String() string { func (*GWDTRoomInfo) ProtoMessage() {} func (x *GWDTRoomInfo) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[105] + mi := &file_server_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8126,7 +8310,7 @@ func (x *GWDTRoomInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use GWDTRoomInfo.ProtoReflect.Descriptor instead. func (*GWDTRoomInfo) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{105} + return file_server_proto_rawDescGZIP(), []int{108} } func (x *GWDTRoomInfo) GetDataKey() string { @@ -8242,7 +8426,7 @@ type WGRoomResults struct { func (x *WGRoomResults) Reset() { *x = WGRoomResults{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[106] + mi := &file_server_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8255,7 +8439,7 @@ func (x *WGRoomResults) String() string { func (*WGRoomResults) ProtoMessage() {} func (x *WGRoomResults) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[106] + mi := &file_server_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8268,7 +8452,7 @@ func (x *WGRoomResults) ProtoReflect() protoreflect.Message { // Deprecated: Use WGRoomResults.ProtoReflect.Descriptor instead. func (*WGRoomResults) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{106} + return file_server_proto_rawDescGZIP(), []int{109} } func (x *WGRoomResults) GetRoomId() int32 { @@ -8313,7 +8497,7 @@ type GWRoomResults struct { func (x *GWRoomResults) Reset() { *x = GWRoomResults{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[107] + mi := &file_server_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8326,7 +8510,7 @@ func (x *GWRoomResults) String() string { func (*GWRoomResults) ProtoMessage() {} func (x *GWRoomResults) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[107] + mi := &file_server_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8339,7 +8523,7 @@ func (x *GWRoomResults) ProtoReflect() protoreflect.Message { // Deprecated: Use GWRoomResults.ProtoReflect.Descriptor instead. func (*GWRoomResults) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{107} + return file_server_proto_rawDescGZIP(), []int{110} } func (x *GWRoomResults) GetDataKey() string { @@ -8377,7 +8561,7 @@ type GWAddSingleAdjust struct { func (x *GWAddSingleAdjust) Reset() { *x = GWAddSingleAdjust{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[108] + mi := &file_server_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8390,7 +8574,7 @@ func (x *GWAddSingleAdjust) String() string { func (*GWAddSingleAdjust) ProtoMessage() {} func (x *GWAddSingleAdjust) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[108] + mi := &file_server_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8403,7 +8587,7 @@ func (x *GWAddSingleAdjust) ProtoReflect() protoreflect.Message { // Deprecated: Use GWAddSingleAdjust.ProtoReflect.Descriptor instead. func (*GWAddSingleAdjust) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{108} + return file_server_proto_rawDescGZIP(), []int{111} } func (x *GWAddSingleAdjust) GetSnId() int32 { @@ -8441,7 +8625,7 @@ type WGSingleAdjust struct { func (x *WGSingleAdjust) Reset() { *x = WGSingleAdjust{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[109] + mi := &file_server_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8454,7 +8638,7 @@ func (x *WGSingleAdjust) String() string { func (*WGSingleAdjust) ProtoMessage() {} func (x *WGSingleAdjust) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[109] + mi := &file_server_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8467,7 +8651,7 @@ func (x *WGSingleAdjust) ProtoReflect() protoreflect.Message { // Deprecated: Use WGSingleAdjust.ProtoReflect.Descriptor instead. func (*WGSingleAdjust) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{109} + return file_server_proto_rawDescGZIP(), []int{112} } func (x *WGSingleAdjust) GetSceneId() int32 { @@ -8508,7 +8692,7 @@ type WbCtrlCfg struct { func (x *WbCtrlCfg) Reset() { *x = WbCtrlCfg{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[110] + mi := &file_server_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8521,7 +8705,7 @@ func (x *WbCtrlCfg) String() string { func (*WbCtrlCfg) ProtoMessage() {} func (x *WbCtrlCfg) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[110] + mi := &file_server_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8534,7 +8718,7 @@ func (x *WbCtrlCfg) ProtoReflect() protoreflect.Message { // Deprecated: Use WbCtrlCfg.ProtoReflect.Descriptor instead. func (*WbCtrlCfg) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{110} + return file_server_proto_rawDescGZIP(), []int{113} } func (x *WbCtrlCfg) GetPlatform() string { @@ -8593,7 +8777,7 @@ type WGBuyRecTimeItem struct { func (x *WGBuyRecTimeItem) Reset() { *x = WGBuyRecTimeItem{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[111] + mi := &file_server_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8606,7 +8790,7 @@ func (x *WGBuyRecTimeItem) String() string { func (*WGBuyRecTimeItem) ProtoMessage() {} func (x *WGBuyRecTimeItem) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[111] + mi := &file_server_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8619,7 +8803,7 @@ func (x *WGBuyRecTimeItem) ProtoReflect() protoreflect.Message { // Deprecated: Use WGBuyRecTimeItem.ProtoReflect.Descriptor instead. func (*WGBuyRecTimeItem) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{111} + return file_server_proto_rawDescGZIP(), []int{114} } func (x *WGBuyRecTimeItem) GetSnId() int32 { @@ -8656,7 +8840,7 @@ type WGUpdateSkin struct { func (x *WGUpdateSkin) Reset() { *x = WGUpdateSkin{} if protoimpl.UnsafeEnabled { - mi := &file_server_proto_msgTypes[112] + mi := &file_server_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8669,7 +8853,7 @@ func (x *WGUpdateSkin) String() string { func (*WGUpdateSkin) ProtoMessage() {} func (x *WGUpdateSkin) ProtoReflect() protoreflect.Message { - mi := &file_server_proto_msgTypes[112] + mi := &file_server_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8682,7 +8866,7 @@ func (x *WGUpdateSkin) ProtoReflect() protoreflect.Message { // Deprecated: Use WGUpdateSkin.ProtoReflect.Descriptor instead. func (*WGUpdateSkin) Descriptor() ([]byte, []int) { - return file_server_proto_rawDescGZIP(), []int{112} + return file_server_proto_rawDescGZIP(), []int{115} } func (x *WGUpdateSkin) GetSnId() int32 { @@ -8699,6 +8883,62 @@ func (x *WGUpdateSkin) GetId() int32 { return 0 } +// PACKET_PlayerChangeItems +type PlayerChangeItems struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` + Items []*Item `protobuf:"bytes,2,rep,name=Items,proto3" json:"Items,omitempty"` // 道具变化数量 +} + +func (x *PlayerChangeItems) Reset() { + *x = PlayerChangeItems{} + if protoimpl.UnsafeEnabled { + mi := &file_server_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlayerChangeItems) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlayerChangeItems) ProtoMessage() {} + +func (x *PlayerChangeItems) ProtoReflect() protoreflect.Message { + mi := &file_server_proto_msgTypes[116] + 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 PlayerChangeItems.ProtoReflect.Descriptor instead. +func (*PlayerChangeItems) Descriptor() ([]byte, []int) { + return file_server_proto_rawDescGZIP(), []int{116} +} + +func (x *PlayerChangeItems) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *PlayerChangeItems) GetItems() []*Item { + if x != nil { + return x.Items + } + return nil +} + var File_server_proto protoreflect.FileDescriptor var file_server_proto_rawDesc = []byte{ @@ -8743,1137 +8983,1165 @@ var file_server_proto_rawDesc = []byte{ 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x22, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x54, 0x65, 0x78, 0x74, 0x22, 0xbc, 0x05, 0x0a, 0x0d, 0x57, 0x47, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, - 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x78, - 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x48, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x43, 0x6c, 0x75, 0x62, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, - 0x6c, 0x75, 0x62, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x50, - 0x6f, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, - 0x6f, 0x6d, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x61, 0x74, - 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, - 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x3c, 0x0a, 0x0e, 0x57, 0x47, 0x44, 0x65, 0x73, - 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x03, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, - 0x73, 0x47, 0x72, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, - 0x47, 0x72, 0x61, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x64, 0x22, 0x56, 0x0a, 0x0a, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, - 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, - 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0xdd, 0x06, 0x0a, 0x0d, - 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, - 0x4d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, - 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, - 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, - 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, - 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, - 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x63, - 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, - 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, - 0x6f, 0x73, 0x74, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, - 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x0d, 0x57, - 0x47, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 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, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, - 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, - 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, - 0x65, 0x72, 0x54, 0x73, 0x22, 0x91, 0x07, 0x0a, 0x0d, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, - 0x65, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, 0x6c, 0x56, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x53, 0x65, 0x6c, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, - 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x54, 0x6f, 0x74, 0x61, + 0x28, 0x09, 0x52, 0x04, 0x54, 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, + 0x75, 0x6d, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0xec, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x72, 0x74, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, + 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x08, 0x49, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, + 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x75, 0x72, + 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0d, 0x43, 0x75, 0x72, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, + 0x24, 0x0a, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, + 0x79, 0x70, 0x65, 0x22, 0xed, 0x04, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x53, 0x63, 0x65, 0x6e, 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, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 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, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, + 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, + 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x66, 0x74, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, + 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x09, 0x43, 0x6f, + 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x43, 0x6f, 0x73, + 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x12, 0x28, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, + 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x3c, 0x0a, 0x0e, 0x57, 0x47, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x03, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x47, 0x72, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x47, 0x72, 0x61, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, + 0x56, 0x0a, 0x0a, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, + 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x66, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, + 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0xdd, 0x06, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, + 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, + 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x1a, + 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, + 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x0d, 0x57, 0x47, 0x41, 0x75, 0x64, + 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x50, 0x6f, 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 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, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, + 0x22, 0x91, 0x07, 0x0a, 0x0d, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, + 0x0a, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x65, 0x6c, 0x56, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x65, + 0x6c, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, + 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, - 0x12, 0x2e, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, - 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x49, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, - 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, - 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, - 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, - 0x65, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, - 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, - 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x10, 0x57, 0x47, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x72, 0x6f, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x52, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x22, 0x3e, - 0x0a, 0x10, 0x47, 0x57, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, - 0x01, 0x0a, 0x13, 0x47, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, - 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x49, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, - 0x0a, 0x15, 0x47, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x55, 0x6e, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0f, 0x57, 0x47, 0x44, - 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x69, - 0x6e, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, - 0x65, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x14, - 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, - 0x6f, 0x6e, 0x74, 0x68, 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 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, 0x10, 0x0a, 0x03, 0x50, - 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x50, 0x6f, 0x73, 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, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, - 0xae, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 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, 0x12, 0x10, - 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x42, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x42, - 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, - 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x65, 0x12, 0x30, 0x0a, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, - 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, - 0x6e, 0x65, 0x73, 0x22, 0x9c, 0x04, 0x0a, 0x0f, 0x47, 0x52, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, - 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x52, - 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x52, - 0x03, 0x52, 0x65, 0x63, 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, 0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x43, 0x6c, 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, - 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, - 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, - 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x50, 0x6f, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, - 0x72, 0x50, 0x6f, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x56, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x56, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, - 0x44, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x49, 0x44, 0x22, 0xb2, 0x01, 0x0a, 0x0a, 0x57, 0x52, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, - 0x63, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, - 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x57, 0x52, 0x47, 0x61, 0x6d, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x52, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x57, 0x54, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 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, 0x22, 0x8f, 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, - 0x65, 0x52, 0x65, 0x63, 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, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, - 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x09, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, - 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, - 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, - 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, - 0x6f, 0x64, 0x65, 0x22, 0x76, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, - 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x33, 0x0a, 0x09, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, - 0x22, 0x3a, 0x0a, 0x0a, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x46, 0x69, 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x46, 0x69, 0x73, 0x68, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0c, - 0x47, 0x57, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x12, 0x34, 0x0a, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, - 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x5e, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x46, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, - 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x01, 0x0a, 0x0d, 0x57, 0x52, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, - 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 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, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, - 0x22, 0x40, 0x0a, 0x12, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x57, 0x47, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4b, 0x69, - 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x53, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x57, 0x44, 0x44, 0x61, 0x74, 0x61, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x83, 0x01, - 0x0a, 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, - 0x72, 0x64, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x22, 0x0a, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, - 0x6f, 0x64, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, - 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, - 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x43, - 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5c, 0x0a, 0x0d, 0x47, - 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x57, 0x52, - 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x57, 0x47, 0x52, 0x65, 0x62, 0x69, 0x6e, - 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4f, - 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6c, - 0x64, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, 0x22, - 0x4e, 0x0a, 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x46, - 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x22, - 0x51, 0x0a, 0x0b, 0x57, 0x47, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x4f, 0x70, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6e, - 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x4e, 0x65, 0x77, 0x4e, 0x6f, 0x74, 0x69, - 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x22, 0xa7, 0x02, 0x0a, - 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x6f, 0x6f, 0x6c, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x49, 0x73, - 0x46, 0x6f, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, - 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, - 0x49, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, - 0x79, 0x73, 0x49, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, - 0x4f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x79, 0x73, 0x4f, 0x75, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x47, 0x57, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x12, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x05, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, 0x0a, 0x10, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x52, 0x61, + 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, + 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x10, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x72, 0x6f, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, + 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x47, 0x57, + 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x13, 0x47, + 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x69, + 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, 0x15, 0x47, 0x47, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x42, + 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0f, 0x57, 0x47, 0x44, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x69, 0x6e, 0x75, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x48, 0x6f, 0x75, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, + 0x6e, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x74, 0x68, + 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 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, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x50, 0x6f, 0x73, 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, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x0c, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 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, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x42, 0x69, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x0d, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x12, 0x30, 0x0a, + 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x22, + 0x9c, 0x04, 0x0a, 0x0f, 0x47, 0x52, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x52, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x52, 0x03, 0x52, 0x65, 0x63, + 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, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, + 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6c, + 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, + 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, + 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, 0xb2, + 0x01, 0x0a, 0x0a, 0x57, 0x52, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, + 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x52, 0x65, + 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, + 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, + 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, + 0x67, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x57, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x52, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x57, 0x54, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x50, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 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, 0x22, 0x8f, + 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, + 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, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, + 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0xac, 0x01, 0x0a, 0x09, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x52, 0x05, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x22, + 0x76, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4d, + 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, + 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x33, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x43, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0a, + 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x69, + 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x69, 0x73, 0x68, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0c, 0x47, 0x57, 0x46, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, + 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x73, 0x68, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x22, 0x44, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, + 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, + 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0d, 0x57, 0x52, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x75, 0x6d, 0x70, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x50, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xb5, 0x01, - 0x0a, 0x0f, 0x57, 0x47, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 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, 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, 0x1a, 0x0a, - 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x57, 0x47, 0x53, 0x65, 0x74, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 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, 0x18, 0x0a, 0x07, 0x49, 0x73, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, + 0x69, 0x74, 0x22, 0x40, 0x0a, 0x12, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x57, 0x47, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x57, 0x44, 0x44, 0x61, 0x74, + 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, + 0x83, 0x01, 0x0a, 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x43, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, + 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, + 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x50, + 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5c, 0x0a, + 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0e, 0x47, + 0x57, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x57, 0x47, 0x52, 0x65, 0x62, + 0x69, 0x6e, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x4f, 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x4f, 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, + 0x64, 0x22, 0x4e, 0x0a, 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, + 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x51, 0x0a, 0x0b, 0x57, 0x47, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x4f, 0x70, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x73, 0x6e, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x4e, 0x65, 0x77, 0x4e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x72, 0x6f, + 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x22, 0xa7, + 0x02, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x6f, + 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x49, 0x73, 0x46, 0x6f, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, + 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x79, 0x73, 0x49, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x53, 0x79, 0x73, 0x49, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x79, 0x73, 0x4f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x53, 0x79, 0x73, 0x4f, 0x75, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x47, 0x57, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x75, 0x6d, + 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x50, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x22, + 0xb5, 0x01, 0x0a, 0x0f, 0x57, 0x47, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 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, 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, + 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x57, 0x47, 0x53, 0x65, + 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x42, 0x43, + 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x57, 0x42, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x57, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x65, + 0x76, 0x65, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x7e, 0x0a, + 0x10, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 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, 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, 0x14, 0x0a, 0x05, 0x53, 0x6e, 0x69, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x08, 0x52, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x22, 0x7a, 0x0a, + 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x0a, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x54, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x42, 0x47, 0x61, + 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0c, + 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 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, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x22, 0xa8, 0x01, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x10, + 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, + 0x12, 0x40, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, + 0x63, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, + 0x22, 0x2e, 0x0a, 0x12, 0x57, 0x47, 0x50, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x5d, 0x0a, 0x0e, 0x47, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, + 0x4f, 0x0a, 0x17, 0x57, 0x47, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, + 0x22, 0x94, 0x01, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x44, 0x57, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, + 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, + 0x6c, 0x74, 0x22, 0x89, 0x03, 0x0a, 0x13, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x49, + 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, + 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, + 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x12, 0x28, + 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x65, 0x74, + 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x6c, + 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x43, + 0x0a, 0x17, 0x57, 0x44, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, + 0x43, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, + 0x74, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, + 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x53, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x22, 0xce, 0x01, 0x0a, 0x0e, 0x47, 0x57, + 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x4a, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x4a, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, + 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x0e, 0x47, 0x57, + 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, + 0x57, 0x47, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x44, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x44, 0x0a, 0x0f, 0x47, + 0x57, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x12, 0x31, + 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, + 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x22, 0x3b, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x75, 0x74, + 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x54, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x22, 0x74, + 0x0a, 0x1e, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x51, 0x75, 0x65, 0x75, 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, 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, 0x16, 0x0a, 0x06, + 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, + 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x10, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6f, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, + 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, + 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x6e, 0x0a, + 0x18, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 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, 0x36, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x66, 0x67, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x4c, 0x0a, + 0x16, 0x57, 0x47, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x47, + 0x57, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x22, 0x40, 0x0a, + 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, + 0x3e, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, + 0x39, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, + 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x69, 0x6c, 0x6c, + 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, + 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, + 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x70, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, + 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x61, 0x6d, + 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x57, 0x47, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x57, 0x47, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, + 0x75, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, + 0x75, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, + 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x53, 0x53, 0x52, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x42, 0x43, 0x6f, 0x69, - 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x57, 0x42, - 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x2a, 0x0a, 0x14, 0x47, 0x57, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, - 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x10, 0x47, - 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, 0x67, 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, 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, 0x14, 0x0a, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x08, - 0x52, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x22, 0x7a, 0x0a, 0x12, 0x47, - 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x65, 0x61, 0x76, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, - 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, - 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, - 0x69, 0x6e, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0c, 0x47, 0x57, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, - 0x61, 0x74, 0x61, 0x73, 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, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xa8, - 0x01, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x47, 0x57, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x40, - 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, - 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x63, 0x49, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, 0x22, 0x2e, - 0x0a, 0x12, 0x57, 0x47, 0x50, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5d, - 0x0a, 0x0e, 0x47, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x4f, 0x0a, - 0x17, 0x57, 0x47, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, - 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, - 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, - 0x01, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x50, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6c, 0x74, - 0x22, 0x89, 0x03, 0x0a, 0x13, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, - 0x61, 0x6d, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x49, 0x6e, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, - 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x6e, - 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, - 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, - 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, - 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, - 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x43, 0x0a, 0x17, - 0x57, 0x44, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, 0x22, - 0x85, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, - 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x22, 0xce, 0x01, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, - 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4a, 0x61, - 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4a, 0x61, - 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, - 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, 0x57, 0x47, - 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x12, - 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x44, 0x0a, 0x0f, 0x47, 0x57, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x12, 0x31, 0x0a, 0x06, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, - 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x22, - 0x3b, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x4d, - 0x61, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x22, 0x74, 0x0a, 0x1e, - 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x51, 0x75, 0x65, 0x75, 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, 0x1e, 0x0a, 0x0a, 0x47, 0x61, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, + 0x0a, 0x10, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x6f, 0x62, 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, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, + 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 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, 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, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, - 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x10, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x75, 0x74, - 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, - 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, - 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, - 0x1a, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x6e, 0x0a, 0x18, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 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, 0x36, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x66, 0x67, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x4c, 0x0a, 0x16, 0x57, - 0x47, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, - 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x43, 0x66, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x3e, 0x0a, - 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, - 0x74, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x39, 0x0a, - 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x0d, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, + 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x64, 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, + 0x24, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x67, 0x57, 0x69, 0x6e, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, + 0x70, 0x69, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x70, 0x69, + 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x49, + 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, + 0x72, 0x64, 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, + 0x71, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, + 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 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, 0x9d, 0x01, 0x0a, 0x15, 0x47, 0x57, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 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, 0x12, 0x0a, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0e, 0x47, 0x52, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x52, 0x57, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x47, 0x44, + 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, + 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, + 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, + 0x6f, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, + 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9b, 0x03, + 0x0a, 0x0c, 0x47, 0x57, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, + 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, + 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, + 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, + 0x12, 0x29, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, + 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x75, 0x0a, 0x0d, 0x57, + 0x47, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, + 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, + 0x65, 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x57, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x4d, 0x73, 0x67, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x57, 0x41, 0x64, 0x64, 0x53, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 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, 0x22, 0x72, 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0xaf, 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, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0x60, + 0x0a, 0x10, 0x57, 0x47, 0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 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, + 0x22, 0x32, 0x0a, 0x0c, 0x57, 0x47, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x57, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x22, - 0xd5, 0x01, 0x0a, 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x75, - 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4e, - 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x70, 0x65, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, - 0x67, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, - 0x6f, 0x67, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x57, 0x47, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x57, 0x47, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, - 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x75, 0x74, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x75, 0x74, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x53, 0x53, 0x52, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, 0x0a, 0x10, - 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, - 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, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, - 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 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, 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, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x0d, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, - 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, - 0x64, 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, 0x24, 0x0a, - 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x70, 0x69, - 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x70, 0x69, 0x6e, 0x49, - 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x43, - 0x61, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, - 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0x71, 0x0a, - 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, - 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x22, 0x23, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 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, 0x9d, 0x01, 0x0a, 0x15, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 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, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0e, 0x47, 0x52, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x22, 0x24, 0x0a, 0x10, 0x52, 0x57, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x47, 0x44, 0x54, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x44, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, - 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, - 0x69, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9b, 0x03, 0x0a, 0x0c, - 0x47, 0x57, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, - 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, - 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, - 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x2e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x65, - 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, - 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x29, - 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x75, 0x0a, 0x0d, 0x57, 0x47, 0x52, - 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, - 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x57, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x57, 0x41, 0x64, 0x64, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 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, 0x22, 0x72, 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0xaf, 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, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0x60, 0x0a, 0x10, - 0x57, 0x47, 0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x54, 0x69, 0x6d, 0x65, 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, 0x22, 0x32, - 0x0a, 0x0c, 0x57, 0x47, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x2a, 0xe4, 0x16, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, - 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x52, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, - 0xe8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, - 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, - 0xec, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, - 0x53, 0x52, 0x56, 0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, - 0x47, 0x10, 0xf5, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, - 0x45, 0x10, 0xcd, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, - 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, - 0x4d, 0x43, 0x41, 0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, - 0x4e, 0x45, 0x10, 0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, - 0x45, 0x10, 0xd3, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, - 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, - 0x10, 0xd5, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, - 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, - 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, - 0x4e, 0x10, 0xd7, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, - 0x08, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, - 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, - 0x4e, 0x54, 0x45, 0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, - 0x56, 0x45, 0x10, 0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, - 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, - 0x49, 0x43, 0x4b, 0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, - 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, - 0x41, 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, - 0x4c, 0x4d, 0x4f, 0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, - 0x49, 0x44, 0x10, 0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, - 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, - 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x10, 0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, - 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, - 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, - 0x49, 0x53, 0x48, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, + 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, + 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x2a, 0x83, 0x17, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, + 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, + 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, + 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, + 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, + 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, + 0x52, 0x56, 0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, + 0x10, 0xf5, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x43, 0x41, 0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, + 0x10, 0xcd, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, + 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x46, 0x4f, 0x52, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, - 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x57, 0x49, 0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x44, 0x41, 0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, - 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x10, 0xee, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, - 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, - 0x4d, 0x10, 0xef, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x52, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x10, 0xf2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, - 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, - 0x44, 0x53, 0x10, 0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, - 0xdd, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, - 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, - 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x43, 0x10, 0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, - 0x4e, 0x47, 0x10, 0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, - 0x4b, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, - 0x56, 0x45, 0x57, 0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x4c, 0x4f, 0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, - 0x4f, 0x49, 0x4e, 0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x10, 0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, - 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, - 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, - 0x41, 0x47, 0x45, 0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, - 0x10, 0xef, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, - 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, - 0x4f, 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, - 0x49, 0x4e, 0x10, 0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, - 0xf3, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, - 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, - 0xf5, 0x0b, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, - 0x49, 0x4e, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, - 0x45, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, - 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, - 0x49, 0x54, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, - 0x54, 0x10, 0xf8, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x10, 0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, + 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, + 0x43, 0x41, 0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, + 0x45, 0x10, 0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, + 0x10, 0xd3, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, + 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, + 0xd5, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, + 0x49, 0x4e, 0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, + 0x10, 0xd7, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, + 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, + 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, + 0x54, 0x45, 0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, + 0x45, 0x10, 0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, + 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, + 0x43, 0x4b, 0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, + 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, + 0x4d, 0x4f, 0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, + 0x44, 0x10, 0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, + 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, + 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, + 0x43, 0x45, 0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, + 0x53, 0x48, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, + 0x4f, 0x52, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x57, 0x49, 0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x44, 0x41, 0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, + 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, + 0xee, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, + 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, + 0x10, 0xef, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, + 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, + 0xf2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, + 0x72, 0x6c, 0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, + 0x53, 0x10, 0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, + 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, + 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, + 0x54, 0x49, 0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, + 0x43, 0x10, 0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, + 0x47, 0x10, 0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, + 0x45, 0x57, 0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, + 0x41, 0x52, 0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x4c, 0x4f, 0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, + 0x49, 0x4e, 0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x10, 0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, + 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, + 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, + 0xef, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, + 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, + 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, + 0x4e, 0x10, 0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, + 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, - 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, - 0xfc, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, - 0xfd, 0x0b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x53, 0x43, 0x45, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, - 0x48, 0x52, 0x4f, 0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, - 0x10, 0x83, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, - 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, - 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, - 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, - 0x87, 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, - 0x10, 0x88, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, - 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, - 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, - 0x53, 0x10, 0x8c, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, - 0x8d, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, - 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, - 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x42, 0x55, 0x59, - 0x52, 0x45, 0x43, 0x54, 0x49, 0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x90, 0x0c, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x10, 0x91, 0x0c, 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, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x59, 0x45, 0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, + 0x0b, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, + 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, + 0x4e, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, + 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, + 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, + 0x54, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, + 0x10, 0xf8, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x10, 0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, + 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, + 0x0b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, + 0x43, 0x45, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x52, 0x4f, 0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, + 0x83, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, + 0x47, 0x41, 0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, + 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, + 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, + 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, + 0x88, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, + 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, + 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, + 0x10, 0x8c, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, + 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, + 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, + 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x42, 0x55, 0x59, 0x52, + 0x45, 0x43, 0x54, 0x49, 0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x90, 0x0c, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x10, 0x91, 0x0c, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x10, 0x92, 0x0c, 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, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -9889,7 +10157,7 @@ func file_server_proto_rawDescGZIP() []byte { } var file_server_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 118) +var file_server_proto_msgTypes = make([]protoimpl.MessageInfo, 122) var file_server_proto_goTypes = []interface{}{ (SSPacketID)(0), // 0: server.SSPacketID (SGBindGroupTag_OpCode)(0), // 1: server.SGBindGroupTag.OpCode @@ -9901,155 +10169,164 @@ var file_server_proto_goTypes = []interface{}{ (*ServerState)(nil), // 7: server.ServerState (*ServerCtrl)(nil), // 8: server.ServerCtrl (*ServerNotice)(nil), // 9: server.ServerNotice - (*WGCreateScene)(nil), // 10: server.WGCreateScene - (*WGDestroyScene)(nil), // 11: server.WGDestroyScene - (*GWDestroyScene)(nil), // 12: server.GWDestroyScene - (*RebateTask)(nil), // 13: server.RebateTask - (*WGPlayerEnter)(nil), // 14: server.WGPlayerEnter - (*WGAudienceSit)(nil), // 15: server.WGAudienceSit - (*WGPlayerReturn)(nil), // 16: server.WGPlayerReturn - (*GWPlayerLeave)(nil), // 17: server.GWPlayerLeave - (*WGPlayerDropLine)(nil), // 18: server.WGPlayerDropLine - (*WGPlayerRehold)(nil), // 19: server.WGPlayerRehold - (*GWBilledRoomCard)(nil), // 20: server.GWBilledRoomCard - (*GGPlayerSessionBind)(nil), // 21: server.GGPlayerSessionBind - (*GGPlayerSessionUnBind)(nil), // 22: server.GGPlayerSessionUnBind - (*WGDayTimeChange)(nil), // 23: server.WGDayTimeChange - (*ReplayPlayerData)(nil), // 24: server.ReplayPlayerData - (*ReplayRecord)(nil), // 25: server.ReplayRecord - (*ReplaySequene)(nil), // 26: server.ReplaySequene - (*GRReplaySequene)(nil), // 27: server.GRReplaySequene - (*WRLoginRec)(nil), // 28: server.WRLoginRec - (*WRGameDetail)(nil), // 29: server.WRGameDetail - (*WRPlayerData)(nil), // 30: server.WRPlayerData - (*WTPlayerPay)(nil), // 31: server.WTPlayerPay - (*PlayerGameRec)(nil), // 32: server.PlayerGameRec - (*GWGameRec)(nil), // 33: server.GWGameRec - (*GWSceneStart)(nil), // 34: server.GWSceneStart - (*PlayerCtx)(nil), // 35: server.PlayerCtx - (*FishRecord)(nil), // 36: server.FishRecord - (*GWFishRecord)(nil), // 37: server.GWFishRecord - (*GWSceneState)(nil), // 38: server.GWSceneState - (*WRInviteRobot)(nil), // 39: server.WRInviteRobot - (*WRInviteCreateRoom)(nil), // 40: server.WRInviteCreateRoom - (*WGAgentKickOutPlayer)(nil), // 41: server.WGAgentKickOutPlayer - (*WDDataAnalysis)(nil), // 42: server.WDDataAnalysis - (*PlayerCard)(nil), // 43: server.PlayerCard - (*GNPlayerCards)(nil), // 44: server.GNPlayerCards - (*RobotData)(nil), // 45: server.RobotData - (*GNPlayerParam)(nil), // 46: server.GNPlayerParam - (*GWRebuildScene)(nil), // 47: server.GWRebuildScene - (*WGRebindPlayerSnId)(nil), // 48: server.WGRebindPlayerSnId - (*GWPlayerFlag)(nil), // 49: server.GWPlayerFlag - (*WGHundredOp)(nil), // 50: server.WGHundredOp - (*GWNewNotice)(nil), // 51: server.GWNewNotice - (*PlayerStatics)(nil), // 52: server.PlayerStatics - (*GWPlayerStatics)(nil), // 53: server.GWPlayerStatics - (*WGResetCoinPool)(nil), // 54: server.WGResetCoinPool - (*WGSetPlayerBlackLevel)(nil), // 55: server.WGSetPlayerBlackLevel - (*GWAutoRelieveWBLevel)(nil), // 56: server.GWAutoRelieveWBLevel - (*GWScenePlayerLog)(nil), // 57: server.GWScenePlayerLog - (*GWPlayerForceLeave)(nil), // 58: server.GWPlayerForceLeave - (*PlayerData)(nil), // 59: server.PlayerData - (*GWPlayerData)(nil), // 60: server.GWPlayerData - (*PlayerWinScore)(nil), // 61: server.PlayerWinScore - (*GWPlayerWinScore)(nil), // 62: server.GWPlayerWinScore - (*WGPayerOnGameCount)(nil), // 63: server.WGPayerOnGameCount - (*GRGameFreeData)(nil), // 64: server.GRGameFreeData - (*WGSyncPlayerSafeBoxCoin)(nil), // 65: server.WGSyncPlayerSafeBoxCoin - (*WGClubMessage)(nil), // 66: server.WGClubMessage - (*DWThirdRebateMessage)(nil), // 67: server.DWThirdRebateMessage - (*DWThirdRoundMessage)(nil), // 68: server.DWThirdRoundMessage - (*WDACKThirdRebateMessage)(nil), // 69: server.WDACKThirdRebateMessage - (*GWGameStateLog)(nil), // 70: server.GWGameStateLog - (*GWGameState)(nil), // 71: server.GWGameState - (*GWGameJackList)(nil), // 72: server.GWGameJackList - (*GWGameJackCoin)(nil), // 73: server.GWGameJackCoin - (*WGNiceIdRebind)(nil), // 74: server.WGNiceIdRebind - (*PLAYERWINCOININFO)(nil), // 75: server.PLAYERWINCOININFO - (*GWPLAYERWINCOIN)(nil), // 76: server.GWPLAYERWINCOIN - (*GWPlayerAutoMarkTag)(nil), // 77: server.GWPlayerAutoMarkTag - (*WGInviteRobEnterCoinSceneQueue)(nil), // 78: server.WGInviteRobEnterCoinSceneQueue - (*WGGameForceStart)(nil), // 79: server.WGGameForceStart - (*ProfitControlGameCfg)(nil), // 80: server.ProfitControlGameCfg - (*ProfitControlPlatformCfg)(nil), // 81: server.ProfitControlPlatformCfg - (*WGProfitControlCorrect)(nil), // 82: server.WGProfitControlCorrect - (*GWChangeSceneEvent)(nil), // 83: server.GWChangeSceneEvent - (*PlayerIParam)(nil), // 84: server.PlayerIParam - (*PlayerSParam)(nil), // 85: server.PlayerSParam - (*PlayerCParam)(nil), // 86: server.PlayerCParam - (*PlayerMatchCoin)(nil), // 87: server.PlayerMatchCoin - (*GWPlayerMatchBilled)(nil), // 88: server.GWPlayerMatchBilled - (*GWPlayerMatchGrade)(nil), // 89: server.GWPlayerMatchGrade - (*WGPlayerQuitMatch)(nil), // 90: server.WGPlayerQuitMatch - (*WGSceneMatchBaseChange)(nil), // 91: server.WGSceneMatchBaseChange - (*SSRedirectToPlayer)(nil), // 92: server.SSRedirectToPlayer - (*WGInviteMatchRob)(nil), // 93: server.WGInviteMatchRob - (*GameInfo)(nil), // 94: server.GameInfo - (*WGGameJackpot)(nil), // 95: server.WGGameJackpot - (*BigWinHistoryInfo)(nil), // 96: server.BigWinHistoryInfo - (*WGPlayerEnterMiniGame)(nil), // 97: server.WGPlayerEnterMiniGame - (*WGPlayerLeaveMiniGame)(nil), // 98: server.WGPlayerLeaveMiniGame - (*WGPlayerLeave)(nil), // 99: server.WGPlayerLeave - (*GWPlayerLeaveMiniGame)(nil), // 100: server.GWPlayerLeaveMiniGame - (*GWDestroyMiniScene)(nil), // 101: server.GWDestroyMiniScene - (*GRDestroyScene)(nil), // 102: server.GRDestroyScene - (*RWAccountInvalid)(nil), // 103: server.RWAccountInvalid - (*WGDTRoomInfo)(nil), // 104: server.WGDTRoomInfo - (*PlayerDTCoin)(nil), // 105: server.PlayerDTCoin - (*EResult)(nil), // 106: server.EResult - (*GWDTRoomInfo)(nil), // 107: server.GWDTRoomInfo - (*WGRoomResults)(nil), // 108: server.WGRoomResults - (*GWRoomResults)(nil), // 109: server.GWRoomResults - (*GWAddSingleAdjust)(nil), // 110: server.GWAddSingleAdjust - (*WGSingleAdjust)(nil), // 111: server.WGSingleAdjust - (*WbCtrlCfg)(nil), // 112: server.WbCtrlCfg - (*WGBuyRecTimeItem)(nil), // 113: server.WGBuyRecTimeItem - (*WGUpdateSkin)(nil), // 114: server.WGUpdateSkin - nil, // 115: server.WGPlayerEnter.ItemsEntry - nil, // 116: server.WGPlayerEnter.RankScoreEntry - nil, // 117: server.GWPlayerLeave.ItemsEntry - nil, // 118: server.GWPlayerLeave.MatchRobotGradesEntry - nil, // 119: server.GWPlayerLeave.RankScoreEntry - (*DB_GameFree)(nil), // 120: server.DB_GameFree + (*Item)(nil), // 10: server.Item + (*CustomParam)(nil), // 11: server.CustomParam + (*MatchParam)(nil), // 12: server.MatchParam + (*WGCreateScene)(nil), // 13: server.WGCreateScene + (*WGDestroyScene)(nil), // 14: server.WGDestroyScene + (*GWDestroyScene)(nil), // 15: server.GWDestroyScene + (*RebateTask)(nil), // 16: server.RebateTask + (*WGPlayerEnter)(nil), // 17: server.WGPlayerEnter + (*WGAudienceSit)(nil), // 18: server.WGAudienceSit + (*WGPlayerReturn)(nil), // 19: server.WGPlayerReturn + (*GWPlayerLeave)(nil), // 20: server.GWPlayerLeave + (*WGPlayerDropLine)(nil), // 21: server.WGPlayerDropLine + (*WGPlayerRehold)(nil), // 22: server.WGPlayerRehold + (*GWBilledRoomCard)(nil), // 23: server.GWBilledRoomCard + (*GGPlayerSessionBind)(nil), // 24: server.GGPlayerSessionBind + (*GGPlayerSessionUnBind)(nil), // 25: server.GGPlayerSessionUnBind + (*WGDayTimeChange)(nil), // 26: server.WGDayTimeChange + (*ReplayPlayerData)(nil), // 27: server.ReplayPlayerData + (*ReplayRecord)(nil), // 28: server.ReplayRecord + (*ReplaySequene)(nil), // 29: server.ReplaySequene + (*GRReplaySequene)(nil), // 30: server.GRReplaySequene + (*WRLoginRec)(nil), // 31: server.WRLoginRec + (*WRGameDetail)(nil), // 32: server.WRGameDetail + (*WRPlayerData)(nil), // 33: server.WRPlayerData + (*WTPlayerPay)(nil), // 34: server.WTPlayerPay + (*PlayerGameRec)(nil), // 35: server.PlayerGameRec + (*GWGameRec)(nil), // 36: server.GWGameRec + (*GWSceneStart)(nil), // 37: server.GWSceneStart + (*PlayerCtx)(nil), // 38: server.PlayerCtx + (*FishRecord)(nil), // 39: server.FishRecord + (*GWFishRecord)(nil), // 40: server.GWFishRecord + (*GWSceneState)(nil), // 41: server.GWSceneState + (*WRInviteRobot)(nil), // 42: server.WRInviteRobot + (*WRInviteCreateRoom)(nil), // 43: server.WRInviteCreateRoom + (*WGAgentKickOutPlayer)(nil), // 44: server.WGAgentKickOutPlayer + (*WDDataAnalysis)(nil), // 45: server.WDDataAnalysis + (*PlayerCard)(nil), // 46: server.PlayerCard + (*GNPlayerCards)(nil), // 47: server.GNPlayerCards + (*RobotData)(nil), // 48: server.RobotData + (*GNPlayerParam)(nil), // 49: server.GNPlayerParam + (*GWRebuildScene)(nil), // 50: server.GWRebuildScene + (*WGRebindPlayerSnId)(nil), // 51: server.WGRebindPlayerSnId + (*GWPlayerFlag)(nil), // 52: server.GWPlayerFlag + (*WGHundredOp)(nil), // 53: server.WGHundredOp + (*GWNewNotice)(nil), // 54: server.GWNewNotice + (*PlayerStatics)(nil), // 55: server.PlayerStatics + (*GWPlayerStatics)(nil), // 56: server.GWPlayerStatics + (*WGResetCoinPool)(nil), // 57: server.WGResetCoinPool + (*WGSetPlayerBlackLevel)(nil), // 58: server.WGSetPlayerBlackLevel + (*GWAutoRelieveWBLevel)(nil), // 59: server.GWAutoRelieveWBLevel + (*GWScenePlayerLog)(nil), // 60: server.GWScenePlayerLog + (*GWPlayerForceLeave)(nil), // 61: server.GWPlayerForceLeave + (*PlayerData)(nil), // 62: server.PlayerData + (*GWPlayerData)(nil), // 63: server.GWPlayerData + (*PlayerWinScore)(nil), // 64: server.PlayerWinScore + (*GWPlayerWinScore)(nil), // 65: server.GWPlayerWinScore + (*WGPayerOnGameCount)(nil), // 66: server.WGPayerOnGameCount + (*GRGameFreeData)(nil), // 67: server.GRGameFreeData + (*WGSyncPlayerSafeBoxCoin)(nil), // 68: server.WGSyncPlayerSafeBoxCoin + (*WGClubMessage)(nil), // 69: server.WGClubMessage + (*DWThirdRebateMessage)(nil), // 70: server.DWThirdRebateMessage + (*DWThirdRoundMessage)(nil), // 71: server.DWThirdRoundMessage + (*WDACKThirdRebateMessage)(nil), // 72: server.WDACKThirdRebateMessage + (*GWGameStateLog)(nil), // 73: server.GWGameStateLog + (*GWGameState)(nil), // 74: server.GWGameState + (*GWGameJackList)(nil), // 75: server.GWGameJackList + (*GWGameJackCoin)(nil), // 76: server.GWGameJackCoin + (*WGNiceIdRebind)(nil), // 77: server.WGNiceIdRebind + (*PLAYERWINCOININFO)(nil), // 78: server.PLAYERWINCOININFO + (*GWPLAYERWINCOIN)(nil), // 79: server.GWPLAYERWINCOIN + (*GWPlayerAutoMarkTag)(nil), // 80: server.GWPlayerAutoMarkTag + (*WGInviteRobEnterCoinSceneQueue)(nil), // 81: server.WGInviteRobEnterCoinSceneQueue + (*WGGameForceStart)(nil), // 82: server.WGGameForceStart + (*ProfitControlGameCfg)(nil), // 83: server.ProfitControlGameCfg + (*ProfitControlPlatformCfg)(nil), // 84: server.ProfitControlPlatformCfg + (*WGProfitControlCorrect)(nil), // 85: server.WGProfitControlCorrect + (*GWChangeSceneEvent)(nil), // 86: server.GWChangeSceneEvent + (*PlayerIParam)(nil), // 87: server.PlayerIParam + (*PlayerSParam)(nil), // 88: server.PlayerSParam + (*PlayerCParam)(nil), // 89: server.PlayerCParam + (*PlayerMatchCoin)(nil), // 90: server.PlayerMatchCoin + (*GWPlayerMatchBilled)(nil), // 91: server.GWPlayerMatchBilled + (*GWPlayerMatchGrade)(nil), // 92: server.GWPlayerMatchGrade + (*WGPlayerQuitMatch)(nil), // 93: server.WGPlayerQuitMatch + (*WGSceneMatchBaseChange)(nil), // 94: server.WGSceneMatchBaseChange + (*SSRedirectToPlayer)(nil), // 95: server.SSRedirectToPlayer + (*WGInviteMatchRob)(nil), // 96: server.WGInviteMatchRob + (*GameInfo)(nil), // 97: server.GameInfo + (*WGGameJackpot)(nil), // 98: server.WGGameJackpot + (*BigWinHistoryInfo)(nil), // 99: server.BigWinHistoryInfo + (*WGPlayerEnterMiniGame)(nil), // 100: server.WGPlayerEnterMiniGame + (*WGPlayerLeaveMiniGame)(nil), // 101: server.WGPlayerLeaveMiniGame + (*WGPlayerLeave)(nil), // 102: server.WGPlayerLeave + (*GWPlayerLeaveMiniGame)(nil), // 103: server.GWPlayerLeaveMiniGame + (*GWDestroyMiniScene)(nil), // 104: server.GWDestroyMiniScene + (*GRDestroyScene)(nil), // 105: server.GRDestroyScene + (*RWAccountInvalid)(nil), // 106: server.RWAccountInvalid + (*WGDTRoomInfo)(nil), // 107: server.WGDTRoomInfo + (*PlayerDTCoin)(nil), // 108: server.PlayerDTCoin + (*EResult)(nil), // 109: server.EResult + (*GWDTRoomInfo)(nil), // 110: server.GWDTRoomInfo + (*WGRoomResults)(nil), // 111: server.WGRoomResults + (*GWRoomResults)(nil), // 112: server.GWRoomResults + (*GWAddSingleAdjust)(nil), // 113: server.GWAddSingleAdjust + (*WGSingleAdjust)(nil), // 114: server.WGSingleAdjust + (*WbCtrlCfg)(nil), // 115: server.WbCtrlCfg + (*WGBuyRecTimeItem)(nil), // 116: server.WGBuyRecTimeItem + (*WGUpdateSkin)(nil), // 117: server.WGUpdateSkin + (*PlayerChangeItems)(nil), // 118: server.PlayerChangeItems + nil, // 119: server.WGPlayerEnter.ItemsEntry + nil, // 120: server.WGPlayerEnter.RankScoreEntry + nil, // 121: server.GWPlayerLeave.ItemsEntry + nil, // 122: server.GWPlayerLeave.MatchRobotGradesEntry + nil, // 123: server.GWPlayerLeave.RankScoreEntry + (*DB_GameFree)(nil), // 124: server.DB_GameFree } var file_server_proto_depIdxs = []int32{ 1, // 0: server.SGBindGroupTag.Code:type_name -> server.SGBindGroupTag.OpCode 4, // 1: server.ServerCtrl.Params:type_name -> server.OpResultParam - 120, // 2: server.WGCreateScene.DBGameFree:type_name -> server.DB_GameFree - 84, // 3: server.WGPlayerEnter.IParams:type_name -> server.PlayerIParam - 85, // 4: server.WGPlayerEnter.SParams:type_name -> server.PlayerSParam - 86, // 5: server.WGPlayerEnter.CParams:type_name -> server.PlayerCParam - 115, // 6: server.WGPlayerEnter.Items:type_name -> server.WGPlayerEnter.ItemsEntry - 116, // 7: server.WGPlayerEnter.RankScore:type_name -> server.WGPlayerEnter.RankScoreEntry - 117, // 8: server.GWPlayerLeave.Items:type_name -> server.GWPlayerLeave.ItemsEntry - 118, // 9: server.GWPlayerLeave.MatchRobotGrades:type_name -> server.GWPlayerLeave.MatchRobotGradesEntry - 119, // 10: server.GWPlayerLeave.RankScore:type_name -> server.GWPlayerLeave.RankScoreEntry - 25, // 11: server.ReplaySequene.Sequenes:type_name -> server.ReplayRecord - 26, // 12: server.GRReplaySequene.Rec:type_name -> server.ReplaySequene - 24, // 13: server.GRReplaySequene.Datas:type_name -> server.ReplayPlayerData - 32, // 14: server.GWGameRec.Datas:type_name -> server.PlayerGameRec - 36, // 15: server.GWFishRecord.FishRecords:type_name -> server.FishRecord - 43, // 16: server.GNPlayerCards.PlayerCards:type_name -> server.PlayerCard - 45, // 17: server.GNPlayerParam.Playerdata:type_name -> server.RobotData - 52, // 18: server.GWPlayerStatics.Datas:type_name -> server.PlayerStatics - 59, // 19: server.GWPlayerData.Datas:type_name -> server.PlayerData - 61, // 20: server.GWPlayerWinScore.PlayerWinScores:type_name -> server.PlayerWinScore - 120, // 21: server.GRGameFreeData.DBGameFree:type_name -> server.DB_GameFree - 120, // 22: server.WGClubMessage.DBGameFree:type_name -> server.DB_GameFree - 75, // 23: server.GWPLAYERWINCOIN.player:type_name -> server.PLAYERWINCOININFO - 80, // 24: server.ProfitControlPlatformCfg.GameCfg:type_name -> server.ProfitControlGameCfg - 81, // 25: server.WGProfitControlCorrect.Cfg:type_name -> server.ProfitControlPlatformCfg - 87, // 26: server.GWPlayerMatchBilled.Players:type_name -> server.PlayerMatchCoin - 87, // 27: server.GWPlayerMatchGrade.Players:type_name -> server.PlayerMatchCoin - 94, // 28: server.WGGameJackpot.Info:type_name -> server.GameInfo - 105, // 29: server.GWDTRoomInfo.Players:type_name -> server.PlayerDTCoin - 106, // 30: server.GWDTRoomInfo.Results:type_name -> server.EResult - 31, // [31:31] is the sub-list for method output_type - 31, // [31:31] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 124, // 2: server.WGCreateScene.DBGameFree:type_name -> server.DB_GameFree + 10, // 3: server.WGCreateScene.Items:type_name -> server.Item + 10, // 4: server.WGCreateScene.CostItems:type_name -> server.Item + 11, // 5: server.WGCreateScene.Custom:type_name -> server.CustomParam + 12, // 6: server.WGCreateScene.Match:type_name -> server.MatchParam + 87, // 7: server.WGPlayerEnter.IParams:type_name -> server.PlayerIParam + 88, // 8: server.WGPlayerEnter.SParams:type_name -> server.PlayerSParam + 89, // 9: server.WGPlayerEnter.CParams:type_name -> server.PlayerCParam + 119, // 10: server.WGPlayerEnter.Items:type_name -> server.WGPlayerEnter.ItemsEntry + 120, // 11: server.WGPlayerEnter.RankScore:type_name -> server.WGPlayerEnter.RankScoreEntry + 121, // 12: server.GWPlayerLeave.Items:type_name -> server.GWPlayerLeave.ItemsEntry + 122, // 13: server.GWPlayerLeave.MatchRobotGrades:type_name -> server.GWPlayerLeave.MatchRobotGradesEntry + 123, // 14: server.GWPlayerLeave.RankScore:type_name -> server.GWPlayerLeave.RankScoreEntry + 28, // 15: server.ReplaySequene.Sequenes:type_name -> server.ReplayRecord + 29, // 16: server.GRReplaySequene.Rec:type_name -> server.ReplaySequene + 27, // 17: server.GRReplaySequene.Datas:type_name -> server.ReplayPlayerData + 35, // 18: server.GWGameRec.Datas:type_name -> server.PlayerGameRec + 39, // 19: server.GWFishRecord.FishRecords:type_name -> server.FishRecord + 46, // 20: server.GNPlayerCards.PlayerCards:type_name -> server.PlayerCard + 48, // 21: server.GNPlayerParam.Playerdata:type_name -> server.RobotData + 55, // 22: server.GWPlayerStatics.Datas:type_name -> server.PlayerStatics + 62, // 23: server.GWPlayerData.Datas:type_name -> server.PlayerData + 64, // 24: server.GWPlayerWinScore.PlayerWinScores:type_name -> server.PlayerWinScore + 124, // 25: server.GRGameFreeData.DBGameFree:type_name -> server.DB_GameFree + 124, // 26: server.WGClubMessage.DBGameFree:type_name -> server.DB_GameFree + 78, // 27: server.GWPLAYERWINCOIN.player:type_name -> server.PLAYERWINCOININFO + 83, // 28: server.ProfitControlPlatformCfg.GameCfg:type_name -> server.ProfitControlGameCfg + 84, // 29: server.WGProfitControlCorrect.Cfg:type_name -> server.ProfitControlPlatformCfg + 90, // 30: server.GWPlayerMatchBilled.Players:type_name -> server.PlayerMatchCoin + 90, // 31: server.GWPlayerMatchGrade.Players:type_name -> server.PlayerMatchCoin + 97, // 32: server.WGGameJackpot.Info:type_name -> server.GameInfo + 108, // 33: server.GWDTRoomInfo.Players:type_name -> server.PlayerDTCoin + 109, // 34: server.GWDTRoomInfo.Results:type_name -> server.EResult + 10, // 35: server.PlayerChangeItems.Items:type_name -> server.Item + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_server_proto_init() } @@ -10156,7 +10433,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGCreateScene); i { + switch v := v.(*Item); i { case 0: return &v.state case 1: @@ -10168,7 +10445,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGDestroyScene); i { + switch v := v.(*CustomParam); i { case 0: return &v.state case 1: @@ -10180,7 +10457,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWDestroyScene); i { + switch v := v.(*MatchParam); i { case 0: return &v.state case 1: @@ -10192,7 +10469,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RebateTask); i { + switch v := v.(*WGCreateScene); i { case 0: return &v.state case 1: @@ -10204,7 +10481,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerEnter); i { + switch v := v.(*WGDestroyScene); i { case 0: return &v.state case 1: @@ -10216,7 +10493,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGAudienceSit); i { + switch v := v.(*GWDestroyScene); i { case 0: return &v.state case 1: @@ -10228,7 +10505,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerReturn); i { + switch v := v.(*RebateTask); i { case 0: return &v.state case 1: @@ -10240,7 +10517,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerLeave); i { + switch v := v.(*WGPlayerEnter); i { case 0: return &v.state case 1: @@ -10252,7 +10529,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerDropLine); i { + switch v := v.(*WGAudienceSit); i { case 0: return &v.state case 1: @@ -10264,7 +10541,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerRehold); i { + switch v := v.(*WGPlayerReturn); i { case 0: return &v.state case 1: @@ -10276,7 +10553,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWBilledRoomCard); i { + switch v := v.(*GWPlayerLeave); i { case 0: return &v.state case 1: @@ -10288,7 +10565,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GGPlayerSessionBind); i { + switch v := v.(*WGPlayerDropLine); i { case 0: return &v.state case 1: @@ -10300,7 +10577,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GGPlayerSessionUnBind); i { + switch v := v.(*WGPlayerRehold); i { case 0: return &v.state case 1: @@ -10312,7 +10589,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGDayTimeChange); i { + switch v := v.(*GWBilledRoomCard); i { case 0: return &v.state case 1: @@ -10324,7 +10601,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplayPlayerData); i { + switch v := v.(*GGPlayerSessionBind); i { case 0: return &v.state case 1: @@ -10336,7 +10613,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplayRecord); i { + switch v := v.(*GGPlayerSessionUnBind); i { case 0: return &v.state case 1: @@ -10348,7 +10625,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReplaySequene); i { + switch v := v.(*WGDayTimeChange); i { case 0: return &v.state case 1: @@ -10360,7 +10637,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRReplaySequene); i { + switch v := v.(*ReplayPlayerData); i { case 0: return &v.state case 1: @@ -10372,7 +10649,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRLoginRec); i { + switch v := v.(*ReplayRecord); i { case 0: return &v.state case 1: @@ -10384,7 +10661,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRGameDetail); i { + switch v := v.(*ReplaySequene); i { case 0: return &v.state case 1: @@ -10396,7 +10673,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRPlayerData); i { + switch v := v.(*GRReplaySequene); i { case 0: return &v.state case 1: @@ -10408,7 +10685,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WTPlayerPay); i { + switch v := v.(*WRLoginRec); i { case 0: return &v.state case 1: @@ -10420,7 +10697,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerGameRec); i { + switch v := v.(*WRGameDetail); i { case 0: return &v.state case 1: @@ -10432,7 +10709,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameRec); i { + switch v := v.(*WRPlayerData); i { case 0: return &v.state case 1: @@ -10444,7 +10721,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWSceneStart); i { + switch v := v.(*WTPlayerPay); i { case 0: return &v.state case 1: @@ -10456,7 +10733,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerCtx); i { + switch v := v.(*PlayerGameRec); i { case 0: return &v.state case 1: @@ -10468,7 +10745,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FishRecord); i { + switch v := v.(*GWGameRec); i { case 0: return &v.state case 1: @@ -10480,7 +10757,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWFishRecord); i { + switch v := v.(*GWSceneStart); i { case 0: return &v.state case 1: @@ -10492,7 +10769,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWSceneState); i { + switch v := v.(*PlayerCtx); i { case 0: return &v.state case 1: @@ -10504,7 +10781,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRInviteRobot); i { + switch v := v.(*FishRecord); i { case 0: return &v.state case 1: @@ -10516,7 +10793,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WRInviteCreateRoom); i { + switch v := v.(*GWFishRecord); i { case 0: return &v.state case 1: @@ -10528,7 +10805,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGAgentKickOutPlayer); i { + switch v := v.(*GWSceneState); i { case 0: return &v.state case 1: @@ -10540,7 +10817,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WDDataAnalysis); i { + switch v := v.(*WRInviteRobot); i { case 0: return &v.state case 1: @@ -10552,7 +10829,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerCard); i { + switch v := v.(*WRInviteCreateRoom); i { case 0: return &v.state case 1: @@ -10564,7 +10841,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GNPlayerCards); i { + switch v := v.(*WGAgentKickOutPlayer); i { case 0: return &v.state case 1: @@ -10576,7 +10853,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RobotData); i { + switch v := v.(*WDDataAnalysis); i { case 0: return &v.state case 1: @@ -10588,7 +10865,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GNPlayerParam); i { + switch v := v.(*PlayerCard); i { case 0: return &v.state case 1: @@ -10600,7 +10877,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWRebuildScene); i { + switch v := v.(*GNPlayerCards); i { case 0: return &v.state case 1: @@ -10612,7 +10889,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGRebindPlayerSnId); i { + switch v := v.(*RobotData); i { case 0: return &v.state case 1: @@ -10624,7 +10901,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerFlag); i { + switch v := v.(*GNPlayerParam); i { case 0: return &v.state case 1: @@ -10636,7 +10913,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGHundredOp); i { + switch v := v.(*GWRebuildScene); i { case 0: return &v.state case 1: @@ -10648,7 +10925,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWNewNotice); i { + switch v := v.(*WGRebindPlayerSnId); i { case 0: return &v.state case 1: @@ -10660,7 +10937,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerStatics); i { + switch v := v.(*GWPlayerFlag); i { case 0: return &v.state case 1: @@ -10672,7 +10949,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerStatics); i { + switch v := v.(*WGHundredOp); i { case 0: return &v.state case 1: @@ -10684,7 +10961,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGResetCoinPool); i { + switch v := v.(*GWNewNotice); i { case 0: return &v.state case 1: @@ -10696,7 +10973,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSetPlayerBlackLevel); i { + switch v := v.(*PlayerStatics); i { case 0: return &v.state case 1: @@ -10708,7 +10985,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWAutoRelieveWBLevel); i { + switch v := v.(*GWPlayerStatics); i { case 0: return &v.state case 1: @@ -10720,7 +10997,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWScenePlayerLog); i { + switch v := v.(*WGResetCoinPool); i { case 0: return &v.state case 1: @@ -10732,7 +11009,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerForceLeave); i { + switch v := v.(*WGSetPlayerBlackLevel); i { case 0: return &v.state case 1: @@ -10744,7 +11021,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerData); i { + switch v := v.(*GWAutoRelieveWBLevel); i { case 0: return &v.state case 1: @@ -10756,7 +11033,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerData); i { + switch v := v.(*GWScenePlayerLog); i { case 0: return &v.state case 1: @@ -10768,7 +11045,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerWinScore); i { + switch v := v.(*GWPlayerForceLeave); i { case 0: return &v.state case 1: @@ -10780,7 +11057,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerWinScore); i { + switch v := v.(*PlayerData); i { case 0: return &v.state case 1: @@ -10792,7 +11069,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPayerOnGameCount); i { + switch v := v.(*GWPlayerData); i { case 0: return &v.state case 1: @@ -10804,7 +11081,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRGameFreeData); i { + switch v := v.(*PlayerWinScore); i { case 0: return &v.state case 1: @@ -10816,7 +11093,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSyncPlayerSafeBoxCoin); i { + switch v := v.(*GWPlayerWinScore); i { case 0: return &v.state case 1: @@ -10828,7 +11105,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGClubMessage); i { + switch v := v.(*WGPayerOnGameCount); i { case 0: return &v.state case 1: @@ -10840,7 +11117,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DWThirdRebateMessage); i { + switch v := v.(*GRGameFreeData); i { case 0: return &v.state case 1: @@ -10852,7 +11129,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DWThirdRoundMessage); i { + switch v := v.(*WGSyncPlayerSafeBoxCoin); i { case 0: return &v.state case 1: @@ -10864,7 +11141,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WDACKThirdRebateMessage); i { + switch v := v.(*WGClubMessage); i { case 0: return &v.state case 1: @@ -10876,7 +11153,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameStateLog); i { + switch v := v.(*DWThirdRebateMessage); i { case 0: return &v.state case 1: @@ -10888,7 +11165,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameState); i { + switch v := v.(*DWThirdRoundMessage); i { case 0: return &v.state case 1: @@ -10900,7 +11177,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameJackList); i { + switch v := v.(*WDACKThirdRebateMessage); i { case 0: return &v.state case 1: @@ -10912,7 +11189,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWGameJackCoin); i { + switch v := v.(*GWGameStateLog); i { case 0: return &v.state case 1: @@ -10924,7 +11201,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGNiceIdRebind); i { + switch v := v.(*GWGameState); i { case 0: return &v.state case 1: @@ -10936,7 +11213,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PLAYERWINCOININFO); i { + switch v := v.(*GWGameJackList); i { case 0: return &v.state case 1: @@ -10948,7 +11225,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPLAYERWINCOIN); i { + switch v := v.(*GWGameJackCoin); i { case 0: return &v.state case 1: @@ -10960,7 +11237,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerAutoMarkTag); i { + switch v := v.(*WGNiceIdRebind); i { case 0: return &v.state case 1: @@ -10972,7 +11249,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGInviteRobEnterCoinSceneQueue); i { + switch v := v.(*PLAYERWINCOININFO); i { case 0: return &v.state case 1: @@ -10984,7 +11261,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGGameForceStart); i { + switch v := v.(*GWPLAYERWINCOIN); i { case 0: return &v.state case 1: @@ -10996,7 +11273,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProfitControlGameCfg); i { + switch v := v.(*GWPlayerAutoMarkTag); i { case 0: return &v.state case 1: @@ -11008,7 +11285,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProfitControlPlatformCfg); i { + switch v := v.(*WGInviteRobEnterCoinSceneQueue); i { case 0: return &v.state case 1: @@ -11020,7 +11297,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGProfitControlCorrect); i { + switch v := v.(*WGGameForceStart); i { case 0: return &v.state case 1: @@ -11032,7 +11309,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWChangeSceneEvent); i { + switch v := v.(*ProfitControlGameCfg); i { case 0: return &v.state case 1: @@ -11044,7 +11321,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerIParam); i { + switch v := v.(*ProfitControlPlatformCfg); i { case 0: return &v.state case 1: @@ -11056,7 +11333,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerSParam); i { + switch v := v.(*WGProfitControlCorrect); i { case 0: return &v.state case 1: @@ -11068,7 +11345,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerCParam); i { + switch v := v.(*GWChangeSceneEvent); i { case 0: return &v.state case 1: @@ -11080,7 +11357,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerMatchCoin); i { + switch v := v.(*PlayerIParam); i { case 0: return &v.state case 1: @@ -11092,7 +11369,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerMatchBilled); i { + switch v := v.(*PlayerSParam); i { case 0: return &v.state case 1: @@ -11104,7 +11381,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerMatchGrade); i { + switch v := v.(*PlayerCParam); i { case 0: return &v.state case 1: @@ -11116,7 +11393,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerQuitMatch); i { + switch v := v.(*PlayerMatchCoin); i { case 0: return &v.state case 1: @@ -11128,7 +11405,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSceneMatchBaseChange); i { + switch v := v.(*GWPlayerMatchBilled); i { case 0: return &v.state case 1: @@ -11140,7 +11417,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SSRedirectToPlayer); i { + switch v := v.(*GWPlayerMatchGrade); i { case 0: return &v.state case 1: @@ -11152,7 +11429,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGInviteMatchRob); i { + switch v := v.(*WGPlayerQuitMatch); i { case 0: return &v.state case 1: @@ -11164,7 +11441,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GameInfo); i { + switch v := v.(*WGSceneMatchBaseChange); i { case 0: return &v.state case 1: @@ -11176,7 +11453,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGGameJackpot); i { + switch v := v.(*SSRedirectToPlayer); i { case 0: return &v.state case 1: @@ -11188,7 +11465,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigWinHistoryInfo); i { + switch v := v.(*WGInviteMatchRob); i { case 0: return &v.state case 1: @@ -11200,7 +11477,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerEnterMiniGame); i { + switch v := v.(*GameInfo); i { case 0: return &v.state case 1: @@ -11212,7 +11489,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerLeaveMiniGame); i { + switch v := v.(*WGGameJackpot); i { case 0: return &v.state case 1: @@ -11224,7 +11501,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGPlayerLeave); i { + switch v := v.(*BigWinHistoryInfo); i { case 0: return &v.state case 1: @@ -11236,7 +11513,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWPlayerLeaveMiniGame); i { + switch v := v.(*WGPlayerEnterMiniGame); i { case 0: return &v.state case 1: @@ -11248,7 +11525,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWDestroyMiniScene); i { + switch v := v.(*WGPlayerLeaveMiniGame); i { case 0: return &v.state case 1: @@ -11260,7 +11537,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GRDestroyScene); i { + switch v := v.(*WGPlayerLeave); i { case 0: return &v.state case 1: @@ -11272,7 +11549,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RWAccountInvalid); i { + switch v := v.(*GWPlayerLeaveMiniGame); i { case 0: return &v.state case 1: @@ -11284,7 +11561,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGDTRoomInfo); i { + switch v := v.(*GWDestroyMiniScene); i { case 0: return &v.state case 1: @@ -11296,7 +11573,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PlayerDTCoin); i { + switch v := v.(*GRDestroyScene); i { case 0: return &v.state case 1: @@ -11308,7 +11585,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EResult); i { + switch v := v.(*RWAccountInvalid); i { case 0: return &v.state case 1: @@ -11320,7 +11597,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWDTRoomInfo); i { + switch v := v.(*WGDTRoomInfo); i { case 0: return &v.state case 1: @@ -11332,7 +11609,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGRoomResults); i { + switch v := v.(*PlayerDTCoin); i { case 0: return &v.state case 1: @@ -11344,7 +11621,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWRoomResults); i { + switch v := v.(*EResult); i { case 0: return &v.state case 1: @@ -11356,7 +11633,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GWAddSingleAdjust); i { + switch v := v.(*GWDTRoomInfo); i { case 0: return &v.state case 1: @@ -11368,7 +11645,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGSingleAdjust); i { + switch v := v.(*WGRoomResults); i { case 0: return &v.state case 1: @@ -11380,7 +11657,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WbCtrlCfg); i { + switch v := v.(*GWRoomResults); i { case 0: return &v.state case 1: @@ -11392,7 +11669,7 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WGBuyRecTimeItem); i { + switch v := v.(*GWAddSingleAdjust); i { case 0: return &v.state case 1: @@ -11404,6 +11681,42 @@ func file_server_proto_init() { } } file_server_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WGSingleAdjust); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WbCtrlCfg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WGBuyRecTimeItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_server_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WGUpdateSkin); i { case 0: return &v.state @@ -11415,6 +11728,18 @@ func file_server_proto_init() { return nil } } + file_server_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlayerChangeItems); 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{ @@ -11422,7 +11747,7 @@ func file_server_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_server_proto_rawDesc, NumEnums: 2, - NumMessages: 118, + NumMessages: 122, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/server.proto b/protocol/server/server.proto index f460326..d34b16f 100644 --- a/protocol/server/server.proto +++ b/protocol/server/server.proto @@ -108,6 +108,7 @@ enum SSPacketID { PACKET_GW_ADDSINGLEADJUST = 1551; PACKET_WG_BUYRECTIMEITEM = 1552; PACKET_WG_UpdateSkin = 1553; // 修改皮肤id + PACKET_PlayerChangeItems = 1554; // 修改玩家道具数量 } //PACKET_SG_BINDGROUPTAG @@ -161,31 +162,49 @@ message ServerNotice { string Text = 1; } +message Item { + int32 Id = 1; + int64 Num = 2; +} + +message CustomParam { + int32 RoomTypeId = 1; // 房间类型id + int32 RoomConfigId = 2; // 房间配置id + int32 CostType = 3; // 房卡场付费方式 1房主 2AA + string Password = 4; // 房间密码 + int32 Voice = 5; // 是否开启语音 1开启 2关闭 +} + +message MatchParam { + int64 MatchSortId = 1; // 比赛实例id + int32 MatchId = 2; // 比赛配置id + bool IsFinals = 3; // 是否决赛 + int32 CurrRound = 4; // 当前第几轮 + int32 CurrPlayerNum = 5; // 本轮玩家数 + int32 NextPlayerNum = 6; // 下轮最大玩家数 + int32 MatchType = 7; // 比赛类型 +} + //PACKET_WG_CREATESCENE message WGCreateScene { - int32 SceneId = 1; - int32 GameId = 2; - int32 GameMode = 3; - repeated int64 Params = 4; - int32 Creator = 5; - int32 Agentor = 6; - string ReplayCode = 7; - repeated int32 ParamsEx = 8; - int32 SceneMode = 9; - int32 HallId = 10; - string Platform = 11; - DB_GameFree DBGameFree = 12; - int32 GroupId = 13; - bool EnterAfterStart = 14; - int32 TotalOfGames = 15; - int32 Club = 16; //俱乐部Id - string ClubRoomId = 17; - int32 ClubRoomPos = 18; - int32 ClubRate = 19; - int32 BaseScore = 20; - int32 PlayerNum = 21; - bool RealCtrl = 22; - repeated int32 ChessRank = 23; + string Platform = 1; // 平台 + int32 SceneId = 2; // 房间id + int32 GameId = 3; // 游戏id + int32 GameMode = 4; // 废弃,游戏模式 + int32 SceneMode = 5; // 房间模式 + string ReplayCode = 6; // 回放码 + DB_GameFree DBGameFree = 7; // 场次配置 + int32 TotalOfGames = 8; // 总局数 + int32 PlayerNum = 9; // 最大玩家数 + bool EnterAfterStart = 10; // 是否开始后可加入 + int32 Creator = 11; // 创建者id + int32 BaseScore = 12; // 底分 + repeated Item Items = 13; // 获得道具 + repeated Item CostItems = 14; // 消耗道具 + CustomParam Custom = 15; // 房卡场参数 + MatchParam Match = 16; // 比赛场参数 + repeated int32 ChessRank = 26; // 象棋段位配置 + repeated int64 Params = 27; // 游戏参数,GameRule中定义,不要有其他用途,含义不明确 } //PACKET_WG_DESTROYSCENE @@ -439,8 +458,7 @@ message GWFishRecord { //PACKET_GW_SCENESTATE message GWSceneState { int32 RoomId = 1; - int32 CurrState = 2; - int32 Fishing = 3; + int32 RoomState = 2; } //PACKET_WR_INVITEROBOT @@ -999,4 +1017,10 @@ message WGBuyRecTimeItem{ message WGUpdateSkin{ int32 SnId = 1; int32 Id = 2; // 皮肤id +} + +// PACKET_PlayerChangeItems +message PlayerChangeItems{ + int32 SnId = 1; + repeated Item Items = 2; // 道具变化数量 } \ No newline at end of file diff --git a/protocol/shop/shop.pb.go b/protocol/shop/shop.pb.go index 5a7202e..3165a5f 100644 --- a/protocol/shop/shop.pb.go +++ b/protocol/shop/shop.pb.go @@ -1262,6 +1262,7 @@ type SCShopExchange struct { RetCode OpResultCode `protobuf:"varint,1,opt,name=RetCode,proto3,enum=shop.OpResultCode" json:"RetCode,omitempty"` CreateTs int64 `protobuf:"varint,2,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //订单创建日期 OrderId string `protobuf:"bytes,3,opt,name=OrderId,proto3" json:"OrderId,omitempty"` //订单号 + GoodsId int32 `protobuf:"varint,4,opt,name=GoodsId,proto3" json:"GoodsId,omitempty"` //商品Id } func (x *SCShopExchange) Reset() { @@ -1317,6 +1318,13 @@ func (x *SCShopExchange) GetOrderId() string { return "" } +func (x *SCShopExchange) GetGoodsId() int32 { + if x != nil { + return x.GoodsId + } + return 0 +} + //PACKET_CS_SHOP_EXCHANGELIST type CSShopExchangeList struct { state protoimpl.MessageState @@ -2593,198 +2601,200 @@ var file_shop_proto_rawDesc = []byte{ 0x12, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x74, 0x0a, 0x0e, 0x53, 0x43, - 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x1a, 0x0a, 0x08, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, - 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x9d, 0x04, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x70, 0x45, - 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 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, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, - 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, 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, - 0x2a, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x73, 0x68, 0x6f, 0x70, 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, 0x49, 0x50, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x56, 0x49, 0x50, 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, 0x2d, 0x0a, 0x07, 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x44, 0x61, 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, 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, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x53, + 0x43, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 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, 0x1a, 0x0a, 0x08, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x47, 0x6f, 0x6f, 0x64, 0x73, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x43, + 0x53, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x22, 0x9d, 0x04, 0x0a, 0x10, 0x53, 0x68, 0x6f, 0x70, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 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, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 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, 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, 0x2a, 0x0a, 0x06, 0x45, 0x78, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x68, 0x6f, + 0x70, 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, 0x49, 0x50, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x56, 0x49, 0x50, 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, 0x2d, 0x0a, 0x07, + 0x54, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x73, 0x68, 0x6f, 0x70, 0x2e, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x44, 0x61, + 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, + 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, } var ( diff --git a/protocol/shop/shop.proto b/protocol/shop/shop.proto index f77211a..f54c60b 100644 --- a/protocol/shop/shop.proto +++ b/protocol/shop/shop.proto @@ -160,6 +160,7 @@ message SCShopExchange{ OpResultCode RetCode = 1; int64 CreateTs = 2;//订单创建日期 string OrderId = 3;//订单号 + int32 GoodsId = 4;//商品Id } //PACKET_CS_SHOP_EXCHANGELIST diff --git a/protocol/tienlen/tienlen.pb.go b/protocol/tienlen/tienlen.pb.go index d75921d..26ebcfe 100644 --- a/protocol/tienlen/tienlen.pb.go +++ b/protocol/tienlen/tienlen.pb.go @@ -93,6 +93,7 @@ const ( TienLenPacketID_PACKET_SCTienLenThinkLongCnt TienLenPacketID = 5385 // 长考次数 TienLenPacketID_PACKET_SCTienLenFirstGiveItemItem TienLenPacketID = 5386 // 第一次赠送记牌器道具 TienLenPacketID_PACKET_SCTienLenPetSkillRes TienLenPacketID = 5387 //宠物技能 + TienLenPacketID_PACKET_SCTienLenCycleBilled TienLenPacketID = 5388 // 大结算 ) // Enum value maps for TienLenPacketID. @@ -117,6 +118,7 @@ var ( 5385: "PACKET_SCTienLenThinkLongCnt", 5386: "PACKET_SCTienLenFirstGiveItemItem", 5387: "PACKET_SCTienLenPetSkillRes", + 5388: "PACKET_SCTienLenCycleBilled", } TienLenPacketID_value = map[string]int32{ "PACKET_TienLenZERO": 0, @@ -138,6 +140,7 @@ var ( "PACKET_SCTienLenThinkLongCnt": 5385, "PACKET_SCTienLenFirstGiveItemItem": 5386, "PACKET_SCTienLenPetSkillRes": 5387, + "PACKET_SCTienLenCycleBilled": 5388, } ) @@ -651,6 +654,14 @@ type SCTienLenRoomInfo struct { OutCardRecord []int32 `protobuf:"varint,30,rep,packed,name=OutCardRecord,proto3" json:"OutCardRecord,omitempty"` //已打出去的牌 IsOutRecord bool `protobuf:"varint,31,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` //是否能用记牌器 ItemRecExpireTime int64 `protobuf:"varint,32,opt,name=ItemRecExpireTime,proto3" json:"ItemRecExpireTime,omitempty"` //记牌器到期时间 + TMInfoId int32 `protobuf:"varint,33,opt,name=TMInfoId,proto3" json:"TMInfoId,omitempty"` //比赛配置ID + // 房卡场配置 + RoomTypeId int32 `protobuf:"varint,34,opt,name=RoomTypeId,proto3" json:"RoomTypeId,omitempty"` //房间类型id + RoomConfigId int32 `protobuf:"varint,35,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id + NeedPassword int32 `protobuf:"varint,36,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` //是否需要密码 1需要 + CostType int32 `protobuf:"varint,37,opt,name=CostType,proto3" json:"CostType,omitempty"` //房卡支付方式 1AA 2房主 + Voice int32 `protobuf:"varint,38,opt,name=Voice,proto3" json:"Voice,omitempty"` //是否开启语音 1开启 + Password string `protobuf:"bytes,39,opt,name=Password,proto3" json:"Password,omitempty"` //房间密码 } func (x *SCTienLenRoomInfo) Reset() { @@ -888,6 +899,55 @@ func (x *SCTienLenRoomInfo) GetItemRecExpireTime() int64 { return 0 } +func (x *SCTienLenRoomInfo) GetTMInfoId() int32 { + if x != nil { + return x.TMInfoId + } + return 0 +} + +func (x *SCTienLenRoomInfo) GetRoomTypeId() int32 { + if x != nil { + return x.RoomTypeId + } + return 0 +} + +func (x *SCTienLenRoomInfo) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + +func (x *SCTienLenRoomInfo) GetNeedPassword() int32 { + if x != nil { + return x.NeedPassword + } + return 0 +} + +func (x *SCTienLenRoomInfo) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *SCTienLenRoomInfo) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + +func (x *SCTienLenRoomInfo) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + //房间状态更新 type SCTienLenRoomState struct { state protoimpl.MessageState @@ -1501,6 +1561,7 @@ type SCTienLenCard struct { Cards []int32 `protobuf:"varint,1,rep,packed,name=Cards,proto3" json:"Cards,omitempty"` //手牌 IsOutRecord bool `protobuf:"varint,2,opt,name=IsOutRecord,proto3" json:"IsOutRecord,omitempty"` // 是否有出牌记录 + SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` //玩家id } func (x *SCTienLenCard) Reset() { @@ -1549,6 +1610,13 @@ func (x *SCTienLenCard) GetIsOutRecord() bool { return false } +func (x *SCTienLenCard) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + //测试数据 type SCTienLenCardTest struct { state protoimpl.MessageState @@ -2283,6 +2351,188 @@ func (x *SCTienLenPetSkillRes) GetPetSkillRes() bool { return false } +type ItemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 道具ID + Num int64 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` // 道具数量 +} + +func (x *ItemInfo) Reset() { + *x = ItemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_tienlen_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ItemInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ItemInfo) ProtoMessage() {} + +func (x *ItemInfo) ProtoReflect() protoreflect.Message { + mi := &file_tienlen_proto_msgTypes[24] + 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 ItemInfo.ProtoReflect.Descriptor instead. +func (*ItemInfo) Descriptor() ([]byte, []int) { + return file_tienlen_proto_rawDescGZIP(), []int{24} +} + +func (x *ItemInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ItemInfo) GetNum() int64 { + if x != nil { + return x.Num + } + return 0 +} + +type TienLenCycleBilledInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家ID + RoundScore []int64 `protobuf:"varint,2,rep,packed,name=RoundScore,proto3" json:"RoundScore,omitempty"` // 每轮得分 + Score int64 `protobuf:"varint,3,opt,name=Score,proto3" json:"Score,omitempty"` // 基础分 + Award []*ItemInfo `protobuf:"bytes,4,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励道具 + TotalScore int64 `protobuf:"varint,5,opt,name=TotalScore,proto3" json:"TotalScore,omitempty"` // 总分 +} + +func (x *TienLenCycleBilledInfo) Reset() { + *x = TienLenCycleBilledInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_tienlen_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TienLenCycleBilledInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TienLenCycleBilledInfo) ProtoMessage() {} + +func (x *TienLenCycleBilledInfo) ProtoReflect() protoreflect.Message { + mi := &file_tienlen_proto_msgTypes[25] + 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 TienLenCycleBilledInfo.ProtoReflect.Descriptor instead. +func (*TienLenCycleBilledInfo) Descriptor() ([]byte, []int) { + return file_tienlen_proto_rawDescGZIP(), []int{25} +} + +func (x *TienLenCycleBilledInfo) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *TienLenCycleBilledInfo) GetRoundScore() []int64 { + if x != nil { + return x.RoundScore + } + return nil +} + +func (x *TienLenCycleBilledInfo) GetScore() int64 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *TienLenCycleBilledInfo) GetAward() []*ItemInfo { + if x != nil { + return x.Award + } + return nil +} + +func (x *TienLenCycleBilledInfo) GetTotalScore() int64 { + if x != nil { + return x.TotalScore + } + return 0 +} + +// PACKET_SCTienLenCycleBilled +type SCTienLenCycleBilled struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*TienLenCycleBilledInfo `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` +} + +func (x *SCTienLenCycleBilled) Reset() { + *x = SCTienLenCycleBilled{} + if protoimpl.UnsafeEnabled { + mi := &file_tienlen_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCTienLenCycleBilled) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCTienLenCycleBilled) ProtoMessage() {} + +func (x *SCTienLenCycleBilled) ProtoReflect() protoreflect.Message { + mi := &file_tienlen_proto_msgTypes[26] + 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 SCTienLenCycleBilled.ProtoReflect.Descriptor instead. +func (*SCTienLenCycleBilled) Descriptor() ([]byte, []int) { + return file_tienlen_proto_rawDescGZIP(), []int{26} +} + +func (x *SCTienLenCycleBilled) GetList() []*TienLenCycleBilledInfo { + if x != nil { + return x.List + } + return nil +} + var File_tienlen_proto protoreflect.FileDescriptor var file_tienlen_proto_rawDesc = []byte{ @@ -2357,7 +2607,7 @@ var file_tienlen_proto_rawDesc = []byte{ 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xab, 0x07, 0x0a, 0x11, 0x53, 0x43, 0x54, + 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xfd, 0x08, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, @@ -2416,240 +2666,275 @@ var file_tienlen_proto_rawDesc = []byte{ 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, - 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x45, 0x0a, 0x11, 0x43, 0x53, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, - 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x33, 0x0a, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, - 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x14, 0x53, 0x43, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, - 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 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, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x57, - 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, - 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, - 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, - 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, - 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x64, 0x64, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, - 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x41, 0x64, 0x64, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x22, 0x4d, 0x0a, 0x13, 0x53, - 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, - 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, + 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, + 0x49, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, + 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, + 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, + 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x64, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x24, 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, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, + 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, 0x54, 0x69, + 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x45, 0x0a, 0x11, + 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, + 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, + 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4f, 0x70, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, + 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x04, + 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69, 0x65, + 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a, 0x14, + 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, + 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 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, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, - 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x18, 0x53, - 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, - 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x12, - 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x6f, 0x73, - 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x57, - 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x57, 0x69, - 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x22, 0x47, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, - 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x4f, 0x75, - 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, - 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x11, 0x53, - 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, - 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, - 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, - 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, - 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, - 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, - 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, - 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, - 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, - 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, - 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, - 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, - 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, - 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, - 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, - 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, - 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, - 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, - 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, - 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, - 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, - 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, - 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, - 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, - 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, - 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, - 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, - 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, - 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, - 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x20, 0x0a, 0x0c, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x17, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x19, - 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x45, - 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, - 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, - 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, - 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x1b, 0x53, 0x43, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x68, 0x69, - 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, - 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x22, 0x68, 0x0a, - 0x20, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, - 0x6d, 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, 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, - 0x6c, 0x52, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x50, 0x65, 0x74, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x2a, 0x3e, 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, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0x80, 0x05, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, - 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, - 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, - 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, - 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, - 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, - 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, - 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, - 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, - 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, - 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, - 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, - 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, - 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, - 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, - 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, + 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, + 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, + 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x69, 0x65, 0x6e, + 0x6c, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x41, 0x64, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x22, 0x4d, 0x0a, + 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, + 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, + 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, + 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc4, 0x01, 0x0a, + 0x18, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, + 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, + 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, + 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x22, 0x5b, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, + 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, + 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x22, 0x88, 0x02, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, + 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, + 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, + 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, + 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x11, 0x53, + 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, + 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a, 0x19, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, + 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43, 0x54, + 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, + 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, + 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41, 0x75, + 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53, 0x43, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19, 0x0a, + 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72, 0x64, + 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x71, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61, 0x79, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, + 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, + 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, + 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, + 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10, 0x4e, + 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, + 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, + 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28, 0x0a, + 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, + 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48, 0x61, + 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24, 0x0a, + 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, + 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, + 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33, 0x12, + 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, + 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, + 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x54, + 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, + 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0c, + 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x20, + 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x15, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, + 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32, + 0x18, 0x16, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, + 0x74, 0x32, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, + 0x5f, 0x33, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, + 0x65, 0x66, 0x74, 0x33, 0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x73, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x49, 0x73, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, + 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69, 0x64, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, + 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, + 0x22, 0x41, 0x0a, 0x1b, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x12, + 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, + 0x43, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x20, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 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, + 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5e, 0x0a, + 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, + 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x50, + 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x22, 0x2c, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0xab, 0x01, 0x0a, 0x16, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, + 0x65, 0x64, 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, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x53, 0x43, 0x54, + 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, + 0x64, 0x12, 0x33, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, + 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x3e, 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, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0xa2, 0x05, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52, 0x4f, + 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, + 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfa, + 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, + 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xfb, + 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x69, + 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc, 0x29, + 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, + 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, + 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10, 0xfe, + 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, + 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12, 0x1f, + 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a, 0x12, + 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, + 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12, 0x24, + 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, + 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, + 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, + 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a, - 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, - 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, - 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, - 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, - 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, - 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, - 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x8a, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, - 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x10, 0x8b, 0x2a, 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, 0x74, 0x69, 0x65, 0x6e, - 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d, 0x0a, + 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, + 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a, 0x1c, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, + 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a, 0x12, + 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, + 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x74, 0x65, 0x6d, 0x10, 0x8a, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, 0x6b, + 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x10, 0x8b, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, + 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x8c, 0x2a, 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, 0x74, 0x69, 0x65, + 0x6e, 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2665,7 +2950,7 @@ func file_tienlen_proto_rawDescGZIP() []byte { } var file_tienlen_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_tienlen_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_tienlen_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_tienlen_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: tienlen.OpResultCode (TienLenPacketID)(0), // 1: tienlen.TienLenPacketID @@ -2693,11 +2978,14 @@ var file_tienlen_proto_goTypes = []interface{}{ (*SCTienLenPlayerThinkLongCnt)(nil), // 23: tienlen.SCTienLenPlayerThinkLongCnt (*SCTienLenPlayerFirstGiveItemItem)(nil), // 24: tienlen.SCTienLenPlayerFirstGiveItemItem (*SCTienLenPetSkillRes)(nil), // 25: tienlen.SCTienLenPetSkillRes - nil, // 26: tienlen.TienLenPlayerData.ItemsEntry - nil, // 27: tienlen.SCTienLenCardTest.GradesEntry + (*ItemInfo)(nil), // 26: tienlen.ItemInfo + (*TienLenCycleBilledInfo)(nil), // 27: tienlen.TienLenCycleBilledInfo + (*SCTienLenCycleBilled)(nil), // 28: tienlen.SCTienLenCycleBilled + nil, // 29: tienlen.TienLenPlayerData.ItemsEntry + nil, // 30: tienlen.SCTienLenCardTest.GradesEntry } var file_tienlen_proto_depIdxs = []int32{ - 26, // 0: tienlen.TienLenPlayerData.Items:type_name -> tienlen.TienLenPlayerData.ItemsEntry + 29, // 0: tienlen.TienLenPlayerData.Items:type_name -> tienlen.TienLenPlayerData.ItemsEntry 3, // 1: tienlen.TienLenPlayerData.SkillInfo:type_name -> tienlen.PetSkillInfo 4, // 2: tienlen.PetSkillInfo.SkillData:type_name -> tienlen.SkillInfo 2, // 3: tienlen.SCTienLenRoomInfo.Players:type_name -> tienlen.TienLenPlayerData @@ -2706,12 +2994,14 @@ var file_tienlen_proto_depIdxs = []int32{ 2, // 6: tienlen.SCTienLenPlayerEnter.Data:type_name -> tienlen.TienLenPlayerData 12, // 7: tienlen.TienLenPlayerGameBilled.AddItems:type_name -> tienlen.AddItem 13, // 8: tienlen.SCTienLenGameBilled.Datas:type_name -> tienlen.TienLenPlayerGameBilled - 27, // 9: tienlen.SCTienLenCardTest.Grades:type_name -> tienlen.SCTienLenCardTest.GradesEntry - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 30, // 9: tienlen.SCTienLenCardTest.Grades:type_name -> tienlen.SCTienLenCardTest.GradesEntry + 26, // 10: tienlen.TienLenCycleBilledInfo.Award:type_name -> tienlen.ItemInfo + 27, // 11: tienlen.SCTienLenCycleBilled.List:type_name -> tienlen.TienLenCycleBilledInfo + 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 } func init() { file_tienlen_proto_init() } @@ -3008,6 +3298,42 @@ func file_tienlen_proto_init() { return nil } } + file_tienlen_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ItemInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tienlen_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TienLenCycleBilledInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tienlen_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCTienLenCycleBilled); 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{ @@ -3015,7 +3341,7 @@ func file_tienlen_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tienlen_proto_rawDesc, NumEnums: 2, - NumMessages: 26, + NumMessages: 29, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/tienlen/tienlen.proto b/protocol/tienlen/tienlen.proto index af58b66..a7894ff 100644 --- a/protocol/tienlen/tienlen.proto +++ b/protocol/tienlen/tienlen.proto @@ -29,7 +29,8 @@ enum TienLenPacketID { PACKET_SCTienLenCardTest = 5384;//测试数据 PACKET_SCTienLenThinkLongCnt = 5385; // 长考次数 PACKET_SCTienLenFirstGiveItemItem = 5386; // 第一次赠送记牌器道具 - PACKET_SCTienLenPetSkillRes = 5387; //宠物技能 + PACKET_SCTienLenPetSkillRes = 5387; //宠物技能 + PACKET_SCTienLenCycleBilled = 5388; // 大结算 } @@ -116,6 +117,15 @@ message SCTienLenRoomInfo { repeated int32 OutCardRecord = 30 ;//已打出去的牌 bool IsOutRecord = 31;//是否能用记牌器 int64 ItemRecExpireTime = 32; //记牌器到期时间 + int32 TMInfoId = 33; //比赛配置ID + // 房卡场配置 + int32 RoomTypeId = 34; //房间类型id + int32 RoomConfigId = 35; //房间配置id + int32 NeedPassword = 36; //是否需要密码 1需要 + int32 CostType = 37; //房卡支付方式 1AA 2房主 + int32 Voice = 38; //是否开启语音 1开启 + string Password = 39; //房间密码 + // 房卡场配置 } //房间状态更新 @@ -185,6 +195,7 @@ message SCTienLenSmallGameBilled { message SCTienLenCard { repeated int32 Cards = 1; //手牌 bool IsOutRecord = 2; // 是否有出牌记录 + int32 SnId = 3; //玩家id } //测试数据 @@ -264,4 +275,22 @@ message SCTienLenPetSkillRes{ int32 Snid = 1; int32 Pos = 2; bool PetSkillRes = 3; //true生效 +} + +message ItemInfo { + int32 Id = 1; // 道具ID + int64 Num = 2; // 道具数量 +} + +message TienLenCycleBilledInfo { + int32 SnId = 1; // 玩家ID + repeated int64 RoundScore = 2; // 每轮得分 + int64 Score = 3; // 基础分 + repeated ItemInfo Award = 4; // 奖励道具 + int64 TotalScore = 5; // 总分 +} + +// PACKET_SCTienLenCycleBilled +message SCTienLenCycleBilled { + repeated TienLenCycleBilledInfo List = 1; } \ No newline at end of file diff --git a/protocol/tournament/tournament.pb.go b/protocol/tournament/tournament.pb.go index eeb30bb..a808964 100644 --- a/protocol/tournament/tournament.pb.go +++ b/protocol/tournament/tournament.pb.go @@ -39,6 +39,10 @@ const ( TOURNAMENTID_PACKET_TM_SCTMSeasonRank TOURNAMENTID = 2754 //赛季排行榜 TOURNAMENTID_PACKET_TM_CSTMSeasonAward TOURNAMENTID = 2755 //领取赛季奖励 TOURNAMENTID_PACKET_TM_SCTMSeasonAward TOURNAMENTID = 2756 //领取赛季奖励 + TOURNAMENTID_PACKET_TM_CSMatchList TOURNAMENTID = 2757 // 比赛列表 + TOURNAMENTID_PACKET_TM_SCMatchList TOURNAMENTID = 2758 // 比赛列表 + TOURNAMENTID_PACKET_TM_CSRoomList TOURNAMENTID = 2759 // 比赛房间列表 + TOURNAMENTID_PACKET_TM_SCRoomList TOURNAMENTID = 2760 // 比赛房间列表 ) // Enum value maps for TOURNAMENTID. @@ -60,6 +64,10 @@ var ( 2754: "PACKET_TM_SCTMSeasonRank", 2755: "PACKET_TM_CSTMSeasonAward", 2756: "PACKET_TM_SCTMSeasonAward", + 2757: "PACKET_TM_CSMatchList", + 2758: "PACKET_TM_SCMatchList", + 2759: "PACKET_TM_CSRoomList", + 2760: "PACKET_TM_SCRoomList", } TOURNAMENTID_value = map[string]int32{ "PACKET_TM_ZERO": 0, @@ -78,6 +86,10 @@ var ( "PACKET_TM_SCTMSeasonRank": 2754, "PACKET_TM_CSTMSeasonAward": 2755, "PACKET_TM_SCTMSeasonAward": 2756, + "PACKET_TM_CSMatchList": 2757, + "PACKET_TM_SCMatchList": 2758, + "PACKET_TM_CSRoomList": 2759, + "PACKET_TM_SCRoomList": 2760, } ) @@ -400,9 +412,10 @@ type TMInfo struct { AwardShow string `protobuf:"bytes,18,opt,name=AwardShow,proto3" json:"AwardShow,omitempty"` //主要奖励展示 Rule string `protobuf:"bytes,19,opt,name=Rule,proto3" json:"Rule,omitempty"` SortId int32 `protobuf:"varint,20,opt,name=SortId,proto3" json:"SortId,omitempty"` - OnChannelName []string `protobuf:"bytes,21,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` //在哪个渠道开启 - ShowId int32 `protobuf:"varint,22,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分 - AwardNum int32 `protobuf:"varint,23,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量 + OnChannelName []string `protobuf:"bytes,21,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` //在哪个渠道开启 + ShowId int32 `protobuf:"varint,22,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分 + AwardNum int32 `protobuf:"varint,23,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量 + AudienceSwitch int32 `protobuf:"varint,27,opt,name=AudienceSwitch,proto3" json:"AudienceSwitch,omitempty"` // 观战开关 1开启 2关闭 } func (x *TMInfo) Reset() { @@ -598,6 +611,13 @@ func (x *TMInfo) GetAwardNum() int32 { return 0 } +func (x *TMInfo) GetAudienceSwitch() int32 { + if x != nil { + return x.AudienceSwitch + } + return 0 +} + type MatchTypeInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1683,6 +1703,529 @@ func (x *SCTMSeasonAward) GetCode() int32 { return 0 } +//PACKET_TM_CSMatchList +type CSMatchList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MatchId int64 `protobuf:"varint,1,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛id 0表示所有比赛场 + Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 房间类型 0所有房间 1可观战房间 +} + +func (x *CSMatchList) Reset() { + *x = CSMatchList{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSMatchList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSMatchList) ProtoMessage() {} + +func (x *CSMatchList) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[22] + 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 CSMatchList.ProtoReflect.Descriptor instead. +func (*CSMatchList) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{22} +} + +func (x *CSMatchList) GetMatchId() int64 { + if x != nil { + return x.MatchId + } + return 0 +} + +func (x *CSMatchList) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +type MatchPlayer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SnId int32 `protobuf:"varint,1,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家名字 + HeadUrl string `protobuf:"bytes,3,opt,name=HeadUrl,proto3" json:"HeadUrl,omitempty"` //头像地址 + UseRoleId int32 `protobuf:"varint,4,opt,name=UseRoleId,proto3" json:"UseRoleId,omitempty"` //使用的人物模型id + UseSkinId int32 `protobuf:"varint,5,opt,name=UseSkinId,proto3" json:"UseSkinId,omitempty"` // 皮肤id + Rank int32 `protobuf:"varint,6,opt,name=Rank,proto3" json:"Rank,omitempty"` //排名 + Score int32 `protobuf:"varint,7,opt,name=Score,proto3" json:"Score,omitempty"` //分数 +} + +func (x *MatchPlayer) Reset() { + *x = MatchPlayer{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MatchPlayer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchPlayer) ProtoMessage() {} + +func (x *MatchPlayer) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[23] + 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 MatchPlayer.ProtoReflect.Descriptor instead. +func (*MatchPlayer) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{23} +} + +func (x *MatchPlayer) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *MatchPlayer) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MatchPlayer) GetHeadUrl() string { + if x != nil { + return x.HeadUrl + } + return "" +} + +func (x *MatchPlayer) GetUseRoleId() int32 { + if x != nil { + return x.UseRoleId + } + return 0 +} + +func (x *MatchPlayer) GetUseSkinId() int32 { + if x != nil { + return x.UseSkinId + } + return 0 +} + +func (x *MatchPlayer) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (x *MatchPlayer) GetScore() int32 { + if x != nil { + return x.Score + } + return 0 +} + +type MatchInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MatchId int64 `protobuf:"varint,1,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛id + InstanceId int64 `protobuf:"varint,2,opt,name=InstanceId,proto3" json:"InstanceId,omitempty"` // 本场比赛id + Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 比赛名字 + Round int32 `protobuf:"varint,4,opt,name=Round,proto3" json:"Round,omitempty"` // 当前第几轮 + TotalRound int32 `protobuf:"varint,5,opt,name=TotalRound,proto3" json:"TotalRound,omitempty"` // 总轮数 + RemainNum int32 `protobuf:"varint,6,opt,name=RemainNum,proto3" json:"RemainNum,omitempty"` // 剩余人数 + Players []*MatchPlayer `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` // 玩家列表 + Icon string `protobuf:"bytes,8,opt,name=Icon,proto3" json:"Icon,omitempty"` // 比赛图标 +} + +func (x *MatchInfo) Reset() { + *x = MatchInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MatchInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchInfo) ProtoMessage() {} + +func (x *MatchInfo) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[24] + 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 MatchInfo.ProtoReflect.Descriptor instead. +func (*MatchInfo) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{24} +} + +func (x *MatchInfo) GetMatchId() int64 { + if x != nil { + return x.MatchId + } + return 0 +} + +func (x *MatchInfo) GetInstanceId() int64 { + if x != nil { + return x.InstanceId + } + return 0 +} + +func (x *MatchInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MatchInfo) GetRound() int32 { + if x != nil { + return x.Round + } + return 0 +} + +func (x *MatchInfo) GetTotalRound() int32 { + if x != nil { + return x.TotalRound + } + return 0 +} + +func (x *MatchInfo) GetRemainNum() int32 { + if x != nil { + return x.RemainNum + } + return 0 +} + +func (x *MatchInfo) GetPlayers() []*MatchPlayer { + if x != nil { + return x.Players + } + return nil +} + +func (x *MatchInfo) GetIcon() string { + if x != nil { + return x.Icon + } + return "" +} + +type SCTMMatchList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*MatchInfo `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` + MatchId int64 `protobuf:"varint,2,opt,name=MatchId,proto3" json:"MatchId,omitempty"` + Tp int32 `protobuf:"varint,3,opt,name=Tp,proto3" json:"Tp,omitempty"` +} + +func (x *SCTMMatchList) Reset() { + *x = SCTMMatchList{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCTMMatchList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCTMMatchList) ProtoMessage() {} + +func (x *SCTMMatchList) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[25] + 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 SCTMMatchList.ProtoReflect.Descriptor instead. +func (*SCTMMatchList) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{25} +} + +func (x *SCTMMatchList) GetList() []*MatchInfo { + if x != nil { + return x.List + } + return nil +} + +func (x *SCTMMatchList) GetMatchId() int64 { + if x != nil { + return x.MatchId + } + return 0 +} + +func (x *SCTMMatchList) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +//PACKET_TM_CSRoomList +type CSRoomList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 本场比赛id 0表示所有房间 + Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 房间类型 0所有房间 1可观战房间 +} + +func (x *CSRoomList) Reset() { + *x = CSRoomList{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSRoomList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSRoomList) ProtoMessage() {} + +func (x *CSRoomList) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[26] + 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 CSRoomList.ProtoReflect.Descriptor instead. +func (*CSRoomList) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{26} +} + +func (x *CSRoomList) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *CSRoomList) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +type MatchRoom struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoomId int64 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` // 房间id + MatchId int64 `protobuf:"varint,2,opt,name=MatchId,proto3" json:"MatchId,omitempty"` // 比赛id + InstanceId int64 `protobuf:"varint,3,opt,name=InstanceId,proto3" json:"InstanceId,omitempty"` // 本场比赛id + Round int32 `protobuf:"varint,4,opt,name=Round,proto3" json:"Round,omitempty"` // 当前第几轮 + TotalRound int32 `protobuf:"varint,5,opt,name=TotalRound,proto3" json:"TotalRound,omitempty"` // 总轮数 + Players []*MatchPlayer `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` // 玩家列表 +} + +func (x *MatchRoom) Reset() { + *x = MatchRoom{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MatchRoom) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MatchRoom) ProtoMessage() {} + +func (x *MatchRoom) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[27] + 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 MatchRoom.ProtoReflect.Descriptor instead. +func (*MatchRoom) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{27} +} + +func (x *MatchRoom) GetRoomId() int64 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *MatchRoom) GetMatchId() int64 { + if x != nil { + return x.MatchId + } + return 0 +} + +func (x *MatchRoom) GetInstanceId() int64 { + if x != nil { + return x.InstanceId + } + return 0 +} + +func (x *MatchRoom) GetRound() int32 { + if x != nil { + return x.Round + } + return 0 +} + +func (x *MatchRoom) GetTotalRound() int32 { + if x != nil { + return x.TotalRound + } + return 0 +} + +func (x *MatchRoom) GetPlayers() []*MatchPlayer { + if x != nil { + return x.Players + } + return nil +} + +type SCRoomList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*MatchRoom `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` + Id int64 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` + Tp int32 `protobuf:"varint,3,opt,name=Tp,proto3" json:"Tp,omitempty"` +} + +func (x *SCRoomList) Reset() { + *x = SCRoomList{} + if protoimpl.UnsafeEnabled { + mi := &file_tournament_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCRoomList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCRoomList) ProtoMessage() {} + +func (x *SCRoomList) ProtoReflect() protoreflect.Message { + mi := &file_tournament_proto_msgTypes[28] + 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 SCRoomList.ProtoReflect.Descriptor instead. +func (*SCRoomList) Descriptor() ([]byte, []int) { + return file_tournament_proto_rawDescGZIP(), []int{28} +} + +func (x *SCRoomList) GetList() []*MatchRoom { + if x != nil { + return x.List + } + return nil +} + +func (x *SCRoomList) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *SCRoomList) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + var File_tournament_proto protoreflect.FileDescriptor var file_tournament_proto_rawDesc = []byte{ @@ -1706,7 +2249,7 @@ var file_tournament_proto_rawDesc = []byte{ 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, 0xb2, 0x06, + 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xda, 0x06, 0x0a, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 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, @@ -1758,153 +2301,221 @@ var file_tournament_proto_rawDesc = []byte{ 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x16, 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, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4e, - 0x75, 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, - 0x6e, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x06, - 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, - 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x35, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x6f, 0x75, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0x22, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x4d, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x06, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x57, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, - 0x6c, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, - 0x4d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, - 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x06, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x38, 0x0a, - 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, - 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67, - 0x6e, 0x52, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, - 0x0d, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, - 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, - 0x78, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x22, 0x25, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, - 0x6b, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x08, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 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, 0x22, 0x88, 0x03, 0x0a, - 0x0f, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, - 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, - 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x52, 0x61, 0x6e, - 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, - 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x4d, 0x53, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x53, 0x43, - 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, - 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, 0x12, 0x18, - 0x0a, 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x58, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 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, 0x0e, - 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12, - 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, - 0x6e, 0x6b, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x4a, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x6f, - 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, - 0x61, 0x6e, 0x6b, 0x52, 0x0b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x73, - 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x4c, 0x76, 0x22, 0x35, 0x0a, 0x0f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xd9, 0x03, 0x0a, 0x0c, 0x54, - 0x4f, 0x55, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x44, 0x12, 0x12, 0x0a, 0x0e, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, - 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xb4, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x10, - 0xb5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, - 0x43, 0x53, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb6, 0x15, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, - 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xb7, 0x15, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, - 0x52, 0x61, 0x63, 0x65, 0x10, 0xb8, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x10, - 0xb9, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, - 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x10, 0xba, 0x15, - 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, - 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xbb, 0x15, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, - 0x54, 0x4d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0xbc, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xbf, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xc0, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x52, 0x61, 0x6e, 0x6b, 0x10, 0xc1, 0x15, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, - 0x61, 0x6e, 0x6b, 0x10, 0xc2, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x10, 0xc3, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x10, 0xc4, 0x15, 0x2a, 0xa2, 0x01, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x52, - 0x61, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4e, 0x6f, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x54, 0x69, 0x6d, 0x65, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x65, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4e, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x08, 0x42, 0x2a, 0x5a, 0x28, 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, 0x74, 0x6f, 0x75, - 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 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, 0x6e, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, 0x49, + 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x35, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x54, + 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x4d, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x06, 0x54, + 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x69, 0x6e, + 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x57, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x22, 0x6c, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x4d, 0x52, + 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, + 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x54, 0x4d, 0x52, + 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x6f, 0x75, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x06, 0x54, + 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x38, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x52, + 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, + 0x4d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x4d, 0x49, 0x64, 0x22, + 0x64, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x57, 0x61, 0x69, 0x74, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x0d, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, + 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, + 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x4e, 0x75, 0x6d, + 0x22, 0x25, 0x0a, 0x09, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0x6b, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 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, 0x22, 0x88, 0x03, 0x0a, 0x0f, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x3f, + 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, + 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x43, 0x50, 0x72, + 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, + 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x10, 0x0a, 0x0e, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x53, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, + 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x16, + 0x0a, 0x06, 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x4c, 0x61, 0x73, 0x74, 0x4c, 0x76, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x22, 0x58, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 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, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x53, + 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0x4a, 0x0a, 0x0e, + 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x38, + 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x0b, 0x52, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x22, 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x54, 0x4d, + 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, + 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x22, 0x35, 0x0a, 0x0f, 0x53, + 0x43, 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, + 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x12, + 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x22, 0x37, 0x0a, 0x0b, 0x43, 0x53, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0xb5, 0x01, 0x0a, 0x0b, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 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, 0x1c, 0x0a, + 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x55, + 0x73, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x55, 0x73, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, + 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, + 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x4e, + 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, + 0x4e, 0x75, 0x6d, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x07, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0d, 0x53, 0x43, + 0x54, 0x4d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x75, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, + 0x22, 0x2c, 0x0a, 0x0a, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, + 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0xc6, + 0x01, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x6f, 0x75, + 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x07, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x0a, 0x53, 0x43, 0x52, 0x6f, 0x6f, + 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, + 0x2a, 0xc7, 0x04, 0x0a, 0x0c, 0x54, 0x4f, 0x55, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x4e, 0x54, 0x49, + 0x44, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x5a, + 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xb4, 0x15, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, + 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x10, 0xb5, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, + 0x73, 0x74, 0x10, 0xb6, 0x15, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x52, 0x61, 0x6e, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, + 0xb7, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, + 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x10, 0xb8, 0x15, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, + 0x6e, 0x52, 0x61, 0x63, 0x65, 0x10, 0xb9, 0x15, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x69, 0x67, 0x6e, + 0x4e, 0x75, 0x6d, 0x10, 0xba, 0x15, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x10, 0xbb, 0x15, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0xbc, 0x15, + 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, + 0x54, 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xbf, 0x15, 0x12, + 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, + 0x4d, 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xc0, 0x15, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, + 0x53, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x10, 0xc1, 0x15, 0x12, 0x1d, 0x0a, + 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x10, 0xc2, 0x15, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x54, 0x4d, 0x53, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xc3, 0x15, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x54, 0x4d, 0x53, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xc4, 0x15, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x43, 0x53, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xc5, 0x15, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x73, + 0x74, 0x10, 0xc6, 0x15, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, + 0x4d, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xc7, 0x15, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x4d, 0x5f, 0x53, 0x43, 0x52, + 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xc8, 0x15, 0x2a, 0xa2, 0x01, 0x0a, 0x0c, 0x53, + 0x69, 0x67, 0x6e, 0x52, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, + 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0x02, 0x12, 0x0f, 0x0a, + 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x03, 0x12, 0x0d, + 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x69, 0x6d, 0x65, 0x10, 0x04, 0x12, 0x0d, 0x0a, + 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0x06, 0x12, 0x0d, + 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x65, 0x10, 0x07, 0x12, 0x10, 0x0a, + 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x08, 0x42, + 0x2a, 0x5a, 0x28, 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, 0x74, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -1920,7 +2531,7 @@ func file_tournament_proto_rawDescGZIP() []byte { } var file_tournament_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_tournament_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_tournament_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_tournament_proto_goTypes = []interface{}{ (TOURNAMENTID)(0), // 0: tournament.TOURNAMENTID (SignRaceCode)(0), // 1: tournament.SignRaceCode @@ -1946,7 +2557,14 @@ var file_tournament_proto_goTypes = []interface{}{ (*SCTMSeasonRank)(nil), // 21: tournament.SCTMSeasonRank (*CSTMSeasonAward)(nil), // 22: tournament.CSTMSeasonAward (*SCTMSeasonAward)(nil), // 23: tournament.SCTMSeasonAward - nil, // 24: tournament.SCPromotionInfo.RecordEntry + (*CSMatchList)(nil), // 24: tournament.CSMatchList + (*MatchPlayer)(nil), // 25: tournament.MatchPlayer + (*MatchInfo)(nil), // 26: tournament.MatchInfo + (*SCTMMatchList)(nil), // 27: tournament.SCTMMatchList + (*CSRoomList)(nil), // 28: tournament.CSRoomList + (*MatchRoom)(nil), // 29: tournament.MatchRoom + (*SCRoomList)(nil), // 30: tournament.SCRoomList + nil, // 31: tournament.SCPromotionInfo.RecordEntry } var file_tournament_proto_depIdxs = []int32{ 3, // 0: tournament.MatchInfoAward.ItemInfo:type_name -> tournament.ItemInfo @@ -1956,14 +2574,18 @@ var file_tournament_proto_depIdxs = []int32{ 6, // 4: tournament.SCTMInfos.TypeList:type_name -> tournament.MatchTypeInfo 9, // 5: tournament.SCTMRankList.TMRank:type_name -> tournament.TMRank 3, // 6: tournament.RankAward.ItemInfo:type_name -> tournament.ItemInfo - 24, // 7: tournament.SCPromotionInfo.Record:type_name -> tournament.SCPromotionInfo.RecordEntry + 31, // 7: tournament.SCPromotionInfo.Record:type_name -> tournament.SCPromotionInfo.RecordEntry 15, // 8: tournament.SCPromotionInfo.RankAward:type_name -> tournament.RankAward 19, // 9: tournament.SCTMSeasonRank.ReasonRanks:type_name -> tournament.SeasonRank - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 25, // 10: tournament.MatchInfo.Players:type_name -> tournament.MatchPlayer + 26, // 11: tournament.SCTMMatchList.List:type_name -> tournament.MatchInfo + 25, // 12: tournament.MatchRoom.Players:type_name -> tournament.MatchPlayer + 29, // 13: tournament.SCRoomList.List:type_name -> tournament.MatchRoom + 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_tournament_proto_init() } @@ -2236,6 +2858,90 @@ func file_tournament_proto_init() { return nil } } + file_tournament_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSMatchList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tournament_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MatchPlayer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tournament_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MatchInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tournament_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCTMMatchList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tournament_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSRoomList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tournament_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MatchRoom); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_tournament_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCRoomList); 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{ @@ -2243,7 +2949,7 @@ func file_tournament_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tournament_proto_rawDesc, NumEnums: 2, - NumMessages: 23, + NumMessages: 30, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/tournament/tournament.proto b/protocol/tournament/tournament.proto index 514bcbe..08ed170 100644 --- a/protocol/tournament/tournament.proto +++ b/protocol/tournament/tournament.proto @@ -20,6 +20,10 @@ enum TOURNAMENTID{ PACKET_TM_SCTMSeasonRank = 2754;//赛季排行榜 PACKET_TM_CSTMSeasonAward = 2755;//领取赛季奖励 PACKET_TM_SCTMSeasonAward = 2756;//领取赛季奖励 + PACKET_TM_CSMatchList = 2757;// 比赛列表 + PACKET_TM_SCMatchList = 2758;// 比赛列表 + PACKET_TM_CSRoomList = 2759; // 比赛房间列表 + PACKET_TM_SCRoomList = 2760; // 比赛房间列表 } //比赛场场次 //PACKET_TM_CSTMInfo @@ -65,6 +69,7 @@ message TMInfo{ repeated string OnChannelName = 21;//在哪个渠道开启 int32 ShowId = 22; // 比赛区分 int32 AwardNum = 23; //比赛奖励剩余数量 + int32 AudienceSwitch = 27; // 观战开关 1开启 2关闭 } message MatchTypeInfo{ @@ -187,4 +192,58 @@ message CSTMSeasonAward { message SCTMSeasonAward { int32 Lv = 1;//段位 int32 Code = 2;//0成功 1失败 +} + +//PACKET_TM_CSMatchList +message CSMatchList{ + int64 MatchId = 1; // 比赛id 0表示所有比赛场 + int32 Tp = 2; // 房间类型 0所有房间 1可观战房间 +} + +message MatchPlayer{ + int32 SnId = 1; // 玩家id + string Name = 2; // 玩家名字 + string HeadUrl = 3;//头像地址 + int32 UseRoleId = 4;//使用的人物模型id + int32 UseSkinId = 5; // 皮肤id + int32 Rank = 6;//排名 + int32 Score = 7;//分数 +} + +message MatchInfo{ + int64 MatchId = 1; // 比赛id + int64 InstanceId = 2; // 本场比赛id + string Name = 3; // 比赛名字 + int32 Round = 4; // 当前第几轮 + int32 TotalRound = 5; // 总轮数 + int32 RemainNum = 6; // 剩余人数 + repeated MatchPlayer Players = 7; // 玩家列表 + string Icon = 8; // 比赛图标 +} + +message SCTMMatchList{ + repeated MatchInfo List = 1; + int64 MatchId = 2; + int32 Tp = 3; +} + +//PACKET_TM_CSRoomList +message CSRoomList{ + int64 Id = 1; // 本场比赛id 0表示所有房间 + int32 Tp = 2; // 房间类型 0所有房间 1可观战房间 +} + +message MatchRoom{ + int64 RoomId = 1; // 房间id + int64 MatchId = 2; // 比赛id + int64 InstanceId = 3; // 本场比赛id + int32 Round = 4; // 当前第几轮 + int32 TotalRound = 5; // 总轮数 + repeated MatchPlayer Players = 7; // 玩家列表 +} + +message SCRoomList{ + repeated MatchRoom List = 1; + int64 Id = 2; + int32 Tp = 3; } \ No newline at end of file diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index f00c43a..a284f6a 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -1904,24 +1904,30 @@ type RoomInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` - SceneId int32 `protobuf:"varint,2,opt,name=SceneId,proto3" json:"SceneId,omitempty"` //场景id - GameId int32 `protobuf:"varint,3,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id - GameMode int32 `protobuf:"varint,4,opt,name=GameMode,proto3" json:"GameMode,omitempty"` //游戏模式 - SceneMode int32 `protobuf:"varint,5,opt,name=SceneMode,proto3" json:"SceneMode,omitempty"` //房间模式,参考common.SceneMode_XXX - GroupId int32 `protobuf:"varint,6,opt,name=GroupId,proto3" json:"GroupId,omitempty"` //组id - GameFreeId int32 `protobuf:"varint,7,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` - SrvId int32 `protobuf:"varint,8,opt,name=SrvId,proto3" json:"SrvId,omitempty"` //服务器id - Creator int32 `protobuf:"varint,9,opt,name=Creator,proto3" json:"Creator,omitempty"` //创建者账号id - Agentor int32 `protobuf:"varint,10,opt,name=Agentor,proto3" json:"Agentor,omitempty"` //代理者id - ReplayCode string `protobuf:"bytes,11,opt,name=ReplayCode,proto3" json:"ReplayCode,omitempty"` //回放码 - Params []int32 `protobuf:"varint,12,rep,packed,name=Params,proto3" json:"Params,omitempty"` //场景参数 - PlayerIds []int32 `protobuf:"varint,13,rep,packed,name=PlayerIds,proto3" json:"PlayerIds,omitempty"` //所有玩家id - PlayerCnt int32 `protobuf:"varint,14,opt,name=PlayerCnt,proto3" json:"PlayerCnt,omitempty"` //玩家数量 - RobotCnt int32 `protobuf:"varint,15,opt,name=RobotCnt,proto3" json:"RobotCnt,omitempty"` //AI数量 - Start int32 `protobuf:"varint,16,opt,name=Start,proto3" json:"Start,omitempty"` //0.等待 1.游戏中 - CreateTime int64 `protobuf:"varint,17,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` //创建时间 - BaseScore int32 `protobuf:"varint,18,opt,name=BaseScore,proto3" json:"BaseScore,omitempty"` //底分 + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` + SceneId int32 `protobuf:"varint,2,opt,name=SceneId,proto3" json:"SceneId,omitempty"` //房间id + GameId int32 `protobuf:"varint,3,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id + GameMode int32 `protobuf:"varint,4,opt,name=GameMode,proto3" json:"GameMode,omitempty"` //游戏模式 + SceneMode int32 `protobuf:"varint,5,opt,name=SceneMode,proto3" json:"SceneMode,omitempty"` //房间模式,参考common.SceneMode_XXX + GroupId int32 `protobuf:"varint,6,opt,name=GroupId,proto3" json:"GroupId,omitempty"` //组id + GameFreeId int32 `protobuf:"varint,7,opt,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` // 场次id + SrvId int32 `protobuf:"varint,8,opt,name=SrvId,proto3" json:"SrvId,omitempty"` //服务器id + Creator int32 `protobuf:"varint,9,opt,name=Creator,proto3" json:"Creator,omitempty"` //创建者账号id + Agentor int32 `protobuf:"varint,10,opt,name=Agentor,proto3" json:"Agentor,omitempty"` //代理者id + ReplayCode string `protobuf:"bytes,11,opt,name=ReplayCode,proto3" json:"ReplayCode,omitempty"` //回放码 + Params []int32 `protobuf:"varint,12,rep,packed,name=Params,proto3" json:"Params,omitempty"` //场景参数 + PlayerIds []int32 `protobuf:"varint,13,rep,packed,name=PlayerIds,proto3" json:"PlayerIds,omitempty"` //所有玩家id + PlayerCnt int32 `protobuf:"varint,14,opt,name=PlayerCnt,proto3" json:"PlayerCnt,omitempty"` //玩家数量 + RobotCnt int32 `protobuf:"varint,15,opt,name=RobotCnt,proto3" json:"RobotCnt,omitempty"` //AI数量 + Start int32 `protobuf:"varint,16,opt,name=Start,proto3" json:"Start,omitempty"` //0.等待 1.游戏中 + CreateTime int64 `protobuf:"varint,17,opt,name=CreateTime,proto3" json:"CreateTime,omitempty"` //创建时间 + BaseScore int32 `protobuf:"varint,18,opt,name=BaseScore,proto3" json:"BaseScore,omitempty"` //底分 + RoomConfigId int32 `protobuf:"varint,19,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` //房间配置id + CurrRound int32 `protobuf:"varint,20,opt,name=CurrRound,proto3" json:"CurrRound,omitempty"` //当前局数 + MaxRound int32 `protobuf:"varint,21,opt,name=MaxRound,proto3" json:"MaxRound,omitempty"` //最大局数 + 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开启 } func (x *RoomInfo) Reset() { @@ -2082,6 +2088,48 @@ func (x *RoomInfo) GetBaseScore() int32 { return 0 } +func (x *RoomInfo) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + +func (x *RoomInfo) GetCurrRound() int32 { + if x != nil { + return x.CurrRound + } + return 0 +} + +func (x *RoomInfo) GetMaxRound() int32 { + if x != nil { + return x.MaxRound + } + return 0 +} + +func (x *RoomInfo) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *RoomInfo) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *RoomInfo) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + type PlayerSingleAdjust struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4115,12 +4163,13 @@ type GameMatchDate struct { AwardShow string `protobuf:"bytes,18,opt,name=AwardShow,proto3" json:"AwardShow,omitempty"` //主要奖励展示 Rule string `protobuf:"bytes,19,opt,name=Rule,proto3" json:"Rule,omitempty"` SortId int32 `protobuf:"varint,20,opt,name=SortId,proto3" json:"SortId,omitempty"` - UseRobot int32 `protobuf:"varint,21,opt,name=UseRobot,proto3" json:"UseRobot,omitempty"` //0机器人有参与 1纯真人 - MatchLevel int32 `protobuf:"varint,22,opt,name=MatchLevel,proto3" json:"MatchLevel,omitempty"` // 难度等级 - OnChannelName []string `protobuf:"bytes,23,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启的渠道名称 - CardType int32 `protobuf:"varint,24,opt,name=CardType,proto3" json:"CardType,omitempty"` // 手机卡类型 - ShowId int32 `protobuf:"varint,25,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分 - AwardNum int32 `protobuf:"varint,26,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量 + UseRobot int32 `protobuf:"varint,21,opt,name=UseRobot,proto3" json:"UseRobot,omitempty"` //0机器人有参与 1纯真人 + MatchLevel int32 `protobuf:"varint,22,opt,name=MatchLevel,proto3" json:"MatchLevel,omitempty"` // 难度等级 + OnChannelName []string `protobuf:"bytes,23,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启的渠道名称 + CardType int32 `protobuf:"varint,24,opt,name=CardType,proto3" json:"CardType,omitempty"` // 手机卡类型 + ShowId int32 `protobuf:"varint,25,opt,name=ShowId,proto3" json:"ShowId,omitempty"` // 比赛区分 + AwardNum int32 `protobuf:"varint,26,opt,name=AwardNum,proto3" json:"AwardNum,omitempty"` //比赛奖励剩余数量 + AudienceSwitch int32 `protobuf:"varint,27,opt,name=AudienceSwitch,proto3" json:"AudienceSwitch,omitempty"` // 观战开关 1开启 2关闭 } func (x *GameMatchDate) Reset() { @@ -4337,6 +4386,13 @@ func (x *GameMatchDate) GetAwardNum() int32 { return 0 } +func (x *GameMatchDate) GetAudienceSwitch() int32 { + if x != nil { + return x.AudienceSwitch + } + return 0 +} + // etcd /game/game_match type GameMatchDateList struct { state protoimpl.MessageState @@ -8137,19 +8193,19 @@ func (x *GuideConfig) GetSkip() int32 { return 0 } -//娃娃机配置视频 -// etcd /game/machine_config -type MachineConfig struct { +// etcd /game/match_audience +type MatchAudience struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 - Info []*MachineInfo `protobuf:"bytes,2,rep,name=Info,proto3" json:"Info,omitempty"` + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家ID + Ts int64 `protobuf:"varint,3,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳 } -func (x *MachineConfig) Reset() { - *x = MachineConfig{} +func (x *MatchAudience) Reset() { + *x = MatchAudience{} if protoimpl.UnsafeEnabled { mi := &file_common_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8157,13 +8213,13 @@ func (x *MachineConfig) Reset() { } } -func (x *MachineConfig) String() string { +func (x *MatchAudience) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MachineConfig) ProtoMessage() {} +func (*MatchAudience) ProtoMessage() {} -func (x *MachineConfig) ProtoReflect() protoreflect.Message { +func (x *MatchAudience) ProtoReflect() protoreflect.Message { mi := &file_common_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8175,38 +8231,45 @@ func (x *MachineConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MachineConfig.ProtoReflect.Descriptor instead. -func (*MachineConfig) Descriptor() ([]byte, []int) { +// Deprecated: Use MatchAudience.ProtoReflect.Descriptor instead. +func (*MatchAudience) Descriptor() ([]byte, []int) { return file_common_proto_rawDescGZIP(), []int{86} } -func (x *MachineConfig) GetPlatform() string { +func (x *MatchAudience) GetPlatform() string { if x != nil { return x.Platform } return "" } -func (x *MachineConfig) GetInfo() []*MachineInfo { +func (x *MatchAudience) GetSnId() int32 { if x != nil { - return x.Info + return x.SnId } - return nil + return 0 } -type MachineInfo struct { +func (x *MatchAudience) GetTs() int64 { + if x != nil { + return x.Ts + } + return 0 +} + +// etcd /game/spirit +type SpiritConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MachineId int32 `protobuf:"varint,1,opt,name=MachineId,proto3" json:"MachineId,omitempty"` //娃娃机Id - 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"` + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 精灵开关 1开启 2关闭 + Url string `protobuf:"bytes,3,opt,name=Url,proto3" json:"Url,omitempty"` } -func (x *MachineInfo) Reset() { - *x = MachineInfo{} +func (x *SpiritConfig) Reset() { + *x = SpiritConfig{} if protoimpl.UnsafeEnabled { mi := &file_common_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8214,13 +8277,13 @@ func (x *MachineInfo) Reset() { } } -func (x *MachineInfo) String() string { +func (x *SpiritConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MachineInfo) ProtoMessage() {} +func (*SpiritConfig) ProtoMessage() {} -func (x *MachineInfo) ProtoReflect() protoreflect.Message { +func (x *SpiritConfig) ProtoReflect() protoreflect.Message { mi := &file_common_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8232,35 +8295,276 @@ func (x *MachineInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MachineInfo.ProtoReflect.Descriptor instead. -func (*MachineInfo) Descriptor() ([]byte, []int) { +// Deprecated: Use SpiritConfig.ProtoReflect.Descriptor instead. +func (*SpiritConfig) Descriptor() ([]byte, []int) { return file_common_proto_rawDescGZIP(), []int{87} } -func (x *MachineInfo) GetMachineId() int32 { +func (x *SpiritConfig) GetPlatform() string { if x != nil { - return x.MachineId - } - return 0 -} - -func (x *MachineInfo) GetAppId() int64 { - if x != nil { - return x.AppId - } - return 0 -} - -func (x *MachineInfo) GetServerSecret() string { - if x != nil { - return x.ServerSecret + return x.Platform } return "" } -func (x *MachineInfo) GetStreamId() string { +func (x *SpiritConfig) GetOn() int32 { if x != nil { - return x.StreamId + return x.On + } + return 0 +} + +func (x *SpiritConfig) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +// etcd /game/room_type +type RoomType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 配置ID + Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 类型名称 + On int32 `protobuf:"varint,4,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 + SortId int32 `protobuf:"varint,5,opt,name=SortId,proto3" json:"SortId,omitempty"` // 排序ID +} + +func (x *RoomType) Reset() { + *x = RoomType{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoomType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoomType) ProtoMessage() {} + +func (x *RoomType) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[88] + 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 RoomType.ProtoReflect.Descriptor instead. +func (*RoomType) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{88} +} + +func (x *RoomType) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *RoomType) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *RoomType) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RoomType) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *RoomType) GetSortId() int32 { + if x != nil { + return x.SortId + } + return 0 +} + +// etcd /game/room_config +type RoomConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id + Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 配置名称 + RoomType int32 `protobuf:"varint,4,opt,name=RoomType,proto3" json:"RoomType,omitempty"` // 房间类型id + On int32 `protobuf:"varint,5,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 + SortId int32 `protobuf:"varint,6,opt,name=SortId,proto3" json:"SortId,omitempty"` // 排序ID + Cost []*ItemInfo `protobuf:"bytes,7,rep,name=Cost,proto3" json:"Cost,omitempty"` // 进入房间消耗 + Reward []*ItemInfo `protobuf:"bytes,8,rep,name=Reward,proto3" json:"Reward,omitempty"` // 进入房间奖励 + OnChannelName []string `protobuf:"bytes,9,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启的渠道名称 + GameFreeId []int32 `protobuf:"varint,10,rep,packed,name=GameFreeId,proto3" json:"GameFreeId,omitempty"` // 场次id + Round []int32 `protobuf:"varint,11,rep,packed,name=Round,proto3" json:"Round,omitempty"` // 局数 + PlayerNum []int32 `protobuf:"varint,12,rep,packed,name=PlayerNum,proto3" json:"PlayerNum,omitempty"` // 人数 + NeedPassword int32 `protobuf:"varint,13,opt,name=NeedPassword,proto3" json:"NeedPassword,omitempty"` // 是否需要密码 1是 2否 3自定义 + CostType int32 `protobuf:"varint,14,opt,name=CostType,proto3" json:"CostType,omitempty"` // 消耗类型 1AA 2房主 3自定义 + Voice int32 `protobuf:"varint,15,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1是 2否 3自定义 + ImageURI string `protobuf:"bytes,16,opt,name=ImageURI,proto3" json:"ImageURI,omitempty"` // 奖励图片 +} + +func (x *RoomConfig) Reset() { + *x = RoomConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoomConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoomConfig) ProtoMessage() {} + +func (x *RoomConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[89] + 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 RoomConfig.ProtoReflect.Descriptor instead. +func (*RoomConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{89} +} + +func (x *RoomConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *RoomConfig) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *RoomConfig) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *RoomConfig) GetRoomType() int32 { + if x != nil { + return x.RoomType + } + return 0 +} + +func (x *RoomConfig) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *RoomConfig) GetSortId() int32 { + if x != nil { + return x.SortId + } + return 0 +} + +func (x *RoomConfig) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *RoomConfig) GetReward() []*ItemInfo { + if x != nil { + return x.Reward + } + return nil +} + +func (x *RoomConfig) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + +func (x *RoomConfig) GetGameFreeId() []int32 { + if x != nil { + return x.GameFreeId + } + return nil +} + +func (x *RoomConfig) GetRound() []int32 { + if x != nil { + return x.Round + } + return nil +} + +func (x *RoomConfig) GetPlayerNum() []int32 { + if x != nil { + return x.PlayerNum + } + return nil +} + +func (x *RoomConfig) GetNeedPassword() int32 { + if x != nil { + return x.NeedPassword + } + return 0 +} + +func (x *RoomConfig) GetCostType() int32 { + if x != nil { + return x.CostType + } + return 0 +} + +func (x *RoomConfig) GetVoice() int32 { + if x != nil { + return x.Voice + } + return 0 +} + +func (x *RoomConfig) GetImageURI() string { + if x != nil { + return x.ImageURI } return "" } @@ -8632,7 +8936,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, 0xfa, 0x03, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, + 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0xa6, 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, @@ -8664,908 +8968,954 @@ var file_common_proto_rawDesc = []byte{ 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, - 0x72, 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, + 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x49, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x16, 0x20, 0x01, + 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, 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, + 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, 0x60, 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, 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, 0x60, 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, 0x89, 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, 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, + 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, 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, + 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, + 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, 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, + 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, 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, 0x8e, 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, 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, + 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, 0x8e, 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, 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, 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, + 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, 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, 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, + 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, 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 ( @@ -9580,7 +9930,7 @@ func file_common_proto_rawDescGZIP() []byte { return file_common_proto_rawDescData } -var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 98) +var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 100) var file_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -9668,108 +10018,111 @@ var file_common_proto_goTypes = []interface{}{ (*AwardLogInfo)(nil), // 83: webapi.AwardLogInfo (*AnnouncerLogInfo)(nil), // 84: webapi.AnnouncerLogInfo (*GuideConfig)(nil), // 85: webapi.GuideConfig - (*MachineConfig)(nil), // 86: webapi.MachineConfig - (*MachineInfo)(nil), // 87: webapi.MachineInfo - nil, // 88: webapi.Platform.BindTelRewardEntry - nil, // 89: webapi.PlayerData.RankScoreEntry - nil, // 90: webapi.ItemShop.AwardEntry - nil, // 91: webapi.VIPcfg.AwardEntry - nil, // 92: webapi.VIPcfg.Privilege1Entry - nil, // 93: webapi.VIPcfg.Privilege7Entry - nil, // 94: webapi.VIPcfg.Privilege9Entry - nil, // 95: webapi.ActInviteConfig.PayScoreEntry - nil, // 96: webapi.SkinLevel.UpItemEntry - nil, // 97: webapi.SkinItem.UnlockParamEntry - (*server.DB_GameFree)(nil), // 98: server.DB_GameFree - (*server.DB_GameItem)(nil), // 99: server.DB_GameItem + (*MatchAudience)(nil), // 86: webapi.MatchAudience + (*SpiritConfig)(nil), // 87: webapi.SpiritConfig + (*RoomType)(nil), // 88: webapi.RoomType + (*RoomConfig)(nil), // 89: webapi.RoomConfig + nil, // 90: webapi.Platform.BindTelRewardEntry + nil, // 91: webapi.PlayerData.RankScoreEntry + nil, // 92: webapi.ItemShop.AwardEntry + nil, // 93: webapi.VIPcfg.AwardEntry + nil, // 94: webapi.VIPcfg.Privilege1Entry + nil, // 95: webapi.VIPcfg.Privilege7Entry + nil, // 96: webapi.VIPcfg.Privilege9Entry + nil, // 97: webapi.ActInviteConfig.PayScoreEntry + nil, // 98: webapi.SkinLevel.UpItemEntry + nil, // 99: webapi.SkinItem.UnlockParamEntry + (*server.DB_GameFree)(nil), // 100: server.DB_GameFree + (*server.DB_GameItem)(nil), // 101: server.DB_GameItem } var file_common_proto_depIdxs = []int32{ - 2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch - 3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig - 4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame - 88, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry - 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 98, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree - 8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree - 0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting - 1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting - 1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting - 98, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 89, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry - 32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo - 14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo - 14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo - 14, // 15: webapi.PlayerData.PetSkillUnlockList:type_name -> webapi.ModInfo - 14, // 16: webapi.PlayerData.SkinUnlockList:type_name -> webapi.ModInfo - 21, // 17: webapi.OnlineReport.GameCount:type_name -> webapi.OnlineGameCnt - 23, // 18: webapi.CommonNoticeList.List:type_name -> webapi.CommonNotice - 27, // 19: webapi.ExchangeShop.ExType:type_name -> webapi.ExchangeType - 26, // 20: webapi.ExchangeShop.TelData:type_name -> webapi.TelChargeData - 32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo - 25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop - 29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight - 90, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry - 30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop - 32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo - 33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward - 32, // 28: webapi.GameMatchDate.SignupCostItem:type_name -> webapi.ItemInfo - 34, // 29: webapi.GameMatchDateList.List:type_name -> webapi.GameMatchDate - 36, // 30: webapi.GameMatchType.List:type_name -> webapi.MatchTypeInfo - 38, // 31: webapi.WelfareTurnplateDate.Date:type_name -> webapi.WelfareDate - 39, // 32: webapi.WelfareTurnplateDateList.List:type_name -> webapi.WelfareTurnplateDate - 40, // 33: webapi.WelfareTurnplateDateList.RateList:type_name -> webapi.WelfareTurnplateRate - 38, // 34: webapi.AddUpWelfareDate.AddUpDate:type_name -> webapi.WelfareDate - 38, // 35: webapi.Welfare7SignDate.Date:type_name -> webapi.WelfareDate - 42, // 36: webapi.Welfare7SignDate.AddUpDate:type_name -> webapi.AddUpWelfareDate - 42, // 37: webapi.Welfare7SignDate.AddUpDate2:type_name -> webapi.AddUpWelfareDate - 42, // 38: webapi.Welfare7SignDate.AddUpDate2Google:type_name -> webapi.AddUpWelfareDate - 43, // 39: webapi.Welfare7SignDate.AddUpDate2Type:type_name -> webapi.AddUpDate2TypeData - 44, // 40: webapi.Welfare7SignDateList.List:type_name -> webapi.Welfare7SignDate - 46, // 41: webapi.WelfareBlindBoxDataList.List:type_name -> webapi.BlindBoxData - 38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate - 48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree - 48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree - 91, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 92, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry - 93, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry - 94, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry - 51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg - 38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate - 55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig - 95, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry - 62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward - 62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward - 62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward - 32, // 56: webapi.PermitLevelConfig.Award1:type_name -> webapi.ItemInfo - 32, // 57: webapi.PermitLevelConfig.Award2:type_name -> webapi.ItemInfo - 32, // 58: webapi.PermitExchangeConfig.Gain:type_name -> webapi.ItemInfo - 32, // 59: webapi.PermitExchangeConfig.Cost:type_name -> webapi.ItemInfo - 32, // 60: webapi.PermitRankConfig.ItemId:type_name -> webapi.ItemInfo - 64, // 61: webapi.PermitChannelConfig.LevelConfig:type_name -> webapi.PermitLevelConfig - 65, // 62: webapi.PermitChannelConfig.ExchangeConfig:type_name -> webapi.PermitExchangeConfig - 66, // 63: webapi.PermitChannelConfig.RankConfig:type_name -> webapi.PermitRankConfig - 67, // 64: webapi.ActPermitConfig.Configs:type_name -> webapi.PermitChannelConfig - 71, // 65: webapi.DiamondLotteryPlayers.Award:type_name -> webapi.AwardData - 69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo - 70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers - 72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData - 99, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem - 32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo - 75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo - 76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo - 96, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry - 97, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry - 78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel - 79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem - 82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData - 84, // 78: webapi.AwardLogConfig.AnnouncerLog:type_name -> webapi.AnnouncerLogInfo - 83, // 79: webapi.AwardLogData.AwardLog:type_name -> webapi.AwardLogInfo - 87, // 80: webapi.MachineConfig.Info:type_name -> webapi.MachineInfo - 81, // [81:81] is the sub-list for method output_type - 81, // [81:81] is the sub-list for method input_type - 81, // [81:81] is the sub-list for extension type_name - 81, // [81:81] is the sub-list for extension extendee - 0, // [0:81] is the sub-list for field type_name + 2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch + 3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig + 4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame + 90, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus + 100, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree + 0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting + 1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting + 1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting + 100, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 91, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo + 14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo + 14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo + 14, // 15: webapi.PlayerData.PetSkillUnlockList:type_name -> webapi.ModInfo + 14, // 16: webapi.PlayerData.SkinUnlockList:type_name -> webapi.ModInfo + 21, // 17: webapi.OnlineReport.GameCount:type_name -> webapi.OnlineGameCnt + 23, // 18: webapi.CommonNoticeList.List:type_name -> webapi.CommonNotice + 27, // 19: webapi.ExchangeShop.ExType:type_name -> webapi.ExchangeType + 26, // 20: webapi.ExchangeShop.TelData:type_name -> webapi.TelChargeData + 32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo + 25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop + 29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight + 92, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop + 32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo + 33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward + 32, // 28: webapi.GameMatchDate.SignupCostItem:type_name -> webapi.ItemInfo + 34, // 29: webapi.GameMatchDateList.List:type_name -> webapi.GameMatchDate + 36, // 30: webapi.GameMatchType.List:type_name -> webapi.MatchTypeInfo + 38, // 31: webapi.WelfareTurnplateDate.Date:type_name -> webapi.WelfareDate + 39, // 32: webapi.WelfareTurnplateDateList.List:type_name -> webapi.WelfareTurnplateDate + 40, // 33: webapi.WelfareTurnplateDateList.RateList:type_name -> webapi.WelfareTurnplateRate + 38, // 34: webapi.AddUpWelfareDate.AddUpDate:type_name -> webapi.WelfareDate + 38, // 35: webapi.Welfare7SignDate.Date:type_name -> webapi.WelfareDate + 42, // 36: webapi.Welfare7SignDate.AddUpDate:type_name -> webapi.AddUpWelfareDate + 42, // 37: webapi.Welfare7SignDate.AddUpDate2:type_name -> webapi.AddUpWelfareDate + 42, // 38: webapi.Welfare7SignDate.AddUpDate2Google:type_name -> webapi.AddUpWelfareDate + 43, // 39: webapi.Welfare7SignDate.AddUpDate2Type:type_name -> webapi.AddUpDate2TypeData + 44, // 40: webapi.Welfare7SignDateList.List:type_name -> webapi.Welfare7SignDate + 46, // 41: webapi.WelfareBlindBoxDataList.List:type_name -> webapi.BlindBoxData + 38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate + 48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree + 48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree + 93, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 94, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry + 95, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 96, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry + 51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg + 38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate + 55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig + 97, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward + 62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward + 62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward + 32, // 56: webapi.PermitLevelConfig.Award1:type_name -> webapi.ItemInfo + 32, // 57: webapi.PermitLevelConfig.Award2:type_name -> webapi.ItemInfo + 32, // 58: webapi.PermitExchangeConfig.Gain:type_name -> webapi.ItemInfo + 32, // 59: webapi.PermitExchangeConfig.Cost:type_name -> webapi.ItemInfo + 32, // 60: webapi.PermitRankConfig.ItemId:type_name -> webapi.ItemInfo + 64, // 61: webapi.PermitChannelConfig.LevelConfig:type_name -> webapi.PermitLevelConfig + 65, // 62: webapi.PermitChannelConfig.ExchangeConfig:type_name -> webapi.PermitExchangeConfig + 66, // 63: webapi.PermitChannelConfig.RankConfig:type_name -> webapi.PermitRankConfig + 67, // 64: webapi.ActPermitConfig.Configs:type_name -> webapi.PermitChannelConfig + 71, // 65: webapi.DiamondLotteryPlayers.Award:type_name -> webapi.AwardData + 69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo + 70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers + 72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData + 101, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem + 32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo + 75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo + 76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo + 98, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry + 99, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry + 78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel + 79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem + 82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData + 84, // 78: webapi.AwardLogConfig.AnnouncerLog:type_name -> webapi.AnnouncerLogInfo + 83, // 79: webapi.AwardLogData.AwardLog:type_name -> webapi.AwardLogInfo + 32, // 80: webapi.RoomConfig.Cost:type_name -> webapi.ItemInfo + 32, // 81: webapi.RoomConfig.Reward:type_name -> webapi.ItemInfo + 82, // [82:82] is the sub-list for method output_type + 82, // [82:82] is the sub-list for method input_type + 82, // [82:82] is the sub-list for extension type_name + 82, // [82:82] is the sub-list for extension extendee + 0, // [0:82] is the sub-list for field type_name } func init() { file_common_proto_init() } @@ -10811,7 +11164,7 @@ func file_common_proto_init() { } } file_common_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineConfig); i { + switch v := v.(*MatchAudience); i { case 0: return &v.state case 1: @@ -10823,7 +11176,31 @@ func file_common_proto_init() { } } file_common_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MachineInfo); i { + switch v := v.(*SpiritConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoomType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoomConfig); i { case 0: return &v.state case 1: @@ -10841,7 +11218,7 @@ func file_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_proto_rawDesc, NumEnums: 0, - NumMessages: 98, + NumMessages: 100, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index e34b8b3..66d4c4b 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -225,12 +225,12 @@ message ModInfo { message RoomInfo{ string Platform = 1; - int32 SceneId = 2;//场景id + int32 SceneId = 2;//房间id int32 GameId = 3;//游戏id int32 GameMode = 4;//游戏模式 int32 SceneMode = 5;//房间模式,参考common.SceneMode_XXX int32 GroupId = 6;//组id - int32 GameFreeId = 7; + int32 GameFreeId = 7; // 场次id int32 SrvId = 8;//服务器id int32 Creator = 9;//创建者账号id int32 Agentor = 10;//代理者id @@ -242,7 +242,14 @@ message RoomInfo{ int32 Start = 16;//0.等待 1.游戏中 int64 CreateTime = 17;//创建时间 int32 BaseScore = 18;//底分 + int32 RoomConfigId = 19;//房间配置id + int32 CurrRound = 20;//当前局数 + int32 MaxRound = 21;//最大局数 + string Password = 22;// 密码 + int32 CostType = 23;// 付费方式 1房主 2AA + int32 Voice = 24;// 语音开关 1开启 } + message PlayerSingleAdjust{ string Id = 1; string Platform = 2; @@ -490,6 +497,7 @@ message GameMatchDate { int32 CardType = 24; // 手机卡类型 int32 ShowId = 25; // 比赛区分 int32 AwardNum = 26; //比赛奖励剩余数量 + int32 AudienceSwitch = 27; // 观战开关 1开启 2关闭 } // etcd /game/game_match @@ -898,8 +906,50 @@ message MachineConfig{ repeated MachineInfo Info = 2; } message MachineInfo{ - int32 MachineId = 1; //娃娃机Id - int64 AppId = 2; - string ServerSecret = 3; - string StreamId = 4; + int32 MachineId = 1; //娃娃机Id + int64 AppId = 2; + string ServerSecret = 3; + string StreamId = 4; +} +// etcd /game/match_audience +message MatchAudience { + string Platform = 1; // 平台 + int32 SnId = 2; // 玩家ID + int64 Ts = 3; // 时间戳 +} + +// etcd /game/spirit +message SpiritConfig { + string Platform = 1; // 平台 + int32 On = 2; // 精灵开关 1开启 2关闭 + string Url = 3; +} + +// etcd /game/room_type +message RoomType { + string Platform = 1; // 平台 + int32 Id = 2; // 配置ID + string Name = 3; // 类型名称 + int32 On = 4; // 开关 1开启 2关闭 + int32 SortId = 5; // 排序ID +} + +// etcd /game/room_config +message RoomConfig { + string Platform = 1; // 平台 + int32 Id = 2; // 配置id + string Name = 3; // 配置名称 + int32 RoomType = 4; // 房间类型id + int32 On = 5; // 开关 1开启 2关闭 + int32 SortId = 6; // 排序ID + repeated ItemInfo Cost = 7; // 进入房间消耗 + repeated ItemInfo Reward = 8; // 进入房间奖励 + repeated string OnChannelName = 9; // 开启的渠道名称 + repeated int32 GameFreeId = 10; // 场次id + repeated int32 Round = 11; // 局数 + repeated int32 PlayerNum = 12; // 人数 + int32 NeedPassword = 13; // 是否需要密码 1是 2否 3自定义 + int32 CostType = 14; // 消耗类型 1AA 2房主 3自定义 + int32 Voice = 15; // 是否开启语音 1是 2否 3自定义 + string ImageURI = 16; // 奖励图片 } \ No newline at end of file diff --git a/protocol/webapi/webapi.pb.go b/protocol/webapi/webapi.pb.go index 3182d25..2480f77 100644 --- a/protocol/webapi/webapi.pb.go +++ b/protocol/webapi/webapi.pb.go @@ -37,6 +37,7 @@ const ( TagCode_TelExist TagCode = 9 // 手机号已存在 TagCode_AccountNotFound TagCode = 10 // 账号未找到 TagCode_TelNotBind TagCode = 11 // 手机号未绑定 + TagCode_NotFound TagCode = 12 // 未找到 ) // Enum value maps for TagCode. @@ -54,6 +55,7 @@ var ( 9: "TelExist", 10: "AccountNotFound", 11: "TelNotBind", + 12: "NotFound", } TagCode_value = map[string]int32{ "UNKNOWN": 0, @@ -68,6 +70,7 @@ var ( "TelExist": 9, "AccountNotFound": 10, "TelNotBind": 11, + "NotFound": 12, } ) @@ -1804,17 +1807,19 @@ type ASListRoom struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` - GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` - GameMode int32 `protobuf:"varint,3,opt,name=GameMode,proto3" json:"GameMode,omitempty"` - GroupId int32 `protobuf:"varint,4,opt,name=GroupId,proto3" json:"GroupId,omitempty"` - SnId int32 `protobuf:"varint,5,opt,name=SnId,proto3" json:"SnId,omitempty"` - SceneId int32 `protobuf:"varint,6,opt,name=SceneId,proto3" json:"SceneId,omitempty"` - PageNo int32 `protobuf:"varint,7,opt,name=PageNo,proto3" json:"PageNo,omitempty"` - PageSize int32 `protobuf:"varint,8,opt,name=PageSize,proto3" json:"PageSize,omitempty"` - ClubId int32 `protobuf:"varint,9,opt,name=ClubId,proto3" json:"ClubId,omitempty"` - RoomType int32 `protobuf:"varint,10,opt,name=RoomType,proto3" json:"RoomType,omitempty"` //roomType=0所有房间,roomType=1俱乐部房间,roomType=2个人房间 - GamefreeId int32 `protobuf:"varint,11,opt,name=GamefreeId,proto3" json:"GamefreeId,omitempty"` + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` + GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` + GameMode int32 `protobuf:"varint,3,opt,name=GameMode,proto3" json:"GameMode,omitempty"` + GroupId int32 `protobuf:"varint,4,opt,name=GroupId,proto3" json:"GroupId,omitempty"` + SnId int32 `protobuf:"varint,5,opt,name=SnId,proto3" json:"SnId,omitempty"` + SceneId int32 `protobuf:"varint,6,opt,name=SceneId,proto3" json:"SceneId,omitempty"` + PageNo int32 `protobuf:"varint,7,opt,name=PageNo,proto3" json:"PageNo,omitempty"` + PageSize int32 `protobuf:"varint,8,opt,name=PageSize,proto3" json:"PageSize,omitempty"` + ClubId int32 `protobuf:"varint,9,opt,name=ClubId,proto3" json:"ClubId,omitempty"` + RoomType int32 `protobuf:"varint,10,opt,name=RoomType,proto3" json:"RoomType,omitempty"` //roomType=0所有房间,roomType=1俱乐部房间,roomType=2个人房间 + GamefreeId int32 `protobuf:"varint,11,opt,name=GamefreeId,proto3" json:"GamefreeId,omitempty"` + IsCustom int32 `protobuf:"varint,12,opt,name=IsCustom,proto3" json:"IsCustom,omitempty"` // 房卡场 1是 + RoomConfigId int32 `protobuf:"varint,13,opt,name=RoomConfigId,proto3" json:"RoomConfigId,omitempty"` // 房间玩法id } func (x *ASListRoom) Reset() { @@ -1926,6 +1931,20 @@ func (x *ASListRoom) GetGamefreeId() int32 { return 0 } +func (x *ASListRoom) GetIsCustom() int32 { + if x != nil { + return x.IsCustom + } + return 0 +} + +func (x *ASListRoom) GetRoomConfigId() int32 { + if x != nil { + return x.RoomConfigId + } + return 0 +} + type SAListRoom struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -9153,6 +9172,196 @@ func (x *WindowsInfo) GetGainNum() int32 { return 0 } +// 获取对局详情 /api/game/room_info +type ASRoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` // 房间id +} + +func (x *ASRoomInfo) Reset() { + *x = ASRoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ASRoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ASRoomInfo) ProtoMessage() {} + +func (x *ASRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[134] + 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 ASRoomInfo.ProtoReflect.Descriptor instead. +func (*ASRoomInfo) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{134} +} + +func (x *ASRoomInfo) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +type RoundInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Round int32 `protobuf:"varint,1,opt,name=Round,proto3" json:"Round,omitempty"` //局数 + Ts int64 `protobuf:"varint,2,opt,name=Ts,proto3" json:"Ts,omitempty"` //结束时间 + Score []int64 `protobuf:"varint,3,rep,packed,name=Score,proto3" json:"Score,omitempty"` //分数 + LogId string `protobuf:"bytes,4,opt,name=LogId,proto3" json:"LogId,omitempty"` // 牌局记录id +} + +func (x *RoundInfo) Reset() { + *x = RoundInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoundInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoundInfo) ProtoMessage() {} + +func (x *RoundInfo) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[135] + 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 RoundInfo.ProtoReflect.Descriptor instead. +func (*RoundInfo) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{135} +} + +func (x *RoundInfo) GetRound() int32 { + if x != nil { + return x.Round + } + return 0 +} + +func (x *RoundInfo) GetTs() int64 { + if x != nil { + return x.Ts + } + return 0 +} + +func (x *RoundInfo) GetScore() []int64 { + if x != nil { + return x.Score + } + return nil +} + +func (x *RoundInfo) GetLogId() string { + if x != nil { + return x.LogId + } + return "" +} + +type SARoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tag TagCode `protobuf:"varint,1,opt,name=Tag,proto3,enum=webapi.TagCode" json:"Tag,omitempty"` //错误码 + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` //错误信息 + SnId []int32 `protobuf:"varint,3,rep,packed,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id + List []*RoundInfo `protobuf:"bytes,4,rep,name=List,proto3" json:"List,omitempty"` // 每局结算 +} + +func (x *SARoomInfo) Reset() { + *x = SARoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SARoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SARoomInfo) ProtoMessage() {} + +func (x *SARoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[136] + 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 SARoomInfo.ProtoReflect.Descriptor instead. +func (*SARoomInfo) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{136} +} + +func (x *SARoomInfo) GetTag() TagCode { + if x != nil { + return x.Tag + } + return TagCode_UNKNOWN +} + +func (x *SARoomInfo) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *SARoomInfo) GetSnId() []int32 { + if x != nil { + return x.SnId + } + return nil +} + +func (x *SARoomInfo) GetList() []*RoundInfo { + if x != nil { + return x.List + } + return nil +} + var File_webapi_proto protoreflect.FileDescriptor var file_webapi_proto_rawDesc = []byte{ @@ -9344,7 +9553,7 @@ var file_webapi_proto_rawDesc = []byte{ 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xac, 0x02, 0x0a, 0x0a, 0x41, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xec, 0x02, 0x0a, 0x0a, 0x41, 0x53, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 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, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, @@ -9363,7 +9572,11 @@ var file_webapi_proto_rawDesc = []byte{ 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x66, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x66, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x0a, 0x53, 0x41, + 0x61, 0x6d, 0x65, 0x66, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x73, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, + 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x0a, 0x53, 0x41, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 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, 0x10, 0x0a, 0x03, 0x4d, @@ -10141,23 +10354,40 @@ var file_webapi_proto_rawDesc = []byte{ 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x74, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x2a, 0xce, 0x01, 0x0a, - 0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, - 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14, - 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, - 0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, - 0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65, - 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, - 0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 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, 0x05, 0x52, 0x07, 0x47, 0x61, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x22, 0x24, 0x0a, 0x0a, + 0x41, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x22, 0x5d, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, + 0x6f, 0x67, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, + 0x64, 0x22, 0x7c, 0x0a, 0x0a, 0x53, 0x41, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 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, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, + 0xdc, 0x01, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, + 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, + 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, + 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, + 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, + 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, + 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, + 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0c, 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 ( @@ -10173,7 +10403,7 @@ func file_webapi_proto_rawDescGZIP() []byte { } var file_webapi_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 134) +var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 137) var file_webapi_proto_goTypes = []interface{}{ (TagCode)(0), // 0: webapi.TagCode (*SAPlatformInfo)(nil), // 1: webapi.SAPlatformInfo @@ -10310,93 +10540,96 @@ var file_webapi_proto_goTypes = []interface{}{ (*ASPopUpWindowsConfig)(nil), // 132: webapi.ASPopUpWindowsConfig (*SAPopUpWindowsConfig)(nil), // 133: webapi.SAPopUpWindowsConfig (*WindowsInfo)(nil), // 134: webapi.WindowsInfo - (*Platform)(nil), // 135: webapi.Platform - (*PlatformGameConfig)(nil), // 136: webapi.PlatformGameConfig - (*GameConfigGroup)(nil), // 137: webapi.GameConfigGroup - (*GameConfigGlobal)(nil), // 138: webapi.GameConfigGlobal - (*PlatformDbConfig)(nil), // 139: webapi.PlatformDbConfig - (*CoinPoolSetting)(nil), // 140: webapi.CoinPoolSetting - (*RoomInfo)(nil), // 141: webapi.RoomInfo - (*PlayerSingleAdjust)(nil), // 142: webapi.PlayerSingleAdjust - (*PlayerData)(nil), // 143: webapi.PlayerData - (*HorseRaceLamp)(nil), // 144: webapi.HorseRaceLamp - (*MessageInfo)(nil), // 145: webapi.MessageInfo - (*ServerInfo)(nil), // 146: webapi.ServerInfo - (*OnlineReport)(nil), // 147: webapi.OnlineReport - (*ItemInfo)(nil), // 148: webapi.ItemInfo - (*ExchangeShop)(nil), // 149: webapi.ExchangeShop - (*ShopWeight)(nil), // 150: webapi.ShopWeight + (*ASRoomInfo)(nil), // 135: webapi.ASRoomInfo + (*RoundInfo)(nil), // 136: webapi.RoundInfo + (*SARoomInfo)(nil), // 137: webapi.SARoomInfo + (*Platform)(nil), // 138: webapi.Platform + (*PlatformGameConfig)(nil), // 139: webapi.PlatformGameConfig + (*GameConfigGroup)(nil), // 140: webapi.GameConfigGroup + (*GameConfigGlobal)(nil), // 141: webapi.GameConfigGlobal + (*PlatformDbConfig)(nil), // 142: webapi.PlatformDbConfig + (*CoinPoolSetting)(nil), // 143: webapi.CoinPoolSetting + (*RoomInfo)(nil), // 144: webapi.RoomInfo + (*PlayerSingleAdjust)(nil), // 145: webapi.PlayerSingleAdjust + (*PlayerData)(nil), // 146: webapi.PlayerData + (*HorseRaceLamp)(nil), // 147: webapi.HorseRaceLamp + (*MessageInfo)(nil), // 148: webapi.MessageInfo + (*ServerInfo)(nil), // 149: webapi.ServerInfo + (*OnlineReport)(nil), // 150: webapi.OnlineReport + (*ItemInfo)(nil), // 151: webapi.ItemInfo + (*ExchangeShop)(nil), // 152: webapi.ExchangeShop + (*ShopWeight)(nil), // 153: webapi.ShopWeight } var file_webapi_proto_depIdxs = []int32{ 0, // 0: webapi.ASPlatformInfo.Tag:type_name -> webapi.TagCode - 135, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform + 138, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform 0, // 2: webapi.ASGameConfig.Tag:type_name -> webapi.TagCode - 136, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig + 139, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig 0, // 4: webapi.ASGameConfigGroup.Tag:type_name -> webapi.TagCode - 137, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup + 140, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup 0, // 6: webapi.ASGameConfigGlobal.Tag:type_name -> webapi.TagCode - 138, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal + 141, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal 0, // 8: webapi.ASDbConfig.Tag:type_name -> webapi.TagCode - 139, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig - 135, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform + 142, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig + 138, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform 0, // 11: webapi.SAUpdatePlatform.Tag:type_name -> webapi.TagCode - 138, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal + 141, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal 0, // 13: webapi.SAUpdateGameConfigGlobal.Tag:type_name -> webapi.TagCode - 136, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig + 139, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig 0, // 15: webapi.SAUpdateGameConfig.Tag:type_name -> webapi.TagCode - 137, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup + 140, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup 0, // 17: webapi.SAUpdateGameConfigGroup.Tag:type_name -> webapi.TagCode 0, // 18: webapi.SAAddCoinById.Tag:type_name -> webapi.TagCode 0, // 19: webapi.SAResetGamePool.Tag:type_name -> webapi.TagCode - 140, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 143, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting 0, // 21: webapi.SAUpdateGamePool.Tag:type_name -> webapi.TagCode 0, // 22: webapi.SAQueryGamePoolByGameId.Tag:type_name -> webapi.TagCode - 140, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting - 140, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 143, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 143, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting 0, // 25: webapi.SAQueryAllGamePool.Tag:type_name -> webapi.TagCode 26, // 26: webapi.SAQueryAllGamePool.CoinPoolStatesInfo:type_name -> webapi.CoinPoolStatesInfo 0, // 27: webapi.SAListRoom.Tag:type_name -> webapi.TagCode - 141, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo + 144, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo 0, // 29: webapi.SAGetRoom.Tag:type_name -> webapi.TagCode - 141, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo + 144, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo 0, // 31: webapi.SADestroyRoom.Tag:type_name -> webapi.TagCode - 142, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust + 145, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust 0, // 33: webapi.SASinglePlayerAdjust.Tag:type_name -> webapi.TagCode - 142, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust + 145, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust 0, // 35: webapi.SAGetPlayerData.Tag:type_name -> webapi.TagCode - 143, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData + 146, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData 0, // 37: webapi.SAMorePlayerData.Tag:type_name -> webapi.TagCode - 143, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData + 146, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData 0, // 39: webapi.SAKickPlayer.Tag:type_name -> webapi.TagCode 42, // 40: webapi.ASUpdatePlayerElement.PlayerEleArgs:type_name -> webapi.PlayerEleArgs 0, // 41: webapi.SAUpdatePlayerElement.Tag:type_name -> webapi.TagCode 0, // 42: webapi.SAWhiteBlackControl.Tag:type_name -> webapi.TagCode 0, // 43: webapi.SAQueryHorseRaceLampList.Tag:type_name -> webapi.TagCode - 144, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 147, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp 0, // 45: webapi.SACreateHorseRaceLamp.Tag:type_name -> webapi.TagCode 0, // 46: webapi.SAGetHorseRaceLampById.Tag:type_name -> webapi.TagCode - 144, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp - 144, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 147, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 147, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp 0, // 49: webapi.SAEditHorseRaceLamp.Tag:type_name -> webapi.TagCode 0, // 50: webapi.SARemoveHorseRaceLampById.Tag:type_name -> webapi.TagCode 0, // 51: webapi.SABlackBySnId.Tag:type_name -> webapi.TagCode 0, // 52: webapi.SACreateShortMessage.Tag:type_name -> webapi.TagCode 0, // 53: webapi.SAQueryShortMessageList.Tag:type_name -> webapi.TagCode - 145, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo + 148, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo 0, // 55: webapi.SADeleteShortMessage.Tag:type_name -> webapi.TagCode 0, // 56: webapi.SAQueryOnlineReportList.Tag:type_name -> webapi.TagCode - 143, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData + 146, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData 0, // 58: webapi.SASrvCtrlClose.Tag:type_name -> webapi.TagCode 0, // 59: webapi.SASrvCtrlNotice.Tag:type_name -> webapi.TagCode 0, // 60: webapi.SASrvCtrlStartScript.Tag:type_name -> webapi.TagCode 0, // 61: webapi.SAListServerStates.Tag:type_name -> webapi.TagCode - 146, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo + 149, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo 0, // 63: webapi.SAServerStateSwitch.Tag:type_name -> webapi.TagCode 0, // 64: webapi.SAResetEtcdData.Tag:type_name -> webapi.TagCode 0, // 65: webapi.SAOnlineReportTotal.Tag:type_name -> webapi.TagCode - 147, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport + 150, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport 0, // 67: webapi.SAAddCoinByIdAndPT.Tag:type_name -> webapi.TagCode - 148, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo + 151, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo 83, // 69: webapi.ASCreateJYB.Award:type_name -> webapi.JybInfoAward 0, // 70: webapi.SACreateJYB.Tag:type_name -> webapi.TagCode 0, // 71: webapi.SAUpdateJYB.Tag:type_name -> webapi.TagCode @@ -10408,10 +10641,10 @@ var file_webapi_proto_depIdxs = []int32{ 94, // 77: webapi.SAGetExchangeOrder.OrderList:type_name -> webapi.ExchangeOrderInfo 0, // 78: webapi.SAUpExchangeStatus.Tag:type_name -> webapi.TagCode 0, // 79: webapi.SAGetExchangeShop.Tag:type_name -> webapi.TagCode - 149, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop - 150, // 81: webapi.SAGetExchangeShop.Weight:type_name -> webapi.ShopWeight + 152, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop + 153, // 81: webapi.SAGetExchangeShop.Weight:type_name -> webapi.ShopWeight 0, // 82: webapi.SAThdUpdatePlayerCoin.Tag:type_name -> webapi.TagCode - 148, // 83: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo + 151, // 83: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo 0, // 84: webapi.SACallbackPayment.Tag:type_name -> webapi.TagCode 0, // 85: webapi.SAResource.Tag:type_name -> webapi.TagCode 0, // 86: webapi.SASendSms.Tag:type_name -> webapi.TagCode @@ -10420,17 +10653,19 @@ var file_webapi_proto_depIdxs = []int32{ 0, // 89: webapi.SAGetImgVerify.Tag:type_name -> webapi.TagCode 0, // 90: webapi.SAPlayerDelete.Tag:type_name -> webapi.TagCode 0, // 91: webapi.SAPlayerInviteLink.Tag:type_name -> webapi.TagCode - 148, // 92: webapi.ASAddItemById.ItemInfo:type_name -> webapi.ItemInfo + 151, // 92: webapi.ASAddItemById.ItemInfo:type_name -> webapi.ItemInfo 0, // 93: webapi.SAAddItemById.Tag:type_name -> webapi.TagCode 130, // 94: webapi.SASMSConfig.Info:type_name -> webapi.SMSInfo 0, // 95: webapi.SASMSConfig.Tag:type_name -> webapi.TagCode 134, // 96: webapi.SAPopUpWindowsConfig.Info:type_name -> webapi.WindowsInfo 0, // 97: webapi.SAPopUpWindowsConfig.Tag:type_name -> webapi.TagCode - 98, // [98:98] is the sub-list for method output_type - 98, // [98:98] is the sub-list for method input_type - 98, // [98:98] is the sub-list for extension type_name - 98, // [98:98] is the sub-list for extension extendee - 0, // [0:98] is the sub-list for field type_name + 0, // 98: webapi.SARoomInfo.Tag:type_name -> webapi.TagCode + 136, // 99: webapi.SARoomInfo.List:type_name -> webapi.RoundInfo + 100, // [100:100] is the sub-list for method output_type + 100, // [100:100] is the sub-list for method input_type + 100, // [100:100] is the sub-list for extension type_name + 100, // [100:100] is the sub-list for extension extendee + 0, // [0:100] is the sub-list for field type_name } func init() { file_webapi_proto_init() } @@ -12048,6 +12283,42 @@ func file_webapi_proto_init() { return nil } } + file_webapi_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ASRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_webapi_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoundInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_webapi_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SARoomInfo); 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{ @@ -12055,7 +12326,7 @@ func file_webapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_webapi_proto_rawDesc, NumEnums: 1, - NumMessages: 134, + NumMessages: 137, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/webapi.proto b/protocol/webapi/webapi.proto index d0b9589..40464af 100644 --- a/protocol/webapi/webapi.proto +++ b/protocol/webapi/webapi.proto @@ -35,6 +35,7 @@ enum TagCode { TelExist =9; // 手机号已存在 AccountNotFound =10; // 账号未找到 TelNotBind =11; // 手机号未绑定 + NotFound =12; // 未找到 } // =================================================== @@ -279,6 +280,8 @@ message ASListRoom{ int32 ClubId = 9; int32 RoomType = 10;//roomType=0所有房间,roomType=1俱乐部房间,roomType=2个人房间 int32 GamefreeId = 11; + int32 IsCustom = 12; // 房卡场 1是 + int32 RoomConfigId = 13; // 房间玩法id } message SAListRoom{ TagCode Tag = 1; //错误码 @@ -970,3 +973,21 @@ message WindowsInfo{ int32 GainNum = 5;//领取人数 } +// 获取对局详情 /api/game/room_info +message ASRoomInfo{ + int32 RoomId = 1; // 房间id +} + +message RoundInfo{ + int32 Round = 1; //局数 + int64 Ts = 2; //结束时间 + repeated int64 Score = 3; //分数 + string LogId = 4; // 牌局记录id +} + +message SARoomInfo{ + TagCode Tag = 1; //错误码 + string Msg = 2; //错误信息 + repeated int32 SnId = 3; // 玩家id + repeated RoundInfo List = 4; // 每局结算 +} diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index ad535f0..1975421 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -286,12 +286,13 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e if isF { pack.RetCode = bag.OpResultCode_OPRC_Sucess if item.SaleGold > 0 { + n := int64(item.SaleGold) * int64(msg.ItemNum) if item.SaleType == 1 { - p.AddCoin(int64(item.SaleGold*msg.ItemNum), 0, common.GainWay_Item_Sale, "sys", remark) - pack.Coin = int64(item.SaleGold * msg.ItemNum) + p.AddCoin(n, 0, common.GainWay_Item_Sale, "sys", remark) + pack.Coin = n } else if item.SaleType == 2 { - p.AddDiamond(int64(item.SaleGold*msg.ItemNum), 0, common.GainWay_Item_Sale, "sys", remark) - pack.Diamond = int64(item.SaleGold * msg.ItemNum) + p.AddDiamond(n, 0, common.GainWay_Item_Sale, "sys", remark) + pack.Diamond = n } } pack.NowItemId = item.ItemId @@ -307,9 +308,9 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e send() return nil } - bagInfo, _, isF := BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, - Change: []*Item{ + bagInfo, _, isF := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: []*model.Item{ { ItemId: msg.GetItemId(), ItemNum: -1, @@ -318,7 +319,7 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e GainWay: common.GainWayItemChange, Operator: "system", Remark: "背包内使用兑换", - noLog: false, + NoLog: false, }) if isF { pack.RetCode = bag.OpResultCode_OPRC_Sucess @@ -332,9 +333,9 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e logger.Logger.Trace("道具分解", msg.ItemId) itemInfo := srvdata.GameItemMgr.Get(p.Platform, msg.ItemId) if msg.ItemNum > 0 && itemInfo != nil { - _, _, isF := BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, - Change: []*Item{ + _, _, isF := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: []*model.Item{ { ItemId: msg.GetItemId(), ItemNum: int64(-msg.GetItemNum()), @@ -343,23 +344,23 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e GainWay: common.GainWayItemFen, Operator: "system", Remark: fmt.Sprintf("道具分解%v", msg.GetItemId()), - noLog: false, + NoLog: false, }) if isF { pack.RetCode = bag.OpResultCode_OPRC_Sucess - var changeItems []*Item + var changeItems []*model.Item for k, v := range itemInfo.GetGain() { if v > 0 { - changeItems = append(changeItems, &Item{ + changeItems = append(changeItems, &model.Item{ ItemId: int32(k), ItemNum: v * int64(msg.GetItemNum()), }) } } - BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: changeItems, - Cost: []*model.ItemInfo{ + Cost: []*model.Item{ { ItemId: msg.GetItemId(), ItemNum: int64(msg.GetItemNum()), diff --git a/worldsrv/action_friend.go b/worldsrv/action_friend.go index 13dc9e9..981a779 100644 --- a/worldsrv/action_friend.go +++ b/worldsrv/action_friend.go @@ -492,7 +492,7 @@ func (this *CSInviteFriendOpHandler) Process(s *netlib.Session, packetid int, da dbGameFree := scene.dbGameFree if dbGameFree != nil { - limitCoin := srvdata.CreateRoomMgrSington.GetLimitCoinByBaseScore(int32(scene.gameId), int32(scene.gameSite), scene.BaseScore) + limitCoin := srvdata.CreateRoomMgrSington.GetLimitCoinByBaseScore(int32(scene.gameId), scene.dbGameFree.GetSceneType(), scene.BaseScore) if p.Coin < limitCoin { logger.Logger.Warn("CSInviteFriendHandler player limitCoin") opRetCode = friend.OpResultCode_OPRC_InviteFriend_CoinLimit //金币不足 diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 280177e..7785ce8 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -1,25 +1,23 @@ package main import ( - "errors" "fmt" "math/rand" + "slices" "time" - webapi_proto "mongo.games.com/game/protocol/webapi" + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/task" "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/gamehall" - "mongo.games.com/game/protocol/player" "mongo.games.com/game/protocol/server" + webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" - "mongo.games.com/game/webapi" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/core/task" ) type CSEnterRoomPacketFactory struct { @@ -49,7 +47,7 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in var roomId int var gameId int var gameMode int - var cfg *webapi_proto.GameFree + var cfg *webapiproto.GameFree oldPlatform := p.Platform // 进入原来的房间 @@ -99,11 +97,18 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in goto failed } + // 密码是否正确 + if scene.GetPassword() != "" && scene.GetPassword() != msg.GetPassword() { + code = gamehall.OpResultCode_Game_OPRC_PasswordError + logger.Logger.Trace("CSEnterRoomHandler password error") + goto failed + } + dbGameFree = scene.dbGameFree if dbGameFree != nil { if common.IsLocalGame(scene.gameId) { if !p.IsRob { - limitCoin := srvdata.CreateRoomMgrSington.GetLimitCoinByBaseScore(int32(scene.gameId), int32(scene.gameSite), scene.BaseScore) + limitCoin := srvdata.CreateRoomMgrSington.GetLimitCoinByBaseScore(int32(scene.gameId), scene.dbGameFree.GetSceneType(), scene.BaseScore) if p.Coin < limitCoin { code = gamehall.OpResultCode_Game_OPRC_CoinNotEnough_Game logger.Logger.Trace("CSEnterRoomHandler scene is closed") @@ -148,9 +153,8 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in } skinId := int32(300001) var tm *TmMatch - if len(scene.params) > 3 { - sortId := scene.params[0] - tm = TournamentMgr.GetTm(sortId) + if scene.MatchSortId > 0 { + tm = TournamentMgr.GetTm(scene.MatchSortId) if tm != nil && tm.copyRobotGrades != nil && len(tm.copyRobotGrades) > 0 { randIndex := rand.Intn(len(tm.copyRobotGrades)) grade = tm.copyRobotGrades[randIndex].grade @@ -186,88 +190,6 @@ failed: return nil } -type CSAudienceEnterRoomHandler struct { -} - -func (this *CSAudienceEnterRoomHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSAudienceEnterRoomHandler Process recv ", data) - if msg, ok := data.(*gamehall.CSEnterRoom); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - return nil - } - var code = gamehall.OpResultCode_Game_OPRC_Sucess_Game - var sp ScenePolicy - var dbGameFree *server.DB_GameFree - var cfg *webapi_proto.GameFree - scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) - if scene == nil { - code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game - logger.Logger.Trace("CSAudienceEnterRoomHandler scene == nil") - goto failed - } - if scene.IsMatchScene() { - code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game - logger.Logger.Tracef("CSAudienceEnterRoomHandler scene.IsMatchScene() %v", scene.sceneId) - goto failed - } - if p.scene != nil { - code = gamehall.OpResultCode_Game_OPRC_CannotWatchReasonInOther_Game - logger.Logger.Trace("CSAudienceEnterRoomHandler p.scene != nil") - goto failed - } - cfg = PlatformMgrSingleton.GetGameFree(p.Platform, scene.dbGameFree.Id) - if cfg != nil && (cfg.GroupId != scene.groupId || cfg.GroupId == 0) { - if scene.limitPlatform != nil { - if scene.limitPlatform.Isolated && p.Platform != scene.limitPlatform.IdStr { - code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game - logger.Logger.Tracef("CSEnterRoomHandler ScenePolicy(gameid:%v mode:%v) scene.limitPlatform.Isolated && p.Platform != scene.limitPlatform.Name", scene.gameId, scene.gameMode) - goto failed - } - } - } - //if !scene.starting { - // code = gamehall.OpResultCode_Game_OPRC_CannotWatchReasonRoomNotStart_Game - // logger.Logger.Trace("CSAudienceEnterRoomHandler !scene.starting") - // goto failed - //} - if scene.deleting { - code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game - logger.Logger.Trace("CSAudienceEnterRoomHandler scene is deleting") - goto failed - } - if scene.closed { - code = gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game - logger.Logger.Trace("CSAudienceEnterRoomHandler scene is closed") - goto failed - } - //if scene.IsCoinScene() || scene.IsHundredScene() { - // code = gamehall.OpResultCode_Game_OPRC_Error_Game - // logger.Logger.Trace("CSAudienceEnterRoomHandler scene is IsCoinScene IsHundredScene") - // goto failed - //} - - sp = GetScenePolicy(scene.gameId, scene.gameMode) - if sp == nil { - code = gamehall.OpResultCode_Game_OPRC_GameNotExist_Game - logger.Logger.Tracef("CSAudienceEnterRoomHandler ScenePolicy(gameid:%v mode:%v) not registe", scene.gameId, scene.gameMode) - goto failed - } - dbGameFree = scene.dbGameFree - code = gamehall.OpResultCode_Game(CoinSceneMgrSingleton.AudienceEnter(p, dbGameFree.GetId(), msg.GetRoomId(), nil, true)) - - failed: - if code != gamehall.OpResultCode_Game_OPRC_Sucess_Game { - resp := &gamehall.SCEnterRoom{ - OpRetCode: code, - } - proto.SetDefaults(resp) - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_ENTERROOM), resp) - } - } - return nil -} - type CSReturnRoomPacketFactory struct { } type CSReturnRoomHandler struct { @@ -307,7 +229,7 @@ func (this *CSReturnRoomHandler) Process(s *netlib.Session, packetid int, data i pack.GameId = proto.Int(scene.gameId) pack.ModeType = proto.Int(scene.gameMode) pack.Params = common.CopySliceInt64ToInt32(scene.params) - pack.HallId = proto.Int32(scene.hallId) + pack.HallId = proto.Int32(scene.dbGameFree.GetId()) gameVers := srvdata.GetGameVers(p.PackageID) if ver, ok := gameVers[fmt.Sprintf("%v,%v", scene.gameId, p.Channel)]; ok { pack.MinApkVer = proto.Int32(ver.MinApkVer) @@ -341,906 +263,6 @@ func (this *CSReturnRoomHandler) Process(s *netlib.Session, packetid int, data i return nil } -type CSJoinGamePacketFactory struct { -} -type CSJoinGameHandler struct { -} - -func (this *CSJoinGamePacketFactory) CreatePacket() interface{} { - pack := &gamehall.CSJoinGame{} - return pack -} -func (this *CSJoinGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSJoinGameHandler Process recv ", data) - if msg, ok := data.(*gamehall.CSJoinGame); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSJoinGameHandler p == nil") - return nil - } - if p.scene == nil { - logger.Logger.Warn("CSJoinGameHandler scene == nil") - return nil - } - - newPlayer := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) - if newPlayer != nil { - pack := &gamehall.SCJoinGame{ - MsgType: proto.Int32(msg.GetMsgType()), - OpRetCode: gamehall.OpResultCode_Game(0), - } - if !p.scene.IsTestScene() { - // 入场限额检查 - if p.scene.dbGameFree.GetLimitCoin() != 0 && int64(p.scene.dbGameFree.GetLimitCoin()) > p.Coin { - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_MoneyNotEnough_Game - newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack) - return nil - } - // 携带金币检查 - if p.scene.dbGameFree.GetMaxCoinLimit() != 0 && int64(p.scene.dbGameFree.GetMaxCoinLimit()) < p.Coin && !p.IsRob { - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_CoinTooMore_Game - newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack) - return nil - } - } - // 是否还有空座位 - if p.scene.IsFull() { - pack.OpRetCode = gamehall.OpResultCode_Game(1) - newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack) - return nil - } - p.scene.AudienceSit(newPlayer, -1) - newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_JOINGAME), pack) - } - } - return nil -} - -type CSGetDataLogPacketFactory struct { -} -type CSGetDataLogHandler struct { -} - -func (this *CSGetDataLogPacketFactory) CreatePacket() interface{} { - pack := &player.CSGetDataLog{} - return pack -} - -func (this *CSGetDataLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSGetDataLogHandler Process recv ", data) - if msg, ok := data.(*player.CSGetDataLog); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSGetDataLogHandler p == nil") - return nil - } - ts := int64(msg.GetVer()) - if ts == 0 { - ts = time.Now().Unix() - } - type LogData struct { - datas []model.CoinLog - err error - } - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - datas, err := model.GetCoinLogBySnidAndLessTs(p.Platform, p.SnId, ts) - return &LogData{datas: datas, err: err} - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - if d, ok := data.(*LogData); ok { - if d != nil && d.err == nil { - pack := &player.SCGetDataLog{ - DataType: msg.DataType, - } - ver := msg.GetVer() - for i := 0; i < len(d.datas); i++ { - ts := d.datas[i].Time.Unix() - if int32(ts) < ver { - ver = int32(ts) - } - pack.Datas = append(pack.Datas, &player.DataLog{ - LogType: proto.Int32(d.datas[i].LogType), - ChangeCount: proto.Int64(d.datas[i].Count), - RestCount: proto.Int64(d.datas[i].RestCount), - Remark: proto.String(d.datas[i].Remark), - Ts: proto.Int32(int32(ts)), - }) - } - pack.Ver = proto.Int32(ver) - proto.SetDefaults(pack) - p.SendToClient(int(player.PlayerPacketID_PACKET_SC_GETDATALOG), pack) - } - } - }), "GetCoinLogBySnidAndLessTs").StartByFixExecutor("coinlog_r") - } - return nil -} - -// 第三方-->系统 -func _LeaveTransferThird2SystemTask(p *Player) { - - if p.thrscene == 0 { - logger.Logger.Tracef("player snid=%v TransferThird2SystemTask p.thrscene == 0 return", p.SnId) - return - } - - //if p.thrscene.sceneMode != int(common.SceneMode_Thr) { - // logger.Logger.Infof("player snid=%v TransferThird2SystemTask p.scene == thrID return", p.SnId) - // return - //} - - if p.thridBalanceRefreshReqing { - logger.Logger.Tracef("player snid=%v TransferThird2SystemTask p.thridBalanceRefreshReqing == true return", p.SnId) - return - } - gainway := common.GainWay_Transfer_Thrid2System - plt := webapi.ThridPlatformMgrSington.FindPlatformByPlatformBaseGameId(p.thrscene) - if plt == nil { - logger.Logger.Tracef("player snid=%v TransferThird2SystemTask plt == nil return", p.SnId) - return - } - - oper := plt.GetPlatformBase().Name + "2System" - amount := int64(0) - timeStamp := time.Now().UnixNano() - p.thridBalanceRefreshReqing = true - //timeout := false - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - for i := int32(0); i < model.GameParamData.ThirdPltTransferMaxTry; { - var err error - var coinLog *model.PayCoinLog - var coinlogex *model.CoinLog - //var apiHasTransfer = false - remark := plt.GetPlatformBase().Name + "转出到系统" - //allow := plt.ReqIsAllowTransfer(p.SnId, p.Platform, p.Channel) - //if !allow { - // goto Rollback - //} - err, amount = plt.ReqLeaveGame(p.SnId, fmt.Sprintf("%v", p.thrscene), p.Ip, p.Platform, p.Channel) - if err != nil { - goto Rollback - } - if amount <= 0 { - return nil - } - if plt.GetPlatformBase().TransferInteger { - amount = (amount / 100) * 100 - if amount <= 0 { - return nil - } - } - timeStamp = time.Now().UnixNano() - //如果請求超時的話資金就不能從三方出來,玩家的錢只會少 - //err, timeout = plt.ReqTransfer(p.SnId, -amount, strconv.FormatInt(timeStamp, 10), p.Platform, p.Channel, p.Ip) - //if err != nil || timeout { - // goto Rollback - //} - //apiHasTransfer = true - coinLog = model.NewPayCoinLog(timeStamp, int32(p.SnId), amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0) - timeStamp = coinLog.TimeStamp - err = model.InsertPayCoinLogs(p.Platform, coinLog) - if err != nil { - goto Rollback - } - coinlogex = model.NewCoinLogEx(&model.CoinLogParam{ - Platform: p.Platform, - SnID: p.SnId, - Channel: p.Channel, - ChangeType: common.BillTypeCoin, - ChangeNum: amount, - RemainNum: p.Coin + amount, - Add: 0, - LogType: int32(gainway), - GameID: 0, - GameFreeID: 0, - BaseCoin: 0, - Operator: oper, - Remark: remark, - }) - err = model.InsertCoinLog(coinlogex) - if err != nil { - goto Rollback - } - return nil - Rollback: - if coinLog != nil { - model.RemovePayCoinLog(p.Platform, coinLog.LogId) - } - if coinlogex != nil { - model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId) - } - //如果發現有任何一個超時,則就不在往下執行,因為不知道數據是否正確 - /* - if timeout { - logger.Logger.Errorf("player snid=%v third->system transfer %v timeout at try %v times,then stop try!", p.SnId, -amount, i+1) - break - } - if apiHasTransfer { - err, timeout = plt.ReqTransfer(p.SnId, amount, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel, p.Ip) - if err != nil { - logger.Logger.Errorf("player snid=%v third->system transfer rollback fail at try %v times", p.SnId, i+1) - } - } - //如果发现有任何一個超时,則就不在往下执行,因为不知道数据是否在三方已经处理 - if timeout { - logger.Logger.Errorf("player snid=%v third->system rollback transfer %v timeout at try %v times,then stop try!", p.SnId, amount, i+1) - break - } - */ - logger.Logger.Tracef("player snid=%v third->system transfer rollback at try %v times", p.SnId, i+1) - i++ - if i < model.GameParamData.ThirdPltTransferMaxTry { - time.Sleep(time.Duration(model.GameParamData.ThirdPltTransferInterval) * time.Second) - } - } - return errors.New("third->system transfer error >max try times!") - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - statePack := &gamehall.SCThridGameBalanceUpdateState{} - if data != nil { - p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = false - p.thridBalanceReqIsSucces = false - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game - logger.Logger.Trace("SCThridAccountTransferHandler third->system transfer error:", data) - } else { - p.thridBalanceReqIsSucces = true - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - // p.thrscene = nil - p.Coin += amount - p.SetPayTs(timeStamp) - p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true - //ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, thirdBalance) - } - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) - p.dirty = true - - if statePack.OpRetCode == gamehall.OpResultCode_Game_OPRC_Sucess_Game { - //退出成功 重置场景状态 - if p.thrscene != 0 { - p.thrscene = 0 - p.scene = nil - } - } - - p.thridBalanceRefreshReqing = false - p.diffData.Coin = -1 //强制更新金币 - p.SendDiffData() - return - }), "ThridAccountTransfer").Start() -} - -// 进入三方 -//type CSEnterThridGamePacketFactory struct { -//} -//type CSEnterThridGameHandler struct { -//} - -//func (this *CSEnterThridGamePacketFactory) CreatePacket() interface{} { -// pack := &gamehall.CSEnterThridGame{} -// return pack -//} - -//func (this *CSEnterThridGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { -// logger.Logger.Trace("CSEnterThridGameHandler Process recv ", data) -// p := PlayerMgrSington.GetPlayer(sid) -// if p == nil { -// logger.Logger.Warn("CSEnterThridGameHandler p == nil") -// return nil -// } -// -// if msg, ok := data.(*gamehall.CSEnterThridGame); ok { -// // msg.ThridGameId = proto.Int32(9010001) -// returnErrorCodeFunc := func(code gamehall.OpResultCode_Game) { -// pack := &gamehall.SCEnterThridGame{} -// pack.OpRetCode = code -// pack.ThridGameId = msg.ThridGameId -// p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_ENTERTHRIDGAME), pack) -// logger.Trace(pack) -// } -// //正在请求刷新余额中不能进入三方 -// if p.thridBalanceRefreshReqing { -// logger.Logger.Warn("CSEnterThridGameHandler client req thridBalanceRefreshReqing", p.SnId) -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_ThirdPltProcessing_Game) -// return nil -// } -// //msg.ThridGameId=proto.Int32(430010001) -// -// //找到对应的平台 -// thridPltGameItem, plt := ThirdPltGameMappingConfig.FindThirdInfoBySystemGameId(msg.ThridGameId) -// if thridPltGameItem == nil || plt == nil { -// logger.Logger.Infof("Player %v no platform", p.SnId) -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game) -// return nil -// } -// -// if p.thrscene != 0 && p.thrscene != plt.GetPlatformBase().BaseGameID { -// logger.Logger.Infof("Player %v in game.", p.SnId) -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_ThirdPltProcessing_Game) -// return nil -// } -// if p.isDelete { -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game) -// return nil -// } -// //pt := PlatformMgrSingleton.GetPackageTag(p.PackageID) -// //if pt != nil && pt.IsForceBind == 1 { -// // if p.BeUnderAgentCode == "" || p.BeUnderAgentCode == "0" { -// // returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_MustBindPromoter_Game) -// // return nil -// // } -// //} -// -// //检测房间状态是否开启 -// gps := PlatformMgrSingleton.GetGameFree(p.Platform, msg.GetThridGameId()) -// if gps == nil { -// logger.Logger.Infof("Player %v no cfg room close", p.SnId) -// -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game) -// return nil -// } -// dbGameFree := gps.DbGameFree -// if dbGameFree == nil { -// logger.Logger.Infof("Player %v no gamefree", p.SnId) -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game) -// return nil -// } -// pfConfig := PlatformMgrSingleton.GetPlatform(p.Platform) -// if pfConfig == nil || pfConfig.ThirdGameMerchant == nil || pfConfig.ThirdGameMerchant[int32(plt.GetPlatformBase().BaseGameID)] == 0 { -// logger.Logger.Infof("Player %v no pfcfg", p.SnId) -// -// // returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game) -// // return nil -// } -// -// //检查限额,金额不足 -// if dbGameFree.GetLimitCoin() != 0 && p.GetCoin() < int64(dbGameFree.GetLimitCoin()) { -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_CoinNotEnough_Game) -// return nil -// } -// -// //检查平台配额是否足够 -// /*if plt.GetPlatformBase().IsNeedCheckQuota { -// dgQuota := ThirdPlatformMgrSington.GetThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag) -// if dgQuota <= 0 || dgQuota <= p.GetCoin() { -// logger.Logger.Infof("Player snid %v %v platfrom Quota of game not enough.", p.SnId, plt.GetPlatformBase().Name) -// returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_Dg_QuotaNotEnough_Game) -// return nil -// } -// }*/ -// -// //检查场景是否开放或者存在,预设数据 -// //scene := SceneMgrSingleton.GetThirdScene(plt) -// //if scene != nil { -// p.thrscene = plt.GetPlatformBase().BaseGameID -// //检查场景是否开放或者存在,预设数据 -// scene := SceneMgrSingleton.GetThirdScene(plt) //仅用于占位 -// if scene != nil { -// p.scene = scene -// } -// //} else { -// // logger.Logger.Infof("Player %v no scene", p.SnId) -// -// // returnErrorCodeFunc(gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game) -// // return nil -// //} -// -// AskEnterThridGame(p, plt, thridPltGameItem, s) -// } -// return nil -//} -//func AskEnterThridGame(p *Player, plt webapi.IThirdPlatform, thridPltGameItem *server.DB_ThirdPlatformGameMapping, -// s *netlib.Session) { -// pack := &gamehall.SCEnterThridGame{} -// pack.ThridGameId = thridPltGameItem.SystemGameID -// amount := p.GetCoin() -// if plt.GetPlatformBase().TransferInteger { -// amount = (amount / 100) * 100 -// } -// p.Coin = p.GetCoin() - amount -// gainway := common.GainWay_Transfer_System2Thrid -// oper := "System2" + plt.GetPlatformBase().Name -// timeStamp := time.Now().UnixNano() -// p.thridBalanceRefreshReqing = true -// transferTimeOut := false -// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// var err error -// //var ok bool -// url := "" -// remark := "转入" + plt.GetPlatformBase().Name + thridPltGameItem.GetDesc() -// //thridPlatformCoin := int64(0) -// var coinLog *model.PayCoinLog -// var coinlogex *model.CoinLog -// /*err = ensureThridPltUserName(plt, p, amount, s.RemoteAddr()) -// if err != nil && err != webapi.ErrNoCreated { -// goto Rollback -// }*/ -// //ok = utils.RunPanicless(func() { -// err, url = enterThridPltUserName(plt, p, amount, thridPltGameItem.GetThirdGameID(), s.RemoteAddr()) -// //err, url = plt.ReqEnterGame(p.SnId, thridGameId, s.RemoteAddr(), p.Platform, p.Channel, p.Ip) -// //}) -// if err == webapi.ErrRequestTimeout { // 超时 -// transferTimeOut = true -// } -// //ok = true -// if err != nil && !transferTimeOut { -// logger.Logger.Errorf("plt.ReqEnterGame() snid:%v error: %v", p.SnId, err) -// if thrErr, ok := err.(webapi.ThirdError); ok { -// if thrErr.IsClose() { -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Thr_GameClose_Game -// } else { -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game -// } -// } else { -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game -// } -// goto Rollback -// } -// coinLog = model.NewPayCoinLog(timeStamp, int32(p.SnId), -amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0) -// timeStamp = coinLog.TimeStamp -// err = model.InsertPayCoinLogs(p.Platform, coinLog) -// if err != nil { -// goto Rollback -// } -// coinlogex = model.NewCoinLogEx(&model.CoinLogParam{ -// Platform: p.Platform, -// SnID: p.SnId, -// ChangeType: common.BillTypeCoin, -// ChangeNum: -amount, -// RemainNum: p.Coin, -// Add: 0, -// LogType: int32(gainway), -// GameID: 0, -// GameFreeID: 0, -// BaseCoin: 0, -// Operator: oper, -// Remark: remark, -// }) -// err = model.InsertCoinLog(coinlogex) -// if err != nil { -// goto Rollback -// } -// // -// //err, transferTimeOut = plt.ReqTransfer(p.SnId, amount, strconv.FormatInt(timeStamp, 10), p.Platform, p.Channel, p.Ip) -// if transferTimeOut { -// logger.Logger.Errorf("plt.ReqTransfer() snid:%v error:%v", p.SnId, err) -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game -// goto Rollback -// } -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game -// pack.ScreenOrientationType = proto.Int32(thridPltGameItem.GetScreenOrientationType()) -// pack.EnterUrl = proto.String(url) -// return nil -// Rollback: -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game -// if coinLog != nil { -// model.RemovePayCoinLog(p.Platform, coinLog.LogId) -// } -// if coinlogex != nil { -// if transferTimeOut { -// err2 := model.UpdateCoinLogRemark(coinlogex.Platform, coinlogex.LogId, plt.GetPlatformBase().Name+"需人工处理") -// if err2 != nil { -// logger.Logger.Errorf("thr UpdateCoinLogRemark(%v) error: %v", coinlogex.LogId, err2) -// } -// } else { -// model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId) -// } -// -// } -// return errors.New("system->third transfer rollback!") -// }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { -// if pack.GetOpRetCode() == gamehall.OpResultCode_Game_OPRC_Sucess_Game { -// // ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, -amount) -// p.SetPayTs(timeStamp) -// } else { -// //如帐变出现问题,就在日志里面查下面的输出信息!!! -// //如果转账超时,三方的转账是否成功就是未知的,这时不能将金币再加到玩家身上。 -// //如果出现超时问题,就需要人工对账。 -// //注意:这个地方说的超时已经包含CG工程Check订单后的超时 -// if transferTimeOut { -// logger.Logger.Errorf("CSEnterThridGameHandler player snid:%v transfer %v to %v timeout:", p.SnId, amount, plt.GetPlatformBase().Name) -// } else { -// p.Coin += amount -// } -// p.thrscene = 0 -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game -// logger.Logger.Trace("enterThridPltUserName system->third transfer error:", data) -// } -// p.dirty = true -// p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = false -// -// p.SendDiffData() -// p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_ENTERTHRIDGAME), pack) -// p.thridBalanceRefreshReqing = false -// logger.Logger.Trace("CSEnterThridGameHandler send client:", pack) -// return -// }), "CSEnterThridGameHandler").Start() -//} -// -//func ensureThridPltUserName(pltform webapi.IThirdPlatform, p *Player, amount int64, ip string) error { -// var err error -// err = pltform.ReqCreateAccount(p.SnId, p.Platform, p.Channel, p.GetIP()) -// if err != nil { -// if err != webapi.ErrNoCreated { -// logger.Logger.Errorf("Snid=%v Plt=%v ReqCreateAccount error:%v", p.SnId, pltform.GetPlatformBase().Name, err) -// } -// return err -// } -// return nil -//} - -//func enterThridPltUserName(pltform webapi.IThirdPlatform, p *Player, amount int64, gameId, ip string) (err error, url string) { -// // (snId int32, gameId string, clientIP string, platform, channel string, amount int64) -// err, url = pltform.ReqEnterGame(p.SnId, "", p.GetIP(), p.Platform, p.Channel, amount) -// if err != nil { -// if err != webapi.ErrNoCreated { -// logger.Logger.Errorf("Snid=%v Plt=%v ReqEnterGame error:%v", p.SnId, pltform.GetPlatformBase().Name, err) -// } -// return err, "" -// } -// return -//} - -// 离开三方 -//type CSLeaveThridGamePacketFactory struct { -//} -//type CSLeaveThridGameHandler struct { -//} -// -//func (this *CSLeaveThridGamePacketFactory) CreatePacket() interface{} { -// pack := &gamehall.CSLeaveThridGame{} -// return pack -//} -// -//func (this *CSLeaveThridGameHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { -// if _, ok := data.(*gamehall.CSLeaveThridGame); ok { -// p := PlayerMgrSington.GetPlayer(sid) -// if p == nil { -// logger.Logger.Warn("CSLeaveThridGameHandler p == nil") -// return nil -// } -// logger.Logger.Trace("CSLeaveThridGameHandler Process recv ", p.SnId) -// _LeaveTransferThird2SystemTask(p) -// pack := &gamehall.SCLeaveThridGame{} -// pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game -// p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_LEAVETHRIDGAME), pack) -// } -// return nil -//} - -// 刷新 -type CSThridBalanceRefreshPacketFactory struct { -} -type CSThridBalanceRefreshHandler struct { -} - -func (this *CSThridBalanceRefreshPacketFactory) CreatePacket() interface{} { - pack := &gamehall.CSThridGameBalanceUpdate{} - return pack -} -func (this *CSThridBalanceRefreshHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSThridBalanceRefreshHandler Process recv ", data) - if _, ok := data.(*gamehall.CSThridGameBalanceUpdate); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSThridBalanceRefreshHandler p == nil") - return nil - } - //if p.scene != nil { - // logger.Logger.Tracef("player snid=%v CSThridBalanceRefreshHandler p.scene != nil return", p.SnId) - // return nil - //} - - //请求太快,不做处理,给API减轻一些压力 - if p.thridBalanceRefreshReqing { - logger.Logger.Warn("CSThridBalanceRefreshHandler client req too fast") - pack := &gamehall.SCThridGameBalanceUpdate{ - OpRetCode: gamehall.OpResultCode_Game_OPRC_Error_Game, - } - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack) - return nil - } - // p.thridBalanceRefreshReqing = true - RefreshTransferThird2SystemTask(p) - /* - gainway := common.GainWay_Transfer_Thrid2System - waitgroup := webapi.ThridPlatformMgrSington.AllPlatformCount() - isSucces := true - timeout := false - - webapi.ThridPlatformMgrSington.ThridPlatformMap.Range(func(key, value interface{}) bool { - plt := value.(webapi.IThirdPlatform) - if stateOk, exist := p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name]; exist && stateOk { - waitgroup-- - if 0 == waitgroup { - statePack := &gamehall.SCThridGameBalanceUpdateState{} - pack := &gamehall.SCThridGameBalanceUpdate{} - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - p.thridBalanceReqIsSucces = true - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) - pack.Coin = proto.Int64(p.Coin) - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack) - p.thridBalanceRefreshReqing = false - } - return true - } - var tsk task.Task - tsk = task.New(nil, - task.CallableWrapper(func(o *basic.Object) interface{} { - plt := tsk.GetEnv("plt").(webapi.IThirdPlatform) - tsk.PutEnv("timeStamp", time.Now().UnixNano()) - var err error - var coinLog *model.PayCoinLog - var coinlogex *model.CoinLog - var apiHasTransfer = false - remark := "刷新" + plt.GetPlatformBase().Name + "转出到系统" - thirdBalance := int64(0) - //allow := false - if plt == nil { - logger.Logger.Tracef("player snid=%v CSThridBalanceRefreshHandler plt == nil return", p.SnId) - return int64(-1) - } - - pfConfig := PlatformMgrSingleton.GetPlatform(p.Platform) - if pfConfig == nil { - return int64(0) - } - - if pfConfig.ThirdGameMerchant == nil || pfConfig.ThirdGameMerchant[int32(plt.GetPlatformBase().BaseGameID)] == 0 { - return int64(0) - } - - oper := plt.GetPlatformBase().Name + "2System" - err = ensureThridPltUserName(plt, p, thirdBalance, s.RemoteAddr()) - if err != nil { - if err == webapi.ErrNoCreated { - return int64(0) - } - logger.Logger.Tracef("player snid=%v at %v ensureThridPltUserName() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - //allow = plt.ReqIsAllowTransfer(p.SnId, p.Platform, p.Channel) - //if !allow { - // logger.Logger.Tracef("player snid=%v at %v is not allow Transfer", p.SnId, plt.GetPlatformBase().Name) - // goto Rollback - //} - err, thirdBalance = plt.ReqUserBalance(p.SnId, p.Platform, p.Channel, p.Ip) - if err != nil { - logger.Logger.Tracef("player snid=%v at %v plt.ReqUserBalance() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - if thirdBalance <= 0 { - return int64(0) - } - if plt.GetPlatformBase().TransferInteger { - thirdBalance = (thirdBalance / 100) * 100 - if thirdBalance <= 0 { - return int64(0) - } - } - err, timeout = plt.ReqTransfer(p.SnId, -thirdBalance, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel, p.Ip) - if err != nil || timeout { - logger.Logger.Tracef("player snid=%v at %v plt.ReqTransfer() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - apiHasTransfer = true - coinLog = model.NewPayCoinLog(time.Now().UnixNano(), int32(p.SnId), thirdBalance, int32(gainway), oper, model.PayCoinLogType_Coin, 0) - tsk.PutEnv("timeStamp", coinLog.TimeStamp) - err = model.InsertPayCoinLogs(p.Platform, coinLog) - if err != nil { - logger.Logger.Tracef("player snid=%v at %v model.InsertPayCoinLogs() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - coinlogex = model.NewCoinLogEx(p.SnId, thirdBalance, p.Coin+thirdBalance, p.SafeBoxCoin, 0, int32(gainway), - 0, oper, remark, p.Platform, p.Channel, p.BeUnderAgentCode, 0, p.PackageID, int32(plt.GetPlatformBase().VultGameID)) - err = model.InsertCoinLog(coinlogex) - if err != nil { - logger.Logger.Tracef("player snid=%v at %v model.InsertCoinLogs() err: %v", p.SnId, plt.GetPlatformBase().Name, err) - goto Rollback - } - tsk.PutEnv("plt", plt) - return thirdBalance - Rollback: - if coinLog != nil { - model.RemovePayCoinLog(p.Platform, coinLog.LogId) - } - if coinlogex != nil { - model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId) - } - if timeout { - logger.Logger.Errorf("player snid=%v CSThridBalanceRefreshHandler transfer %v to %v timeout!", p.SnId, -thirdBalance, plt.GetPlatformBase().Name) - return int64(-1) - } - if apiHasTransfer { - err, timeout = plt.ReqTransfer(p.SnId, thirdBalance, strconv.FormatInt(time.Now().UnixNano(), 10), p.Platform, p.Channel, p.Ip) - if timeout { - logger.Logger.Errorf("player snid=%v CSThridBalanceRefreshHandler transfer rollback %v to %v timeout!", p.SnId, thirdBalance, plt.GetPlatformBase().Name) - } - } - return int64(-1) - }), - task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - thirdBalance := data.(int64) - plt := tsk.GetEnv("plt").(webapi.IThirdPlatform) - timeStamp := tsk.GetEnv("timeStamp").(int64) - if thirdBalance < 0 { - isSucces = false - logger.Logger.Tracef("player snid=%v at platform=%v CSThridBalanceRefreshHandler third->system transfer fail", p.SnId, plt.GetPlatformBase().Name) - } else if thirdBalance > 0 { - p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true - p.Coin += thirdBalance - p.SetPayTs(timeStamp) - //ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, thirdBalance) - p.dirty = true - logger.Logger.Tracef("player snid=%v at platform=%v CSThridBalanceRefreshHandler third->system transfer succes", p.SnId, plt.GetPlatformBase().Name) - } else { - p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true - } - if atomic.AddInt32(&waitgroup, -1) == 0 { - p.diffData.Coin = -1 - p.SendDiffData() - statePack := &gamehall.SCThridGameBalanceUpdateState{} - pack := &gamehall.SCThridGameBalanceUpdate{} - if isSucces { - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - p.thridBalanceReqIsSucces = true - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - } else { - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game - p.thridBalanceReqIsSucces = false - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game - } - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) - pack.Coin = proto.Int64(p.Coin) - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack) - p.thridBalanceRefreshReqing = false - logger.Logger.Tracef("SendToClient() player snid=%v at CSThridBalanceRefreshHandler() pack:%v", p.SnId, pack.String()) - } - }), "ThridAccount") - tsk.PutEnv("plt", value) - tsk.Start() - return true - })*/ - } - return nil -} - -// 刷新 第三方-->系统 -func RefreshTransferThird2SystemTask(p *Player) { - - /*if p.thrscene == 0 { - logger.Logger.Tracef("player snid=%v RefreshTransferThird2SystemTask p.thrscene == 0 return", p.SnId) - return - }*/ - - if p.thridBalanceRefreshReqing { - logger.Logger.Tracef("player snid=%v RefreshTransferThird2SystemTask p.thridBalanceRefreshReqing == true return", p.SnId) - return - } - gainway := common.GainWay_Transfer_Thrid2System - - amount := int64(0) - timeStamp := time.Now().UnixNano() - p.thridBalanceRefreshReqing = true - //timeout := false - webapi.ThridPlatformMgrSington.ThridPlatformMap.Range(func(key, value interface{}) bool { - // plt := value.(webapi.IThirdPlatform) - - var tsk task.Task - tsk = task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - // plt := webapi.ThridPlatformMgrSington.FindPlatformByPlatformBaseGameId(p.thrscene) - plt := tsk.GetEnv("plt").(webapi.IThirdPlatform) - if plt == nil { - logger.Logger.Tracef("player snid=%v RefreshTransferThird2SystemTask plt == nil return", p.SnId) - return errors.New("third->system plt is nil") - } - for i := int32(0); i < model.GameParamData.ThirdPltTransferMaxTry; { - var err error - var coinLog *model.PayCoinLog - var coinlogex *model.CoinLog - - oper := plt.GetPlatformBase().Name + "2System" - remark := "刷新" + plt.GetPlatformBase().Name + "转出到系统" - err, amount = plt.ReqUserBalance(p.SnId, p.Platform, p.Channel, p.Ip) - - // err, amount = plt.ReqLeaveGame(p.SnId, fmt.Sprintf("%v", p.thrscene), p.Ip, p.Platform, p.Channel) - if err != nil { - goto Rollback - } - if amount <= 0 { - return nil - } - if plt.GetPlatformBase().TransferInteger { - amount = (amount / 100) * 100 - if amount <= 0 { - return nil - } - } - timeStamp = time.Now().UnixNano() - - coinLog = model.NewPayCoinLog(timeStamp, int32(p.SnId), amount, int32(gainway), oper, model.PayCoinLogType_Coin, 0) - timeStamp = coinLog.TimeStamp - err = model.InsertPayCoinLogs(p.Platform, coinLog) - if err != nil { - goto Rollback - } - coinlogex = model.NewCoinLogEx(&model.CoinLogParam{ - Platform: p.Platform, - SnID: p.SnId, - Channel: p.Channel, - ChangeType: common.BillTypeCoin, - ChangeNum: amount, - RemainNum: p.Coin + amount, - Add: 0, - LogType: int32(gainway), - GameID: 0, - GameFreeID: 0, - BaseCoin: 0, - Operator: oper, - Remark: remark, - }) - err = model.InsertCoinLog(coinlogex) - if err != nil { - goto Rollback - } - return nil - Rollback: - if coinLog != nil { - model.RemovePayCoinLog(p.Platform, coinLog.LogId) - } - if coinlogex != nil { - model.RemoveCoinLogOne(coinlogex.Platform, coinlogex.LogId) - } - - logger.Logger.Tracef("player snid=%v third->system transfer rollback at try %v times", p.SnId, i+1) - i++ - if i < model.GameParamData.ThirdPltTransferMaxTry { - time.Sleep(time.Duration(model.GameParamData.ThirdPltTransferInterval) * time.Duration(time.Second)) - } - } - return errors.New("third->system transfer error >max try times!") - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - statePack := &gamehall.SCThridGameBalanceUpdateState{} - pack := &gamehall.SCThridGameBalanceUpdate{} - plt := tsk.GetEnv("plt").(webapi.IThirdPlatform) - if data != nil { - p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = false - p.thridBalanceReqIsSucces = false - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Error_Game - logger.Logger.Trace("SCThridAccountTransferHandler third->system transfer error:", data) - } else { - p.thridBalanceReqIsSucces = true - statePack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - pack.OpRetCode = gamehall.OpResultCode_Game_OPRC_Sucess_Game - // p.thrscene = nil - p.Coin += amount - p.SetPayTs(timeStamp) - p.thirdBalanceRefreshMark[plt.GetPlatformBase().Name] = true - //ThirdPlatformMgrSington.AddThirdPlatformCoin(p.Platform, plt.GetPlatformBase().Tag, thirdBalance) - } - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) - - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) - pack.Coin = proto.Int64(p.Coin) - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATE), pack) - p.dirty = true - - //这个地方虽然说拉取失败,但是为了不影响玩家玩其他的游戏,还是可以进入其它场景 - //后面玩家自己通过手动刷新余额 - if p.thrscene != 0 { - p.thrscene = 0 - p.scene = nil - } - p.thridBalanceRefreshReqing = false - p.diffData.Coin = -1 //强制更新金币 - p.SendDiffData() - return - }), "ThridAccountRefresh") - tsk.PutEnv("plt", value) - tsk.Start() - return true - }) -} - type CSQueryRoomInfoPacketFactory struct { } type CSQueryRoomInfoHandler struct { @@ -1289,7 +311,7 @@ func (this *CSQueryRoomInfoHandler) ProcessLocalGame(s *netlib.Session, packetid } if p.Platform == scene.limitPlatform.IdStr || isShow { if scene.sceneMode == int(msg.GetSceneMode()) && len(scene.players) != 0 { - if scene.gameId == int(gameid) && scene.gameSite == int(msg.GetGameSite()) { + if scene.gameId == int(gameid) && scene.dbGameFree.GetSceneType() == msg.GetGameSite() { // 私人房需要是好友 if scene.sceneMode == common.SceneMode_Private { @@ -1324,30 +346,6 @@ func (this *CSQueryRoomInfoHandler) ProcessLocalGame(s *netlib.Session, packetid return nil } -type CSLotteryLogPacketFactory struct { -} -type CSLotteryLogHandler struct { -} - -func (this *CSLotteryLogPacketFactory) CreatePacket() interface{} { - pack := &gamehall.CSLotteryLog{} - return pack -} - -func (this *CSLotteryLogHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSLotteryLogHandler Process recv ", data) - //if msg, ok := data.(*gamehall.CSLotteryLog); ok { - // p := PlayerMgrSington.GetPlayer(sid) - // if p == nil { - // logger.Logger.Warn("CSLotteryLogHandler p == nil") - // return nil - // } - // - // LotteryMgrSington.FetchLotteryLog(p, msg.GetGameFreeId()) - //} - return nil -} - // 获取指定游戏配置 包括分场信息 type CSGetGameConfigPacketFactory struct { } @@ -1495,9 +493,11 @@ func (this *CSEnterGameHandler) ProcessLocal(s *netlib.Session, packetid int, da if len(params) != 0 { roomId = params[0] - platformName := CoinSceneMgrSingleton.GetPlatformBySceneId(int(roomId)) + platformName := SceneMgrSingleton.GetPlatformBySceneId(int(roomId)) if p.IsRob { - p.Platform = platformName + if platformName != "" { + p.Platform = platformName + } } else if p.GMLevel > 0 && p.Platform == platformName { //允许GM直接按房间ID进场 roomId = params[0] } @@ -1593,13 +593,12 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d case common.IsHundredType(gameType): if len(params) != 0 { roomId = params[0] - name, ok := HundredSceneMgrSington.GetPlatformNameBySceneId(roomId) + platform := SceneMgrSingleton.GetPlatformBySceneId(int(roomId)) if p.IsRob { - //机器人先伪装成对应平台的用户 - if ok { - p.Platform = name + if platform != "" { + p.Platform = platform } - } else if p.GMLevel > 0 && p.Platform == name { //允许GM直接按房间ID进场 + } else if p.GMLevel > 0 && p.Platform == platform { //允许GM直接按房间ID进场 roomId = params[0] } } @@ -1612,7 +611,7 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d } } } - ret = gamehall.OpResultCode_Game(HundredSceneMgrSington.PlayerEnter(p, msg.GetId())) + ret = gamehall.OpResultCode_Game(HundredSceneMgrSingleton.PlayerEnter(p, msg.GetId())) if p.scene != nil { pack.OpParams = append(pack.OpParams, msg.GetId()) if ret != gamehall.OpResultCode_Game_OPRC_Sucess_Game { @@ -1624,9 +623,11 @@ func (this *CSEnterGameHandler) ProcessNormal(s *netlib.Session, packetid int, d case common.IsCoinSceneType(gameType): if len(params) != 0 { roomId = params[0] - platformName := CoinSceneMgrSingleton.GetPlatformBySceneId(int(roomId)) + platformName := SceneMgrSingleton.GetPlatformBySceneId(int(roomId)) if p.IsRob { - p.Platform = platformName + if platformName != "" { + p.Platform = platformName + } } else if p.GMLevel > 0 && p.Platform == platformName { //允许GM直接按房间ID进场 roomId = params[0] } @@ -1684,7 +685,10 @@ func (this *CSQuitGameHandler) Process(s *netlib.Session, packetid int, data int dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(msg.GetId()) gameType := dbGameFree.GetGameType() if common.IsHundredType(gameType) { - ret = gamehall.OpResultCode_Game(HundredSceneMgrSington.PlayerTryLeave(p)) + ret = gamehall.OpResultCode_Game(HundredSceneMgrSingleton.PlayerTryLeave(p)) + if gamehall.OpResultCode_Game_OPRC_OpYield_Game == ret { + return nil + } } else if common.IsCoinSceneType(gameType) { ret = gamehall.OpResultCode_Game(CoinSceneMgrSingleton.PlayerTryLeave(p, msg.IsAudience)) if gamehall.OpResultCode_Game_OPRC_OpYield_Game == ret { @@ -1754,7 +758,7 @@ func (this *CSCreateRoomHandler) ProcessLocalGame(s *netlib.Session, packetid in var gameSite int32 var csp *CoinScenePool var baseScore int32 - var gps *webapi_proto.GameFree + var gps *webapiproto.GameFree //根据携带金额取可创房间 DB_Createroom arrs := srvdata.PBDB_CreateroomMgr.Datas.Arr @@ -1857,130 +861,44 @@ func (this *CSCreateRoomHandler) ProcessLocalGame(s *netlib.Session, packetid in maxPlayerNum = 0 } + if srvdata.GameFreeMgr.IsGameDif(dbGameFree.GetGameId(), common.GameDifThirteen) { + switch msg.GetMaxPlayerNum() { + case 1: + maxPlayerNum = 8 + default: + maxPlayerNum = 4 + } + } + //创建房间 csp = CoinSceneMgrSingleton.GetCoinScenePool(p.GetPlatform().IdStr, dbGameFree.GetId()) - roomId = SceneMgrSingleton.GenOneCoinSceneId() + roomId = SceneMgrSingleton.GenOnePrivateSceneId() if roomId == common.RANDID_INVALID { code = gamehall.OpResultCode_Game_OPRC_AllocRoomIdFailed_Game logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameId:%v sceneId == -1 ", p.SnId, gameId) goto failed } - scene, code = p.CreateLocalGameScene(roomId, int(gameId), int(gameSite), int(msg.GetSceneMode()), maxPlayerNum, - params, dbGameFree, baseScore, csp.groupId) - if scene != nil && code == gamehall.OpResultCode_Game_OPRC_Sucess_Game { - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v Create Sucess GameId:%v", p.SnId, gameId) - csp.AddScene(scene) - if !scene.PlayerEnter(p, -1, true) { - code = gamehall.OpResultCode_Game_OPRC_Error_Game - } - } -failed: - resp := &gamehall.SCCreateRoom{ - GameId: msg.GetGameId(), - BaseCoin: msg.GetBaseCoin(), - SceneMode: msg.GetSceneMode(), - MaxPlayerNum: msg.GetMaxPlayerNum(), - Params: msg.GetParams(), - OpRetCode: code, - } - proto.SetDefaults(resp) - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_CREATEROOM), resp) - return nil -} - -func (this *CSCreateRoomHandler) ProcessThirteen(s *netlib.Session, packetid int, data interface{}, sid int64) error { - msg, ok := data.(*gamehall.CSCreateRoom) - if !ok { - return nil - } - - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - return nil - } - - var code gamehall.OpResultCode_Game - var dbGameFree *server.DB_GameFree - var dbGameRule *server.DB_GameRule - var params = common.CopySliceInt32ToInt64(msg.GetParams()) - var baseScore = msg.GetBaseCoin() - var sp ScenePolicy - var gamefreeId = msg.GetId() - var gps *webapi_proto.GameFree - var maxPlayerNum = int(msg.GetMaxPlayerNum()) - var csp *CoinScenePool - var roomId int - var scene *Scene - var gameId = gamefreeId / 10000 - var spd *ScenePolicyData - - gps = PlatformMgrSingleton.GetGameFree(p.Platform, gamefreeId) - if gps == nil { - code = gamehall.OpResultCode_Game_OPRC_GameNotExist_Game - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameFreeId:%v not exist", p.SnId, gamefreeId) + scene = SceneMgrSingleton.CreateScene(&CreateSceneParam{ + CreateId: p.SnId, + RoomId: roomId, + SceneMode: int(msg.GetSceneMode()), + Params: params, + Platform: p.GetPlatform(), + GF: dbGameFree, + PlayerNum: int32(maxPlayerNum), + BaseScore: baseScore, + }) + if scene == nil { + logger.Logger.Tracef("CSCreateRoomHandler CreateScene fail SnId:%v GameId:%v", p.SnId, gameId) + code = gamehall.OpResultCode_Game_OPRC_Error_Game goto failed } - dbGameFree = gps.DbGameFree - if dbGameFree == nil { - code = gamehall.OpResultCode_Game_OPRC_GameNotExist_Game - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameFreeId:%v not exist", p.SnId, gamefreeId) - goto failed - } - - //检测房间状态是否开启 - if !PlatformMgrSingleton.CheckGameState(p.Platform, dbGameFree.Id) { - code = gamehall.OpResultCode_Game_OPRC_GameHadClosed - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameFreeId:%v GameHadClosed", p.SnId, gamefreeId) - goto failed - } - - dbGameRule = srvdata.PBDB_GameRuleMgr.GetData(dbGameFree.GetGameRule()) - if dbGameRule == nil { - code = gamehall.OpResultCode_Game_OPRC_GameNotExist_Game - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameFreeId:%v gamerule not exist", p.SnId, gamefreeId) - goto failed - } - - sp = GetScenePolicy(int(gameId), 0) - if sp == nil { - code = gamehall.OpResultCode_Game_OPRC_GameNotExist_Game - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameFreeId:%v not exist", p.SnId, gamefreeId) - goto failed - } - spd, ok = sp.(*ScenePolicyData) - if ok { - //todo 参数校验 - _ = spd - - } - if p.scene != nil { - code = gamehall.OpResultCode_Game_OPRC_RoomHadExist_Game - logger.Logger.Tracef("CSCreateRoomHandler had scene(%d)", p.scene.sceneId) - goto failed - } - - //创建房间 - csp = CoinSceneMgrSingleton.GetCoinScenePool(p.GetPlatform().IdStr, dbGameFree.GetId()) - roomId = SceneMgrSingleton.GenOneCoinSceneId() - if roomId == common.RANDID_INVALID { - code = gamehall.OpResultCode_Game_OPRC_AllocRoomIdFailed_Game - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v GameId:%v sceneId == -1 ", p.SnId, gameId) - goto failed - } - scene, code = p.CreateLocalGameScene(roomId, int(gameId), int(dbGameFree.GetSceneType()), int(msg.GetSceneMode()), - maxPlayerNum, params, dbGameFree, baseScore, csp.groupId) - if scene != nil { - if code == gamehall.OpResultCode_Game_OPRC_Sucess_Game { - logger.Logger.Tracef("CSCreateRoomHandler SnId:%v Create Sucess GameId:%v", p.SnId, gameId) - // try enter scene - csp.scenes[scene.sceneId] = scene - scene.csp = csp - if !scene.PlayerEnter(p, -1, true) { - code = gamehall.OpResultCode_Game_OPRC_Error_Game - } - } + logger.Logger.Tracef("CSCreateRoomHandler SnId:%v Create Sucess GameId:%v", p.SnId, gameId) + csp.AddScene(scene) + if !scene.PlayerEnter(p, -1, true) { + code = gamehall.OpResultCode_Game_OPRC_Error_Game } failed: @@ -2031,7 +949,7 @@ func (this *CSAudienceSitHandler) Process(s *netlib.Session, packetid int, data } if !p.scene.IsTestScene() { // 入场限额检查 - limitCoin := srvdata.CreateRoomMgrSington.GetLimitCoinByBaseScore(int32(p.scene.gameId), int32(p.scene.gameSite), p.scene.BaseScore) + limitCoin := srvdata.CreateRoomMgrSington.GetLimitCoinByBaseScore(int32(p.scene.gameId), p.scene.dbGameFree.GetSceneType(), p.scene.BaseScore) if p.Coin < limitCoin { pack.OpCode = gamehall.OpResultCode_Game_OPRC_MoneyNotEnough_Game newPlayer.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_AUDIENCESIT), pack) @@ -2150,34 +1068,366 @@ func (this *CSRecordAndNoticeHandler) Process(s *netlib.Session, packetid int, d return nil } +func CSAudienceEnterRoomHandler(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSAudienceEnterRoomHandler Process recv ", data) + msg, ok := data.(*gamehall.CSEnterRoom) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + + var code = gamehall.OpResultCode_Game_OPRC_Error_Game + var sp ScenePolicy + var cfg *webapiproto.GameFree + + // 房间是否存在 + scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) + if scene == nil { + code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game + logger.Logger.Trace("CSAudienceEnterRoomHandler scene == nil") + goto failed + } + // 房间是否正在销毁 + if scene.deleting { + code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game + logger.Logger.Trace("CSAudienceEnterRoomHandler scene is deleting") + goto failed + } + // 房间是否已经关闭 + if scene.closed { + code = gamehall.OpResultCode_Game_OPRC_RoomHadClosed_Game + logger.Logger.Trace("CSAudienceEnterRoomHandler scene is closed") + goto failed + } + // 玩家没有在房间中 + if p.scene != nil { + code = gamehall.OpResultCode_Game_OPRC_CannotWatchReasonInOther_Game + logger.Logger.Trace("CSAudienceEnterRoomHandler p.scene != nil") + goto failed + } + // 房间是否可以观战 + if !scene.CanAudience() { + code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game + logger.Logger.Tracef("CSAudienceEnterRoomHandler scene.CanAudience() %v", scene.sceneId) + goto failed + } + // 比赛场白名单观众 + if scene.IsMatchScene() && !PlatformMgrSingleton.IsMatchAudience(p.Platform, p.SnId) { + code = gamehall.OpResultCode_Game_OPRC_MatchAudience + logger.Logger.Tracef("CSAudienceEnterRoomHandler scene.IsMatchAudience() %v", scene.sceneId) + goto failed + } + // 是不是相同平台 + cfg = PlatformMgrSingleton.GetGameFree(p.Platform, scene.dbGameFree.Id) + if cfg == nil || (scene.limitPlatform != nil && scene.limitPlatform.Isolated && p.Platform != scene.limitPlatform.IdStr) { + code = gamehall.OpResultCode_Game_OPRC_RoomNotExist_Game + logger.Logger.Tracef("CSEnterRoomHandler ScenePolicy(gameid:%v mode:%v) scene.limitPlatform.Isolated && p.Platform != scene.limitPlatform.Name", scene.gameId, scene.gameMode) + goto failed + } + // 游戏规则是否存在 + sp = GetScenePolicy(scene.gameId, scene.gameMode) + if sp == nil { + code = gamehall.OpResultCode_Game_OPRC_GameNotExist_Game + logger.Logger.Tracef("CSAudienceEnterRoomHandler ScenePolicy(gameid:%v mode:%v) not registe", scene.gameId, scene.gameMode) + goto failed + } + + switch { + case scene.IsCoinScene(): + code = gamehall.OpResultCode_Game(CoinSceneMgrSingleton.AudienceEnter(p, cfg.GetDbGameFree().GetId(), msg.GetRoomId(), nil, true)) + case scene.IsHundredScene(): + + case scene.IsMatchScene(): + code = gamehall.OpResultCode_Game(MatchSceneMgrSingleton.AudienceEnter(p, cfg.GetDbGameFree().GetId(), int(msg.GetRoomId()), nil, true)) + } + +failed: + if code != gamehall.OpResultCode_Game_OPRC_Sucess_Game { + resp := &gamehall.SCEnterRoom{ + OpRetCode: code, + } + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_ENTERROOM), resp) + } + + return nil +} + +func CSRoomConfigHandler(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSRoomConfigHandler Process recv ", data) + _, ok := data.(*gamehall.CSRoomConfig) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + + pack := PlatformMgrSingleton.GetRoomConfig(p.Platform) + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SCRoomConfig), pack) + logger.Logger.Tracef("SCRoomConfig: %v", pack) + return nil +} + +func CSCreatePrivateRoomHandler(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSCreatePrivateRoomHandler Process recv ", data) + msg, ok := data.(*gamehall.CSCreatePrivateRoom) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + + var needPwd, costType, voice int64 + var password string + code := gamehall.OpResultCode_Game_OPRC_Error_Game + pack := &gamehall.SCCreatePrivateRoom{} + send := func() { + pack.OpRetCode = code + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_CREATEPRIVATEROOM), pack) + logger.Logger.Tracef("SCCreatePrivateRoom: %v", pack) + } + + // 参数校验 + cfg := PlatformMgrSingleton.GetConfig(p.Platform).RoomConfig[msg.GetRoomConfigId()] + if cfg == nil { + send() + return nil + } + // 场次 + if !slices.Contains(cfg.GetGameFreeId(), msg.GetGameFreeId()) { + send() + return nil + } + // 局数 + if !slices.Contains(cfg.GetRound(), msg.GetRound()) { + send() + return nil + } + // 玩家数量 + if !slices.Contains(cfg.GetPlayerNum(), msg.GetPlayerNum()) { + send() + return nil + } + // 密码 + if cfg.GetNeedPassword() != 3 { + needPwd = int64(cfg.GetNeedPassword()) + } else { + needPwd = int64(msg.GetNeedPassword()) + } + if needPwd < 1 || needPwd > 2 { + needPwd = 2 // 默认不需要密码 + } + // 房费类型 + if cfg.GetCostType() != 3 { + costType = int64(cfg.GetCostType()) + } else { + costType = int64(msg.GetCostType()) + } + if costType < 1 || costType > 2 { + costType = 1 // 默认房主支付 + } + // 语音 + if cfg.GetVoice() != 3 { + voice = int64(cfg.GetVoice()) + } else { + voice = int64(msg.GetVoice()) + } + if voice < 1 || voice > 2 { + voice = 1 // 默认开启语音 + } + + // 场次是否存在 + gf := PlatformMgrSingleton.GetGameFree(p.Platform, msg.GetGameFreeId()) + if gf == nil { + code = gamehall.OpResultCode_Game_OPRC_GameHadClosed + send() + return nil + } + sp := GetScenePolicy(int(gf.GetDbGameFree().GetGameId()), int(gf.GetDbGameFree().GetGameMode())) + if sp == nil { + code = gamehall.OpResultCode_Game_OPRC_GameHadClosed + send() + return nil + } + // 游戏是否开启 + if cfg.GetOn() != common.On || !gf.GetStatus() { + code = gamehall.OpResultCode_Game_OPRC_GameHadClosed + send() + return nil + } + if p.scene != nil { + code = gamehall.OpResultCode_Game_OPRC_RoomHadExist_Game + send() + return nil + } + + // 密码 + if needPwd == 1 { + password = SceneMgrSingleton.GenPassword() + } + + // 费用是否充足 + if len(cfg.GetCost()) > 0 && !sp.CostEnough(int(costType), int(msg.GetPlayerNum()), cfg, p) { + code = gamehall.OpResultCode_Game_OPRC_CostNotEnough + send() + return nil + } + + // 创建房间 + csp := CoinSceneMgrSingleton.GetCoinScenePool(p.GetPlatform().IdStr, msg.GetGameFreeId()) + roomId := SceneMgrSingleton.GenOnePrivateSceneId() + scene := SceneMgrSingleton.CreateScene(&CreateSceneParam{ + CreateId: p.SnId, + RoomId: roomId, + SceneMode: common.SceneMode_Private, + CycleTimes: 0, + TotalRound: int(msg.GetRound()), + Params: common.CopySliceInt32ToInt64(csp.dbGameRule.GetParams()), + GS: nil, + Platform: PlatformMgrSingleton.GetPlatform(p.Platform), + GF: csp.dbGameFree, + PlayerNum: msg.GetPlayerNum(), + Channel: cfg.GetOnChannelName(), + CustomParam: &server.CustomParam{ + RoomTypeId: cfg.GetRoomType(), + RoomConfigId: cfg.GetId(), + CostType: int32(costType), + Password: password, + Voice: int32(voice), + }, + }) + + if scene == nil { + code = gamehall.OpResultCode_Game_OPRC_SceneServerMaintain_Game + send() + return nil + } + + csp.AddScene(scene) + + if !scene.PlayerEnter(p, -1, true) { + send() + return nil + } + + if cfg.GetCostType() == 1 { + sp.CostPayment(scene, p) + } + + pack = &gamehall.SCCreatePrivateRoom{ + OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game, + GameFreeId: msg.GetGameFreeId(), + RoomTypeId: msg.GetRoomTypeId(), + RoomConfigId: msg.GetRoomConfigId(), + Round: msg.GetRound(), + PlayerNum: msg.GetPlayerNum(), + NeedPassword: int32(needPwd), + CostType: int32(costType), + Voice: int32(voice), + RoomId: int32(roomId), + Password: password, + } + send() + return nil +} + +func CSGetPrivateRoomListHandler(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSGetPrivateRoomListHandler Process recv ", data) + _, ok := data.(*gamehall.CSGetPrivateRoomList) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + + PlayerNotifySingle.AddTime(p.SnId, common.NotifyPrivateRoomList, time.Second*15) + + pack := &gamehall.SCGetPrivateRoomList{} + scenes := SceneMgrSingleton.FindRoomList(&FindRoomParam{ + Platform: p.Platform, + GameId: nil, + GameMode: nil, + SceneMode: nil, + RoomId: 0, + IsCustom: 1, + IsFree: 0, + GameFreeId: nil, + SnId: 0, + IsMatch: false, + IsRankMatch: false, + Channel: []string{p.LastChannel}, + }) + for _, v := range scenes { + needPassword := 0 + if v.GetPassword() != "" { + needPassword = 1 + } + var players []*gamehall.PrivatePlayerInfo + for _, vv := range v.players { + players = append(players, &gamehall.PrivatePlayerInfo{ + SnId: vv.GetSnId(), + Name: vv.GetName(), + UseRoleId: vv.GetRoleId(), + }) + } + d := &gamehall.PrivateRoomInfo{ + GameFreeId: v.dbGameFree.GetId(), + GameId: v.dbGameFree.GetGameId(), + RoomTypeId: v.GetRoomTypeId(), + RoomConfigId: v.GetRoomConfigId(), + RoomId: int32(v.sceneId), + NeedPassword: int32(needPassword), + CurrRound: v.currRound, + MaxRound: v.totalRound, + CurrNum: int32(v.GetPlayerCnt()), + MaxPlayer: int32(v.playerNum), + CreateTs: v.createTime.Unix(), + State: v.SceneState, + Players: players, + } + pack.Datas = append(pack.Datas, d) + } + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GETPRIVATEROOMLIST), pack) + logger.Logger.Tracef("SCGetPrivateRoomList: %v", pack) + return nil +} + +func CSTouchTypeHandler(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSTouchTypeHandler Process recv ", data) + _, ok := data.(*gamehall.CSTouchType) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + + PlayerNotifySingle.AddTime(p.SnId, common.NotifyPrivateRoomList, time.Second*15) + + return nil +} + func init() { - // 观众进入房间 - common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCE_ENTERROOM), &CSAudienceEnterRoomHandler{}) - netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCE_ENTERROOM), &CSEnterRoomPacketFactory{}) // 返回房间 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_RETURNROOM), &CSReturnRoomHandler{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_RETURNROOM), &CSReturnRoomPacketFactory{}) - - common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_JOINGAME), &CSJoinGameHandler{}) - netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_JOINGAME), &CSJoinGamePacketFactory{}) - - common.RegisterHandler(int(player.PlayerPacketID_PACKET_CS_GETDATALOG), &CSGetDataLogHandler{}) - netlib.RegisterFactory(int(player.PlayerPacketID_PACKET_CS_GETDATALOG), &CSGetDataLogPacketFactory{}) - - //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_ENTERTHRIDGAME), &CSEnterThridGameHandler{}) - //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_ENTERTHRIDGAME), &CSEnterThridGamePacketFactory{}) - - //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LEAVETHRIDGAME), &CSLeaveThridGameHandler{}) - //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_LEAVETHRIDGAME), &CSLeaveThridGamePacketFactory{}) - - //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_THRIDGAMEBALANCEUPDATE), &CSThridBalanceRefreshHandler{}) - //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_THRIDGAMEBALANCEUPDATE), &CSThridBalanceRefreshPacketFactory{}) - - //common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_GETPRIVATEROOMHISTORY), &CSGetPrivateRoomHistoryHandler{}) - //netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_GETPRIVATEROOMHISTORY), &CSGetPrivateRoomHistoryPacketFactory{}) - - common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_LOTTERYLOG), &CSLotteryLogHandler{}) - netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_LOTTERYLOG), &CSLotteryLogPacketFactory{}) + //观众坐下 + common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitHandler{}) + netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitPacketFactory{}) //获取指定游戏配置 包括分场信息 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_GETGAMECONFIG), &CSGetGameConfigHandler{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_GETGAMECONFIG), &CSGetGameConfigPacketFactory{}) @@ -2196,10 +1446,18 @@ func init() { //查询公共房间列表 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_QUERYROOMINFO), &CSQueryRoomInfoHandler{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_QUERYROOMINFO), &CSQueryRoomInfoPacketFactory{}) - //观众坐下 - common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitHandler{}) - netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCESIT), &CSAudienceSitPacketFactory{}) //我的游戏信息及平台公告 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_COMNOTICE), &CSRecordAndNoticeHandler{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_COMNOTICE), &CSRecordAndNoticePacketFactory{}) + + // 观众进入房间 + common.Register(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCE_ENTERROOM), &gamehall.CSEnterRoom{}, CSAudienceEnterRoomHandler) + // 竞技馆房间配置列表 + common.Register(int(gamehall.GameHallPacketID_PACKET_CSRoomConfig), &gamehall.CSRoomConfig{}, CSRoomConfigHandler) + // 创建竞技馆房间 + common.Register(int(gamehall.GameHallPacketID_PACKET_CS_CREATEPRIVATEROOM), &gamehall.CSCreatePrivateRoom{}, CSCreatePrivateRoomHandler) + // 竞技馆房间列表 + common.Register(int(gamehall.GameHallPacketID_PACKET_CS_GETPRIVATEROOMLIST), &gamehall.CSGetPrivateRoomList{}, CSGetPrivateRoomListHandler) + // 保持刷新 + common.Register(int(gamehall.GameHallPacketID_PACKET_CSTouchType), &gamehall.CSTouchType{}, CSTouchTypeHandler) } diff --git a/worldsrv/action_hundredscene.go b/worldsrv/action_hundredscene.go index 5bdca82..d0befc0 100644 --- a/worldsrv/action_hundredscene.go +++ b/worldsrv/action_hundredscene.go @@ -2,13 +2,13 @@ package main import ( "fmt" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/game/common" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/srvdata" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "time" ) type CSHundredSceneGetPlayerNumPacketFactory struct { @@ -26,7 +26,7 @@ func (this *CSHundredSceneGetPlayerNumHandler) Process(s *netlib.Session, packet if msg, ok := data.(*gamehall.CSHundredSceneGetPlayerNum); ok { p := PlayerMgrSington.GetPlayer(sid) if p != nil { - nums := HundredSceneMgrSington.GetPlayerNums(p, msg.GetGameId(), msg.GetGameModel()) + nums := HundredSceneMgrSingleton.GetPlayerNums(p, msg.GetGameId(), msg.GetGameModel()) pack := &gamehall.SCHundredSceneGetPlayerNum{ Nums: nums, } @@ -61,7 +61,7 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da } oldPlatform := p.Platform switch msg.GetOpType() { - case HundredSceneOp_Enter: + case HundredSceneOPEnter: //pt := PlatformMgrSingleton.GetPackageTag(p.PackageID) //if pt != nil && pt.IsForceBind == 1 { // if p.BeUnderAgentCode == "" || p.BeUnderAgentCode == "0" { @@ -80,13 +80,13 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da params := msg.GetOpParams() if len(params) != 0 { roomId = params[0] - name, ok := HundredSceneMgrSington.GetPlatformNameBySceneId(roomId) + platform := SceneMgrSingleton.GetPlatformBySceneId(int(roomId)) if p.IsRob { //机器人先伪装成对应平台的用户 - if ok { - p.Platform = name + if platform != "" { + p.Platform = platform } - } else if p.GMLevel > 0 && p.Platform == name { //允许GM直接按房间ID进场 + } else if p.GMLevel > 0 && p.Platform == platform { //允许GM直接按房间ID进场 roomId = params[0] } } @@ -153,7 +153,7 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da } } - ret = HundredSceneMgrSington.PlayerEnter(p, msg.GetId()) + ret = HundredSceneMgrSingleton.PlayerEnter(p, msg.GetId()) if p.scene != nil { pack.OpParams = append(pack.OpParams, msg.GetId()) //TODO 有房间还进入失败,尝试returnroom @@ -162,9 +162,9 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da return nil } } - case HundredSceneOp_Leave: - ret = HundredSceneMgrSington.PlayerTryLeave(p) - case HundredSceneOp_Change: + case HundredSceneOPLeave: + ret = HundredSceneMgrSingleton.PlayerTryLeave(p) + case HundredSceneOPChange: /*var exclude int32 if p.scene != nil { exclude = int32(p.scene.sceneId) @@ -173,10 +173,10 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da if len(params) != 0 { exclude = params[0] } - if HundredSceneMgrSington.PlayerInChanging(p) { //换桌中 + if HundredSceneMgrSingleton.PlayerInChanging(p) { //换桌中 return nil } - ret = HundredSceneMgrSington.PlayerTryChange(p, msg.GetId(), exclude)*/ + ret = HundredSceneMgrSingleton.PlayerTryChange(p, msg.GetId(), exclude)*/ } done: //机器人要避免身上的平台标记被污染 @@ -199,290 +199,10 @@ func (this *CSHundredSceneOpHandler) Process(s *netlib.Session, packetid int, da return nil } -type CSGameObservePacketFactory struct { -} -type CSGameObserveHandler struct { -} - -func (this *CSGameObservePacketFactory) CreatePacket() interface{} { - pack := &gamehall.CSGameObserve{} - return pack -} - -func (this *CSGameObserveHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSGameObserveHandler Process recv ", data) - if msg, ok := data.(*gamehall.CSGameObserve); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p != nil { - if msg.GetStartOrEnd() { - gameStateMgr.PlayerRegiste(p, msg.GetGameId(), msg.GetStartOrEnd()) - pack := &gamehall.SCGameSubList{} - statePack := &gamehall.SCGameState{} - scenes := HundredSceneMgrSington.GetPlatformScene(p.Platform, msg.GetGameId()) - for _, value := range scenes { - pack.List = append(pack.List, &gamehall.GameSubRecord{ - GameFreeId: proto.Int32(value.dbGameFree.GetId()), - NewLog: proto.Int32(-1), - LogCnt: proto.Int(len(value.GameLog)), - TotleLog: value.GameLog, - }) - leftTime := int64(value.StateSec) - (time.Now().Unix() - value.StateTs) - if leftTime < 0 { - leftTime = 0 - } - statePack.List = append(statePack.List, &gamehall.GameState{ - GameFreeId: proto.Int32(value.dbGameFree.GetId()), - Ts: proto.Int64(leftTime), - Sec: proto.Int32(value.StateSec), - }) - } - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESUBLIST), pack) - logger.Logger.Trace("SCGameSubList:", pack) - p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SC_GAMESTATE), statePack) - logger.Logger.Trace("SCGameState:", statePack) - } else { - gameStateMgr.PlayerClear(p) - } - } - } - return nil -} - -//type CSHundredSceneGetGameJackpotPacketFactory struct { -//} -//type CSHundredSceneGetGameJackpotHandler struct { -//} -// -//func (this *CSHundredSceneGetGameJackpotPacketFactory) CreatePacket() interface{} { -// pack := &gamehall.CSHundredSceneGetPlayerNum{} -// return pack -//} -// -//func (this *CSHundredSceneGetGameJackpotHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { -// logger.Logger.Trace("CSHundredSceneGetGameJackpotHandler Process recv ", data) -// if _, ok := data.(*gamehall.CSHundredSceneGetPlayerNum); ok { -// p := PlayerMgrSington.GetPlayer(sid) -// if p != nil { -// //gameid := int(msg.GetGameId()) -// //// 冰河世纪, 百战成神, 财神, 复仇者联盟, 复活岛 -// //if gameid == common.GameId_IceAge || gameid == common.GameId_TamQuoc || gameid == common.GameId_CaiShen || -// // gameid == common.GameId_Avengers || gameid == common.GameId_EasterIsland { -// // gameStateMgr.PlayerRegiste(p, msg.GetGameId(), true) -// // pack := &gamehall.SCHundredSceneGetGameJackpot{} -// // scenes := HundredSceneMgrSington.GetPlatformScene(p.Platform, msg.GetGameId()) -// // for _, v := range scenes { -// // jpfi := &gamehall.GameJackpotFundInfo{ -// // GameFreeId: proto.Int32(v.dbGameFree.GetId()), -// // JackPotFund: proto.Int64(v.JackPotFund), -// // } -// // pack.GameJackpotFund = append(pack.GameJackpotFund, jpfi) -// // } -// // proto.SetDefaults(pack) -// // p.SendToClient(int(gamehall.HundredScenePacketID_PACKET_SC_GAMEJACKPOT), pack) -// // logger.Logger.Trace("SCHundredSceneGetGameJackpot:", pack) -// //} -// } -// } -// return nil -//} -// -//type CSHundredSceneGetGameHistoryInfoPacketFactory struct { -//} -//type CSHundredSceneGetGameHistoryInfoHandler struct { -//} -// -//func (this *CSHundredSceneGetGameHistoryInfoPacketFactory) CreatePacket() interface{} { -// pack := &gamehall.CSHundredSceneGetHistoryInfo{} -// return pack -//} -// -//func (this *CSHundredSceneGetGameHistoryInfoHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { -// logger.Logger.Trace("World CSHundredSceneGetGameHistoryInfoHandler Process recv ", data) -// if msg, ok := data.(*gamehall.CSHundredSceneGetHistoryInfo); ok { -// gameid := int(msg.GetGameId()) -// historyModel := msg.GetGameHistoryModel() -// p := PlayerMgrSington.GetPlayer(sid) -// if p != nil { -// switch historyModel { -// case PLAYER_HISTORY_MODEL: // 历史记录 -// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// var genPlayerHistoryInfo = func(spinID string, isFree bool, createdTime, totalBetValue, totalPriceValue, totalBonusValue, multiple int64, player *gamehall.PlayerHistoryInfo) { -// player.SpinID = proto.String(spinID) -// player.CreatedTime = proto.Int64(createdTime) -// player.TotalBetValue = proto.Int64(totalBetValue) -// player.TotalPriceValue = proto.Int64(totalPriceValue) -// player.IsFree = proto.Bool(isFree) -// player.TotalBonusValue = proto.Int64(totalBonusValue) -// player.Multiple = proto.Int64(multiple) -// } -// -// var genPlayerHistoryInfoMsg = func(spinid string, v *model.NeedGameRecord, gdl *model.GameDetailedLog, player *gamehall.PlayerHistoryInfo) { -// switch gameid { -// //case common.GameId_IceAge: -// // data, err := model.UnMarshalIceAgeGameNote(gdl.GameDetailedNote) -// // if err != nil { -// // logger.Logger.Errorf("World UnMarshalIceAgeGameNote error:%v", err) -// // } -// // gnd := data.(*model.IceAgeType) -// // genPlayerHistoryInfo(spinid, gnd.IsFree, int64(v.Ts), int64(gnd.Score), gnd.TotalPriceValue, gnd.TotalBonusValue, player) -// //case common.GameId_TamQuoc: -// // data, err := model.UnMarshalTamQuocGameNote(gdl.GameDetailedNote) -// // if err != nil { -// // logger.Logger.Errorf("World UnMarshalTamQuocGameNote error:%v", err) -// // } -// // gnd := data.(*model.TamQuocType) -// // genPlayerHistoryInfo(spinid, gnd.IsFree, int64(v.Ts), int64(gnd.Score), gnd.TotalPriceValue, gnd.TotalBonusValue, player) -// //case common.GameId_CaiShen: -// // data, err := model.UnMarshalCaiShenGameNote(gdl.GameDetailedNote) -// // if err != nil { -// // logger.Logger.Errorf("World UnMarshalCaiShenGameNote error:%v", err) -// // } -// // gnd := data.(*model.CaiShenType) -// // genPlayerHistoryInfo(spinid, gnd.IsFree, int64(v.Ts), int64(gnd.Score), gnd.TotalPriceValue, gnd.TotalBonusValue, player) -// case common.GameId_Crash: -// data, err := model.UnMarshalGameNoteByHUNDRED(gdl.GameDetailedNote) -// if err != nil { -// logger.Logger.Errorf("World UnMarshalAvengersGameNote error:%v", err) -// } -// jsonString, _ := json.Marshal(data) -// -// // convert json to struct -// gnd := model.CrashType{} -// json.Unmarshal(jsonString, &gnd) -// -// //gnd := data.(*model.CrashType) -// for _, curplayer := range gnd.PlayerData { -// if curplayer.UserId == p.SnId { -// genPlayerHistoryInfo(spinid, false, int64(v.Ts), int64(curplayer.UserBetTotal), curplayer.ChangeCoin, 0, int64(curplayer.UserMultiple), player) -// break -// } -// } -// case common.GameId_Avengers: -// data, err := model.UnMarshalAvengersGameNote(gdl.GameDetailedNote) -// if err != nil { -// logger.Logger.Errorf("World UnMarshalAvengersGameNote error:%v", err) -// } -// gnd := data.(*model.GameResultLog) -// genPlayerHistoryInfo(spinid, gnd.BaseResult.IsFree, int64(v.Ts), int64(gnd.BaseResult.TotalBet), gnd.BaseResult.WinTotal, gnd.BaseResult.WinSmallGame, 0, player) -// //case common.GameId_EasterIsland: -// // data, err := model.UnMarshalEasterIslandGameNote(gdl.GameDetailedNote) -// // if err != nil { -// // logger.Logger.Errorf("World UnMarshalEasterIslandGameNote error:%v", err) -// // } -// // gnd := data.(*model.EasterIslandType) -// // genPlayerHistoryInfo(spinid, gnd.IsFree, int64(v.Ts), int64(gnd.Score), gnd.TotalPriceValue, gnd.TotalBonusValue, player) -// default: -// logger.Logger.Errorf("World CSHundredSceneGetGameHistoryInfoHandler receive gameid(%v) error", gameid) -// } -// } -// -// gameclass := int32(2) -// spinid := strconv.FormatInt(int64(p.SnId), 10) -// dbGameFrees := srvdata.PBDB_GameFreeMgr.Datas.Arr //.GetData(data.DbGameFree.Id) -// roomtype := int32(0) -// for _, v := range dbGameFrees { -// if int32(gameid) == v.GetGameId() { -// gameclass = v.GetGameClass() -// roomtype = v.GetSceneType() -// break -// } -// } -// -// gpl := model.GetPlayerListByHallEx(p.SnId, p.Platform, 0, 50, 0, 0, roomtype, gameclass, gameid) -// pack := &gamehall.SCPlayerHistory{} -// for _, v := range gpl.Data { -// if v.GameDetailedLogId == "" { -// logger.Logger.Error("World PlayerHistory GameDetailedLogId is nil") -// break -// } -// gdl := model.GetPlayerHistory(p.Platform, v.GameDetailedLogId) -// player := &gamehall.PlayerHistoryInfo{} -// genPlayerHistoryInfoMsg(spinid, v, gdl, player) -// pack.PlayerHistory = append(pack.PlayerHistory, player) -// } -// proto.SetDefaults(pack) -// logger.Logger.Infof("World gameid:%v PlayerHistory:%v ", gameid, pack) -// return pack -// }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { -// if data == nil { -// logger.Logger.Error("World PlayerHistory data is nil") -// return -// } -// p.SendToClient(int(gamehall.HundredScenePacketID_PACKET_SC_GAMEPLAYERHISTORY), data) -// }), "CSGetPlayerHistoryHandlerWorld").Start() -// case BIGWIN_HISTORY_MODEL: // 爆奖记录 -// jackpotList := JackpotListMgrSington.GetJackpotList(gameid) -// //if len(jackpotList) < 1 { -// // JackpotListMgrSington.GenJackpot(gameid) // 初始化爆奖记录 -// // JackpotListMgrSington.after(gameid) // 开启定时器 -// // jackpotList = JackpotListMgrSington.GetJackpotList(gameid) -// //} -// pack := JackpotListMgrSington.GetStoCMsg(jackpotList) -// pack.GameId = msg.GetGameId() -// logger.Logger.Infof("World BigWinHistory: %v %v", gameid, pack) -// p.SendToClient(int(gamehall.HundredScenePacketID_PACKET_SC_GAMEBIGWINHISTORY), pack) -// case GAME_HISTORY_MODEL: -// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// var genGameHistoryInfo = func(gameNumber string, createdTime, multiple int64, hash string, gamehistory *gamehall.GameHistoryInfo) { -// gamehistory.GameNumber = proto.String(gameNumber) -// gamehistory.CreatedTime = proto.Int64(createdTime) -// gamehistory.Hash = proto.String(hash) -// gamehistory.Multiple = proto.Int64(multiple) -// } -// -// gls := model.GetAllGameDetailedLogsByGameIdAndTs(p.Platform, gameid, 20) -// -// pack := &gamehall.SCPlayerHistory{} -// for _, v := range gls { -// -// gamehistory := &gamehall.GameHistoryInfo{} -// -// data, err := model.UnMarshalGameNoteByHUNDRED(v.GameDetailedNote) -// if err != nil { -// logger.Logger.Errorf("World UnMarshalAvengersGameNote error:%v", err) -// } -// jsonString, _ := json.Marshal(data) -// -// // convert json to struct -// gnd := model.CrashType{} -// json.Unmarshal(jsonString, &gnd) -// -// genGameHistoryInfo(v.LogId, int64(v.Ts), int64(gnd.Rate), gnd.Hash, gamehistory) -// pack.GameHistory = append(pack.GameHistory, gamehistory) -// } -// proto.SetDefaults(pack) -// logger.Logger.Infof("World gameid:%v History:%v ", gameid, pack) -// return pack -// }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { -// if data == nil { -// logger.Logger.Error("World GameHistory data is nil") -// return -// } -// p.SendToClient(int(gamehall.HundredScenePacketID_PACKET_SC_GAMEPLAYERHISTORY), data) -// }), "CSGetGameHistoryHandlerWorld").Start() -// default: -// logger.Logger.Errorf("World CSHundredSceneGetGameHistoryInfoHandler receive historyModel(%v) error", historyModel) -// } -// } -// } -// return nil -//} - func init() { common.RegisterHandler(int(gamehall.HundredScenePacketID_PACKET_CS_HUNDREDSCENE_GETPLAYERNUM), &CSHundredSceneGetPlayerNumHandler{}) netlib.RegisterFactory(int(gamehall.HundredScenePacketID_PACKET_CS_HUNDREDSCENE_GETPLAYERNUM), &CSHundredSceneGetPlayerNumPacketFactory{}) common.RegisterHandler(int(gamehall.HundredScenePacketID_PACKET_CS_HUNDREDSCENE_OP), &CSHundredSceneOpHandler{}) netlib.RegisterFactory(int(gamehall.HundredScenePacketID_PACKET_CS_HUNDREDSCENE_OP), &CSHundredSceneOpPacketFactory{}) - //请求游戏列表 - common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_GAMEOBSERVE), &CSGameObserveHandler{}) - netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_GAMEOBSERVE), &CSGameObservePacketFactory{}) - - //// 请求奖池信息 - //common.RegisterHandler(int(gamehall.HundredScenePacketID_PACKET_CS_GAMEJACKPOT), &CSHundredSceneGetGameJackpotHandler{}) - //netlib.RegisterFactory(int(gamehall.HundredScenePacketID_PACKET_CS_GAMEJACKPOT), &CSHundredSceneGetGameJackpotPacketFactory{}) - - ////// 请求历史记录和爆奖记录 - //common.RegisterHandler(int(gamehall.HundredScenePacketID_PACKET_CS_GAMEHISTORYINFO), &CSHundredSceneGetGameHistoryInfoHandler{}) - //netlib.RegisterFactory(int(gamehall.HundredScenePacketID_PACKET_CS_GAMEHISTORYINFO), &CSHundredSceneGetGameHistoryInfoPacketFactory{}) } diff --git a/worldsrv/action_pets.go b/worldsrv/action_pets.go index 0cd716c..40af61f 100644 --- a/worldsrv/action_pets.go +++ b/worldsrv/action_pets.go @@ -529,7 +529,7 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64) return nil } - var change []*Item + var change []*model.Item for _, v := range info.GetCost() { e := BagMgrSingleton.GetItem(p.SnId, v.GetId()) if e == nil || e.ItemNum < v.GetN() { @@ -538,19 +538,19 @@ func CSSkinUpgrade(s *netlib.Session, packetid int, data interface{}, sid int64) send() return nil } - change = append(change, &Item{ + change = append(change, &model.Item{ ItemId: v.GetId(), ItemNum: -v.GetN(), }) } - _, _, ok = BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, + _, _, ok = BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: change, Add: 0, GainWay: common.GainWaySkinUpGrade, Operator: "system", Remark: "皮肤升级消耗", - noLog: false, + NoLog: false, }) if !ok { logger.Logger.Errorf("CSSkinUpgrade upgrade error") @@ -580,7 +580,7 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) { return nil, pets.OpResultCode_OPRC_Error } - var change []*Item + var change []*model.Item if info.GetUnLockType() == common.SkinGetVip { if p.VIP < info.GetNeedVip() { logger.Logger.Errorf("CSSKinUnLock Unlock vip error") @@ -592,19 +592,19 @@ func SkinUnLock(p *Player, id int32) (*pets.SkinInfo, pets.OpResultCode) { if e == nil || e.ItemNum < v.GetN() { return nil, pets.OpResultCode_OPRC_NotEnough } - change = append(change, &Item{ + change = append(change, &model.Item{ ItemId: v.GetId(), ItemNum: -v.GetN(), }) } - _, _, ok := BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, + _, _, ok := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: change, Add: 0, GainWay: common.GainWaySkinUnLock, Operator: "system", Remark: "皮肤解锁消耗", - noLog: false, + NoLog: false, }) if !ok { logger.Logger.Errorf("CSSKinUnLock Unlock error") diff --git a/worldsrv/action_phonelottery.go b/worldsrv/action_phonelottery.go index 65503c1..f8f39e1 100644 --- a/worldsrv/action_phonelottery.go +++ b/worldsrv/action_phonelottery.go @@ -308,7 +308,7 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da } p.AddDiamond(-diamondNum, 0, common.GainWayDiamondLottery, "sys", "钻石抽奖") pack := &player_proto.SCDiamondLottery{} - var items []*Item + var items []*model.Item for i := 1; i <= int(count); i++ { weight := 0 for _, lotteryInfo := range config.Info { @@ -354,7 +354,7 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da for _, lotteryInfo := range config.Info { if lotteryInfo.Id == awardId { - items = append(items, &Item{ + items = append(items, &model.Item{ ItemId: lotteryInfo.ItemId, // 物品id ItemNum: int64(lotteryInfo.Grade), // 数量 }) @@ -372,7 +372,7 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da value += int(lotteryInfo.Oddrate) if lotteryInfo.Type == 1 { if random <= value { - items = append(items, &Item{ + items = append(items, &model.Item{ ItemId: lotteryInfo.ItemId, // 物品id ItemNum: int64(lotteryInfo.Grade), // 数量 }) @@ -389,10 +389,10 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da } } } - BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: items, - Cost: []*model.ItemInfo{ + Cost: []*model.Item{ { ItemId: common.ItemIDDiamond, ItemNum: diamondNum, @@ -402,9 +402,9 @@ func (this *CSDiamondLotteryHandler) Process(s *netlib.Session, packetid int, da GainWay: common.GainWayDiamondLottery, Operator: "system", Remark: "钻石抽奖", - gameId: 0, - gameFreeId: 0, - noLog: false, + GameId: 0, + GameFreeId: 0, + NoLog: false, }) pack.LuckyScore = p.DiamondLotteryScore p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_DiamondLottery), pack) diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go index 93974ec..d800fbe 100644 --- a/worldsrv/action_player.go +++ b/worldsrv/action_player.go @@ -24,7 +24,6 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" - gamehall_proto "mongo.games.com/game/protocol/gamehall" player_proto "mongo.games.com/game/protocol/player" webapi_proto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/webapi" @@ -2059,13 +2058,13 @@ func CSPlayerData(s *netlib.Session, packetid int, data interface{}, sid int64) } // 给玩家发送三方余额状态 - statePack := &gamehall_proto.SCThridGameBalanceUpdateState{} - if player.thridBalanceReqIsSucces { - statePack.OpRetCode = gamehall_proto.OpResultCode_Game_OPRC_Sucess_Game - } else { - statePack.OpRetCode = gamehall_proto.OpResultCode_Game_OPRC_Error_Game - } - player.SendRawToClientIncOffLine(sid, s, int(gamehall_proto.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) + //statePack := &gamehall_proto.SCThridGameBalanceUpdateState{} + //if player.thridBalanceReqIsSucces { + // statePack.OpRetCode = gamehall_proto.OpResultCode_Game_OPRC_Sucess_Game + //} else { + // statePack.OpRetCode = gamehall_proto.OpResultCode_Game_OPRC_Error_Game + //} + //player.SendRawToClientIncOffLine(sid, s, int(gamehall_proto.GameHallPacketID_PACKET_SC_THRIDGAMEBALANCEUPDATESTATE), statePack) //抽奖次数兼容老玩家 if !player.IsRob && !player.InitLotteryStatus && WelfareMgrSington.GetPhoneLotteryStatus(player.Platform) == model.WelfareOpen { @@ -3102,9 +3101,9 @@ func CSUpdateAttribute(s *netlib.Session, packetId int, data interface{}, sid in send() // 获得10v卡 if p.GuideStep == 2 { - BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, - Change: []*Item{ + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: []*model.Item{ { ItemId: common.ItemIDVCard, ItemNum: 10, diff --git a/worldsrv/action_server.go b/worldsrv/action_server.go index 080ce3c..bf0779f 100644 --- a/worldsrv/action_server.go +++ b/worldsrv/action_server.go @@ -13,32 +13,32 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" - gamehall_proto "mongo.games.com/game/protocol/gamehall" - login_proto "mongo.games.com/game/protocol/login" - player_proto "mongo.games.com/game/protocol/player" - server_proto "mongo.games.com/game/protocol/server" + gamehallproto "mongo.games.com/game/protocol/gamehall" + loginproto "mongo.games.com/game/protocol/login" + playerproto "mongo.games.com/game/protocol/player" + serverproto "mongo.games.com/game/protocol/server" "mongo.games.com/game/srvdata" ) func init() { // 销毁房间 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWDestroyScene{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWDestroyScene{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_DESTROYSCENE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive GWDestroyScene:", pack) - if msg, ok := pack.(*server_proto.GWDestroyScene); ok { + if msg, ok := pack.(*serverproto.GWDestroyScene); ok { SceneMgrSingleton.DestroyScene(int(msg.GetSceneId()), msg.GetIsCompleted()) } return nil })) // 离开房间 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWPlayerLeave{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWPlayerLeave{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERLEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { - if msg, ok := pack.(*server_proto.GWPlayerLeave); ok { + 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 { @@ -58,7 +58,7 @@ func init() { case scene.IsMatchScene(): if !MatchSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v matchid:%v [matchscene]", - p.SnId, scene.sceneId, scene.gameId, scene.gameMode, scene.matchId) + p.SnId, scene.sceneId, scene.gameId, scene.gameMode, scene.MatchSortId) } else { //结算积分 if !p.IsRob { @@ -68,26 +68,12 @@ func init() { } } case scene.IsHundredScene(): - if !HundredSceneMgrSington.PlayerLeave(p, int(msg.GetReason())) { + 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: - if scene.ClubId > 0 { - //if club, ok := clubManager.clubList[scene.ClubId]; ok { - // if cp, ok1 := club.memberList[p.SnId]; ok1 { - // cp.GameCount += msg.GetGameTimes() - // cp.DayCoin += msg.GetTotalConvertibleFlow() - p.TotalConvertibleFlow - // } - //} - //if !ClubSceneMgrSington.PlayerLeave(p, int(msg.GetReason())) { - // logger.Logger.Warnf("Club leave room msg snid:%v sceneid:%v gameid:%v modeid:%v [coinscene]", - // p.SnId, scene.sceneId, scene.gameId, scene.mode) - // scene.PlayerLeave(p, int(msg.GetReason())) - //} - } else { - scene.PlayerLeave(p, int(msg.GetReason())) - } + scene.PlayerLeave(p, int(msg.GetReason())) } if p.scene != nil { @@ -129,7 +115,7 @@ func init() { Platform: p.Platform, }) //比赛场不处理下面的内容 - if !scene.IsMatchScene() { + if !scene.IsMatchScene() && !scene.IsCustom() { // 破产检测 sdata := srvdata.PBDB_GameSubsidyMgr.GetData(GameSubsidyid) if sdata != nil { @@ -164,39 +150,6 @@ func init() { gameCoinTs := msg.GetGameCoinTs() if !p.IsRob && !scene.IsTestScene() { - // 同步背包数据 - diffItems := []*Item{} - dbItemArr := srvdata.GameItemMgr.GetArr(p.Platform) - if dbItemArr != nil { - items := msg.GetItems() - if items != nil { - for _, dbItem := range dbItemArr { - //todo 临时修复,正常应该道具需要使用事务同步 - switch dbItem.GetId() { - case common.ItemIDPermit, common.ItemIDWeekScore: - continue - } - if itemNum, exist := items[dbItem.Id]; exist { - oldItem := BagMgrSingleton.GetItem(p.SnId, dbItem.Id) - diffNum := itemNum - if oldItem != nil { - diffNum = itemNum - oldItem.ItemNum - } - if diffNum != 0 { - item := &Item{ - ItemId: dbItem.Id, - ItemNum: diffNum, - } - diffItems = append(diffItems, item) - } - } - } - } - } - if diffItems != nil && len(diffItems) != 0 { - BagMgrSingleton.AddItems(p, diffItems, 0, 0, "", "", 0, 0, true) - } - //对账点同步 if p.GameCoinTs < gameCoinTs { p.GameCoinTs = gameCoinTs @@ -228,12 +181,12 @@ func init() { })) // 观众离开房间 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWPlayerLeave{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWPlayerLeave{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_AUDIENCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive PACKET_GW_AUDIENCELEAVE GWPlayerLeave:", pack) - if msg, ok := pack.(*server_proto.GWPlayerLeave); ok { + if msg, ok := pack.(*serverproto.GWPlayerLeave); ok { scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) if scene != nil { p := PlayerMgrSington.GetPlayerBySnId(msg.GetPlayerId()) @@ -253,8 +206,11 @@ func init() { p.GameCoinTs = gameCoinTs p.dirty = true } - - CoinSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) + if scene.IsMatchScene() { + scene.AudienceLeave(p, int(msg.GetReason())) + } else { + CoinSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) + } //变化金币 p.dirty = true @@ -270,12 +226,12 @@ func init() { })) // 房间游戏开始 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_SCENESTART), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWSceneStart{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_SCENESTART), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWSceneStart{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_SCENESTART), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_SCENESTART), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GW_SCENESTART GWSceneStart:", pack) - if msg, ok := pack.(*server_proto.GWSceneStart); ok { + if msg, ok := pack.(*serverproto.GWSceneStart); ok { scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) if scene != nil { scene.starting = msg.GetStart() @@ -298,29 +254,27 @@ func init() { })) // 房间游戏状态 - // 捕鱼 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_SCENESTATE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWSceneState{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_SCENESTATE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWSceneState{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_SCENESTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_SCENESTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GW_SCENESTATE GWSceneState:", pack) - if msg, ok := pack.(*server_proto.GWSceneState); ok { + if msg, ok := pack.(*serverproto.GWSceneState); ok { scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) if scene != nil { - scene.state = msg.GetCurrState() - scene.fishing = msg.GetFishing() + scene.sp.OnSceneState(scene, int(msg.GetRoomState())) } } return nil })) // 用户状态同步 flag - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWPlayerFlag{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWPlayerFlag{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERSTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive GWPlayerFlag:", pack) - if msg, ok := pack.(*server_proto.GWPlayerFlag); ok { + if msg, ok := pack.(*serverproto.GWPlayerFlag); ok { player := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) if player != nil { player.flag = msg.GetFlag() @@ -330,12 +284,12 @@ func init() { })) // 房间服务器状态切换 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.ServerStateSwitch{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.ServerStateSwitch{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GB_STATE_SWITCH), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GB_STATE_SWITCH ServerStateSwitch:", pack) - if sr, ok := pack.(*server_proto.ServerStateSwitch); ok { + if sr, ok := pack.(*serverproto.ServerStateSwitch); ok { srvid := int(sr.GetSrvId()) gameSess := GameSessMgrSington.GetGameSess(srvid) if gameSess != nil { @@ -360,13 +314,13 @@ func init() { // 游戏服务器的系统广播 // 捕鱼 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWNewNotice{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWNewNotice{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.HandlerWrapper(func(s *netlib.Session, + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_NEWNOTICE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive GWNewNotice:", pack) - if msg, ok := pack.(*server_proto.GWNewNotice); ok { + if msg, ok := pack.(*serverproto.GWNewNotice); ok { //立即发送改为定期发送,控制下广播包的频度 HorseRaceLampMgrSington.PushGameHorseRaceLamp(msg.GetCh(), msg.GetPlatform(), msg.GetContent(), int32(msg.GetMsgtype()), msg.GetIsrob(), msg.GetPriority()) } @@ -374,13 +328,13 @@ func init() { })) // 同步每局游戏那些玩家一起玩的 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWScenePlayerLog{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWScenePlayerLog{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.HandlerWrapper(func(s *netlib.Session, + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_SCENEPLAYERLOG), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive GWScenePlayerLog:", pack) - if msg, ok := pack.(*server_proto.GWScenePlayerLog); ok { + if msg, ok := pack.(*serverproto.GWScenePlayerLog); ok { sceneLimitMgr.ReceiveData(msg.GetGameId(), msg.GetSnids()) } return nil @@ -388,11 +342,11 @@ func init() { // 强制离开房间 // 返回房间失败 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWPlayerForceLeave{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWPlayerForceLeave{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { - if msg, ok := pack.(*server_proto.GWPlayerForceLeave); ok { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERFORCELEAVE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + if msg, ok := pack.(*serverproto.GWPlayerForceLeave); ok { logger.Logger.Warn("receive GWPlayerForceLeave:", msg) scene := SceneMgrSingleton.GetScene(int(msg.GetRoomId())) if scene != nil { @@ -406,13 +360,13 @@ func init() { logger.Logger.Warnf("GWPlayerForceLeave snid:%v sceneid:%v gameid:%v modeid:%v [coinscene]", p.SnId, scene.sceneId, scene.gameId, scene.gameMode) } case scene.IsHundredScene(): - if !HundredSceneMgrSington.PlayerLeave(p, int(msg.GetReason())) { + if !HundredSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { logger.Logger.Warnf("GWPlayerForceLeave snid:%v sceneid:%v gameid:%v modeid:%v [hundredcene]", p.SnId, scene.sceneId, scene.gameId, scene.gameMode) } case scene.IsMatchScene(): if !MatchSceneMgrSingleton.PlayerLeave(p, int(msg.GetReason())) { logger.Logger.Warnf("GWPlayerLeave snid:%v sceneid:%v gameid:%v modeid:%v matchid:%v [matchscene]", - p.SnId, scene.sceneId, scene.gameId, scene.gameMode, scene.matchId) + p.SnId, scene.sceneId, scene.gameId, scene.gameMode, scene.MatchSortId) } default: scene.PlayerLeave(p, int(msg.GetReason())) @@ -438,12 +392,12 @@ func init() { //1.同步玩家游戏场内的实时金币 //2.触发相关任务:统计有效下注金币数,赢取金币数,牌局次数等 //3.黑名单处理 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWPlayerData{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWPlayerData{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_PLAYERDATA), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive GWPlayerBet:", pack) - if msg, ok := pack.(*server_proto.GWPlayerData); ok { + if msg, ok := pack.(*serverproto.GWPlayerData); ok { scene := SceneMgrSingleton.GetScene(int(msg.GetSceneId())) if scene == nil { return nil @@ -573,56 +527,56 @@ func init() { })) //推送游戏的状态 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_GAMESTATE), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWGameState{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_GAMESTATE), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWGameState{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_GAMESTATE), netlib.HandlerWrapper(func(s *netlib.Session, + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_GAMESTATE), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GW_GAMESTATE GWGameState:", pack) - if msg, ok := pack.(*server_proto.GWGameState); ok { + if msg, ok := pack.(*serverproto.GWGameState); ok { scene := SceneMgrSingleton.GetScene(int(msg.GetSceneId())) if scene != nil { scene.State = msg.GetState() scene.StateSec = msg.GetSec() - scene.BankerListNum = msg.GetBankerListNum() + //scene.BankerListNum = msg.GetBankerListNum() if scene.State == scene.sp.GetBetState() { scene.StateTs = msg.GetTs() leftTime := int64(scene.StateSec) - (time.Now().Unix() - scene.StateTs) if leftTime < 0 { leftTime = 0 } - pack := &gamehall_proto.SCGameState{} - pack.List = append(pack.List, &gamehall_proto.GameState{ + pack := &gamehallproto.SCGameState{} + pack.List = append(pack.List, &gamehallproto.GameState{ GameFreeId: proto.Int32(scene.dbGameFree.GetId()), Ts: proto.Int64(leftTime), Sec: proto.Int32(scene.StateSec), }) - gameStateMgr.BrodcastGameState(int32(scene.gameId), scene.limitPlatform.IdStr, - int(gamehall_proto.GameHallPacketID_PACKET_SC_GAMESTATE), pack) + gameStateMgr.BrodcastGameState( + int32(scene.gameId), scene.limitPlatform.IdStr, int(gamehallproto.GameHallPacketID_PACKET_SC_GAMESTATE), pack) } } } return nil })) - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWGameJackList{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWGameJackList{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_JACKPOTLIST), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GW_JACKPOTLIST GWGameJackList:", pack) - if msg, ok := pack.(*server_proto.GWGameJackList); ok { + if msg, ok := pack.(*serverproto.GWGameJackList); ok { FishJackListMgr.Insert(msg.GetCoin(), msg.GetSnId(), msg.GetRoomId(), msg.GetJackType(), msg.GetGameId(), msg.GetPlatform(), msg.GetChannel(), msg.GetName()) } return nil })) - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWGameJackCoin{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWGameJackCoin{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_JACKPOTCOIN), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GW_JACKPOTCOIN GWGameJackCoin:", pack) - if msg, ok := pack.(*server_proto.GWGameJackCoin); ok { + if msg, ok := pack.(*serverproto.GWGameJackCoin); ok { for i, pl := range msg.Platform { FishJackpotCoinMgr.Jackpot[pl] = msg.Coin[i] } @@ -631,28 +585,28 @@ func init() { })) //强制换桌 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.GWChangeSceneEvent{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.GWChangeSceneEvent{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_GW_CHANGESCENEEVENT), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("receive SSPacketID_PACKET_GW_CHANGESCENEEVENT GWChangeSceneEvent:", pack) - if msg, ok := pack.(*server_proto.GWChangeSceneEvent); ok { + if msg, ok := pack.(*serverproto.GWChangeSceneEvent); ok { scene := SceneMgrSingleton.GetScene(int(msg.GetSceneId())) if scene != nil { - scene.PlayerTryChange() + //scene.PlayerTryChange() } } return nil })) //玩家中转消息 - netlib.RegisterFactory(int(server_proto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.PacketFactoryWrapper(func() interface{} { - return &server_proto.SSRedirectToPlayer{} + netlib.RegisterFactory(int(serverproto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.PacketFactoryWrapper(func() interface{} { + return &serverproto.SSRedirectToPlayer{} })) - netlib.RegisterHandler(int(server_proto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.HandlerWrapper(func(s *netlib.Session, + netlib.RegisterHandler(int(serverproto.SSPacketID_PACKET_SS_REDIRECTTOPLAYER), netlib.HandlerWrapper(func(s *netlib.Session, packetid int, pack interface{}) error { logger.Logger.Trace("SSRedirectToPlayer Process recv ", pack) - if msg, ok := pack.(*server_proto.SSRedirectToPlayer); ok { + if msg, ok := pack.(*serverproto.SSRedirectToPlayer); ok { p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) if p == nil { return nil @@ -661,6 +615,37 @@ func init() { } return nil })) + + // 同步道具数量 + netlib.Register(int(serverproto.SSPacketID_PACKET_PlayerChangeItems), &serverproto.PlayerChangeItems{}, HandlePlayerChangeItems) +} + +func HandlePlayerChangeItems(session *netlib.Session, packetId int, data interface{}) error { + logger.Logger.Tracef("HandlePlayerChangeItems recv %v", data) + msg, ok := data.(*serverproto.PlayerChangeItems) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnId()) + if p == nil { + return nil + } + var items []*model.Item + for _, v := range msg.GetItems() { + items = append(items, &model.Item{ + ItemId: v.GetId(), + ItemNum: v.GetNum(), + }) + } + _, _, ok = BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: items, + NoLog: true, + }) + if !ok { + logger.Logger.Errorf("HandlePlayerChangeItems add item failed %v", msg) + } + return nil } // 机器人服务器向worldsrv发送 @@ -670,13 +655,13 @@ type CSPMCmdHandler struct { } func (this *CSPMCmdPacketFactory) CreatePacket() interface{} { - pack := &player_proto.CSPMCmd{} + pack := &playerproto.CSPMCmd{} return pack } func (this *CSPMCmdHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSPMCmdHandler Process recv ", data) - if msg, ok := data.(*player_proto.CSPMCmd); ok { + if msg, ok := data.(*playerproto.CSPMCmd); ok { p := PlayerMgrSington.GetPlayer(sid) if p == nil { logger.Logger.Trace("CSPMCmdHandler p == nil") @@ -729,13 +714,13 @@ type CSRobotChgDataHandler struct { } func (this *CSRobotChgDataPacketFactory) CreatePacket() interface{} { - pack := &player_proto.CSRobotChgData{} + pack := &playerproto.CSRobotChgData{} return pack } func (this *CSRobotChgDataHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSRobotChgDataHandler Process recv ", data) - if _, ok := data.(*player_proto.CSRobotChgData); ok { + if _, ok := data.(*playerproto.CSRobotChgData); ok { p := PlayerMgrSington.GetPlayer(sid) if p == nil { logger.Logger.Trace("CSRobotChgDataHandler p == nil") @@ -756,13 +741,13 @@ type CSAccountInvalidHandler struct { } func (this *CSAccountInvalidPacketFactory) CreatePacket() interface{} { - pack := &login_proto.CSAccountInvalid{} + pack := &loginproto.CSAccountInvalid{} return pack } func (this *CSAccountInvalidHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { logger.Logger.Trace("CSAccountInvalidHandler Process recv ", data) - if _, ok := data.(*login_proto.CSAccountInvalid); ok { + if _, ok := data.(*loginproto.CSAccountInvalid); ok { p := PlayerMgrSington.GetPlayer(sid) if p != nil && p.IsRobot() { snid := p.SnId @@ -789,12 +774,15 @@ func (this *CSAccountInvalidHandler) Process(s *netlib.Session, packetid int, da } func init() { - common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdHandler{}) - netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdPacketFactory{}) + common.RegisterBoardCastHandler() + common.RegisterMulticastHandler() - common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataHandler{}) - netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataPacketFactory{}) + common.RegisterHandler(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdHandler{}) + netlib.RegisterFactory(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), &CSPMCmdPacketFactory{}) - common.RegisterHandler(int(login_proto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidHandler{}) - netlib.RegisterFactory(int(login_proto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidPacketFactory{}) + common.RegisterHandler(int(playerproto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataHandler{}) + netlib.RegisterFactory(int(playerproto.PlayerPacketID_PACKET_CS_ROBOTCHGDATA), &CSRobotChgDataPacketFactory{}) + + common.RegisterHandler(int(loginproto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidHandler{}) + netlib.RegisterFactory(int(loginproto.LoginPacketID_PACKET_CS_ACCOUNTINVALID), &CSAccountInvalidPacketFactory{}) } diff --git a/worldsrv/action_shop.go b/worldsrv/action_shop.go index 92a22da..ee854bc 100644 --- a/worldsrv/action_shop.go +++ b/worldsrv/action_shop.go @@ -311,6 +311,7 @@ func (this *CSShopExchangeHandler) Process(s *netlib.Session, packetid int, data if !f { pack := &shop.SCShopExchange{ RetCode: shop.OpResultCode_OPRC_ExchangeLimitAcc, + GoodsId: msg.GetGoodsId(), } p.SendToClient(int(shop.SPacketID_PACKET_SC_SHOP_EXCHANGE), pack) return nil diff --git a/worldsrv/action_tournament.go b/worldsrv/action_tournament.go index 3d44e47..64d889a 100644 --- a/worldsrv/action_tournament.go +++ b/worldsrv/action_tournament.go @@ -1,11 +1,11 @@ package main import ( - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/game/common" "mongo.games.com/game/protocol/tournament" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "sort" ) func CSTMInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { @@ -94,9 +94,144 @@ func CSSignRace(s *netlib.Session, packetid int, data interface{}, sid int64) er return nil } +func CSMatchList(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSMatchList ", data) + msg, ok := data.(*tournament.CSMatchList) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warnf("CSMatchList p == nil.") + return nil + } + pack := &tournament.SCTMMatchList{ + MatchId: msg.GetMatchId(), + Tp: msg.GetTp(), + } + + audience := msg.GetTp() == 1 + list := TournamentMgr.GetTmMatch(p.Platform, int32(msg.GetMatchId()), p.LastChannel, audience, 0) + + // 开始时间排序 + sort.Slice(list, func(i, j int) bool { + return list[i].StartTime < list[j].StartTime + }) + + for _, v := range list { + round := TournamentMgr.GetRound(v.SortId) + d := &tournament.MatchInfo{ + MatchId: int64(v.TMId), + InstanceId: v.SortId, + Name: v.gmd.GetMatchName(), + Round: round, + TotalRound: v.GetTotalRound(), + RemainNum: TournamentMgr.GetRemainNum(v.SortId), + Icon: v.gmd.GetTitleURL(), + } + for _, v := range TournamentMgr.GetRemainPlayer(v.SortId) { + var name, headUrl string + p := PlayerMgrSington.GetPlayerBySnId(v.SnId) + if p != nil { + name = p.Name + headUrl = p.HeadUrl + } + d.Players = append(d.Players, &tournament.MatchPlayer{ + SnId: v.SnId, + Name: name, + HeadUrl: headUrl, + UseRoleId: v.RoleId, + UseSkinId: v.SkinId, + Rank: v.Rank, + Score: v.Grade, + }) + } + + sort.Slice(d.Players, func(i, j int) bool { + if d.Players[i].Score > d.Players[j].Score { + return true + } + if d.Players[i].Score < d.Players[j].Score { + return false + } + return d.Players[i].SnId < d.Players[j].SnId + }) + + pack.List = append(pack.List, d) + } + + p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCMatchList), pack) + logger.Logger.Tracef("SCMatchList %v", pack) + return nil +} + +func CSRoomList(s *netlib.Session, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSRoomList ", data) + msg, ok := data.(*tournament.CSRoomList) + if !ok { + return nil + } + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warnf("CSRoomList p == nil.") + return nil + } + pack := &tournament.SCRoomList{ + Id: msg.GetId(), + Tp: msg.GetTp(), + } + + audience := msg.GetTp() == 1 + scenes := TournamentMgr.GetTmRoom(p.Platform, 0, p.LastChannel, audience, msg.GetId()) + for _, v := range scenes { + tm := TournamentMgr.GetTm(v.MatchSortId) + if tm == nil { + continue + } + room := &tournament.MatchRoom{ + RoomId: int64(v.sceneId), + MatchId: int64(tm.TMId), + InstanceId: tm.SortId, + Round: TournamentMgr.GetRound(tm.SortId), + TotalRound: tm.GetTotalRound(), + } + for _, v := range v.players { + if v.matchCtx == nil { + continue + } + + p := PlayerMgrSington.GetPlayerBySnId(v.matchCtx.copySnid) + + d := &tournament.MatchPlayer{ + SnId: v.matchCtx.copySnid, + Name: p.GetName(), + UseRoleId: v.matchCtx.copyRoleId, + UseSkinId: v.matchCtx.copySkinId, + Rank: TournamentMgr.GetRank(tm.SortId, v.matchCtx.copySnid), + Score: v.matchCtx.grade, + } + room.Players = append(room.Players, d) + } + sort.Slice(room.Players, func(i, j int) bool { + if room.Players[i].Rank == room.Players[j].Rank { + return room.Players[i].SnId < room.Players[j].SnId + } + return room.Players[i].Rank < room.Players[j].Rank + }) + pack.List = append(pack.List, room) + } + p.SendToClient(int(tournament.TOURNAMENTID_PACKET_TM_SCRoomList), pack) + logger.Logger.Tracef("SCRoomList %v", pack) + return nil +} + func init() { - // 比赛信息列表 + // 比赛配置列表 common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSTMInfo), tournament.CSTMInfo{}, CSTMInfo) // 比赛报名 common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSSignRace), tournament.CSSignRace{}, CSSignRace) + // 比赛中比赛列表 + common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSMatchList), tournament.CSMatchList{}, CSMatchList) + // 比赛中房间列表 + common.Register(int(tournament.TOURNAMENTID_PACKET_TM_CSRoomList), tournament.CSRoomList{}, CSRoomList) } diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 72b6e23..b9b993f 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -13,7 +13,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" - webapi_proto "mongo.games.com/game/protocol/webapi" + webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/protocol/welfare" "mongo.games.com/game/srvdata" "mongo.games.com/game/webapi" @@ -315,14 +315,14 @@ func CSInviteInfo(s *netlib.Session, packetid int, data interface{}, sid int64) var res []byte var err error task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - req := &webapi_proto.ASPlayerInviteLink{ + req := &webapiproto.ASPlayerInviteLink{ Platform: p.Platform, SnId: p.SnId, } res, err = webapi.ApiGetInviteLink(common.GetAppId(), req) return nil }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - info := webapi_proto.SAPlayerInviteLink{} + info := webapiproto.SAPlayerInviteLink{} if err != nil || res == nil { logger.Logger.Errorf("ApiGetInviteLink err %v or not return", err) } else { @@ -1029,7 +1029,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int } if isExchange { - var exchangeConfig *webapi_proto.PermitExchangeConfig + var exchangeConfig *webapiproto.PermitExchangeConfig for _, v := range channelConfig.GetExchangeConfig() { if v.GetId() == msg.GetId() { exchangeConfig = v @@ -1038,10 +1038,10 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int } if exchangeConfig != nil { // 检查背包是否足够 - var items []*Item + var items []*model.Item var costItems []*Item var cost, gain []model.AwardItem - var cost1 []*model.ItemInfo + var cost1 []*model.Item for _, v := range exchangeConfig.GetCost() { item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId()) if item == nil || item.ItemNum < v.GetItemNum() { @@ -1059,7 +1059,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int Id: v.GetItemId(), Num: v.GetItemNum(), }) - cost1 = append(cost1, &model.ItemInfo{ + cost1 = append(cost1, &model.Item{ ItemId: v.GetItemId(), ItemNum: v.GetItemNum(), }) @@ -1068,10 +1068,9 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int for _, v := range exchangeConfig.GetGain() { info := srvdata.GameItemMgr.Get(p.Platform, v.GetItemId()) if info != nil { - items = append(items, &Item{ + items = append(items, &model.Item{ ItemId: v.GetItemId(), ItemNum: v.GetItemNum(), - Name: info.Name, }) gain = append(gain, model.AwardItem{ Id: v.GetItemId(), @@ -1085,17 +1084,17 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int common.GainWayPermitExchangeCost, "system", "赛季通行证兑换消耗", 0, 0, false) } // 增加背包物品 - BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: items, Cost: cost1, Add: 0, GainWay: common.GainWayPermitExchangeGain, Operator: "system", Remark: "赛季通行证兑换获得", - gameId: 0, - gameFreeId: 0, - noLog: false, + GameId: 0, + GameFreeId: 0, + NoLog: false, }) p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix()) // 兑换记录 diff --git a/worldsrv/awardlogmgr.go b/worldsrv/awardlogmgr.go index 6c9f71d..ac285a5 100644 --- a/worldsrv/awardlogmgr.go +++ b/worldsrv/awardlogmgr.go @@ -13,7 +13,7 @@ import ( ) type AwardLogManager struct { - BaseClockSinker + common.BaseClockSinker AwardMap map[string]map[int32]map[int32]int64 //key1:plt key2:1话费 2实物 key3 itemId value:数量 AnnouncerLog map[string]map[int32][]model.AnnouncerLog //key:1话费 2实物 } @@ -128,6 +128,7 @@ func (this *AwardLogManager) Update() { func (this *AwardLogManager) Shutdown() { this.Save() + module.UnregisteModule(this) } func (this *AwardLogManager) OnHourTimer() { @@ -152,5 +153,5 @@ func (this *AwardLogManager) Save() { func init() { module.RegisteModule(AwardLogMgr, time.Hour, 0) - ClockMgrSington.RegisteSinker(AwardLogMgr) + common.ClockMgrSingleton.RegisterSinker(AwardLogMgr) } diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index 675e14f..acb0556 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -142,27 +142,32 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item { return item } -type ItemParam struct { - P *Player - Change []*Item // 道具变化数量 - Cost []*model.ItemInfo // 获得道具时消耗的道具数量 - Add int64 // 加成数量 - GainWay int32 // 记录类型 - Operator, Remark string // 操作人,备注 - gameId, gameFreeId int64 // 游戏id,场次id - noLog bool // 是否不记录日志 - LogId string // 撤销的id,道具兑换失败 -} - type AddItemParam struct { - Cost []*model.ItemInfo // 获得道具时消耗的道具数量 - LogId string + Cost []*model.Item // 获得道具时消耗的道具数量 + LogId string + RoomConfigId int32 } -func (this *BagMgr) AddItemsV2(args *ItemParam) (*BagInfo, bag.OpResultCode, bool) { - return this.AddItems(args.P, args.Change, args.Add, args.GainWay, args.Operator, args.Remark, args.gameId, args.gameFreeId, args.noLog, AddItemParam{ - Cost: args.Cost, - LogId: args.LogId, +func (this *BagMgr) AddItemsV2(args *model.AddItemParam) (*BagInfo, bag.OpResultCode, bool) { + p := PlayerMgrSington.GetPlayerBySnId(args.P.SnId) + var items []*Item + var costs []*model.Item + for _, v := range args.Change { + items = append(items, &Item{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + for _, v := range args.Cost { + costs = append(costs, &model.Item{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + return this.AddItems(p, items, args.Add, args.GainWay, args.Operator, args.Remark, args.GameId, args.GameFreeId, args.NoLog, AddItemParam{ + Cost: costs, + LogId: args.LogId, + RoomConfigId: args.RoomConfigId, }) } @@ -173,15 +178,17 @@ func (this *BagMgr) AddItemsV2(args *ItemParam) (*BagInfo, bag.OpResultCode, boo // remark 备注 // gameId 游戏id // gameFreeId 场次id -// noLog 是否不记录日志 +// NoLog 是否不记录日志 // Deprecated: use [ AddItemsV2 ] instead func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string, gameId, gameFreeId int64, noLog bool, params ...AddItemParam) (*BagInfo, bag.OpResultCode, bool) { - var cost []*model.ItemInfo + var cost []*model.Item var id string + var roomConfigId int32 if len(params) > 0 { cost = params[0].Cost id = params[0].LogId + roomConfigId = params[0].RoomConfigId } var items []*Item @@ -310,18 +317,19 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int num = -v.ItemNum } log := model.NewItemLogEx(model.ItemParam{ - Platform: p.Platform, - SnId: p.SnId, - LogType: int32(logType), - ItemId: v.ItemId, - ItemName: item.Name, - Count: num, - Remark: remark, - TypeId: gainWay, - GameId: gameId, - GameFreeId: gameFreeId, - Cost: cost, - LogId: id, + Platform: p.Platform, + SnId: p.SnId, + LogType: int32(logType), + ItemId: v.ItemId, + ItemName: item.Name, + Count: num, + Remark: remark, + TypeId: gainWay, + GameId: gameId, + GameFreeId: gameFreeId, + Cost: cost, + LogId: id, + RoomConfigId: roomConfigId, }) if log != nil { LogChannelSingleton.WriteLog(log) @@ -442,7 +450,7 @@ func (this *BagMgr) AddItem(p *Player, itemId, itemNum int64, add int64, gainWay return this.AddItems(p, []*Item{{ItemId: int32(itemId), ItemNum: itemNum}}, add, gainWay, operator, remark, gameId, gameFreeId, noLog, params...) } -func (this *BagMgr) AddItemsOffline(platform string, snid int32, addItems []*Item, gainWay int32, operator, remark string, +func (this *BagMgr) AddItemsOffline(platform string, snid int32, addItems []*model.Item, gainWay int32, operator, remark string, gameId, gameFreeId int64, noLog bool, callback func(err error)) { var findPlayer *model.PlayerBaseInfo task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { @@ -745,22 +753,22 @@ func (this *BagMgr) ItemExchangeCard(p *Player, itemId int32, money, cardType in }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { if err != nil || res.GetCode() == "" || res.GetTag() != webapiproto.TagCode_SUCCESS { //返回道具 - items := make([]*Item, 0) - items = append(items, &Item{ + items := make([]*model.Item, 0) + items = append(items, &model.Item{ ItemId: itemId, // 物品id ItemNum: 1, // 数量 ObtainTime: time.Now().Unix(), }) - this.AddItemsV2(&ItemParam{ - P: p, + this.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: items, Add: 0, GainWay: common.GainWayItemChange, Operator: "system", Remark: "背包内使用兑换失败", - gameId: 0, - gameFreeId: 0, - noLog: false, + GameId: 0, + GameFreeId: 0, + NoLog: false, LogId: logId, }) logger.Logger.Errorf("获取兑换码失败 snid:%v itemID:%v res:%v err:%v", p.SnId, itemId, res, err) diff --git a/worldsrv/broadcasthandler.go b/worldsrv/broadcasthandler.go deleted file mode 100644 index 38650cd..0000000 --- a/worldsrv/broadcasthandler.go +++ /dev/null @@ -1,62 +0,0 @@ -package main - -import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/srvlib" - "mongo.games.com/goserver/srvlib/protocol" -) - -var ( - BroadcastMaker = &BroadcastPacketFactory{} -) - -type BroadcastPacketFactory struct { -} - -type BroadcastHandler struct { -} - -func init() { - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), &BroadcastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_BROADCAST), BroadcastMaker) -} - -func (this *BroadcastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketBroadcast{} - return pack -} - -func (this *BroadcastPacketFactory) CreateBroadcastPacket(sp *protocol.BCSessionUnion, packetid int, data interface{}) (rawproto.Message, error) { - pack := &protocol.SSPacketBroadcast{ - SessParam: sp, - PacketId: proto.Int(packetid), - } - - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Warn("BroadcastPacketFactory.CreateBroadcastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *BroadcastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { - if bp, ok := data.(*protocol.SSPacketBroadcast); ok { - pd := bp.GetData() - sp := bp.GetSessParam() - if bcss := sp.GetBcss(); bcss != nil { - srvlib.ServerSessionMgrSington.Broadcast(int(bp.GetPacketId()), pd, int(bcss.GetSArea()), int(bcss.GetSType())) - } - } - return nil -} diff --git a/worldsrv/cachedata.go b/worldsrv/cachedata.go index 76ab4b5..f768133 100644 --- a/worldsrv/cachedata.go +++ b/worldsrv/cachedata.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "mongo.games.com/game/common" "sync" "time" ) @@ -23,7 +24,7 @@ var CacheDataMgr = &CacheDataManager{ } type CacheDataManager struct { - BaseClockSinker + common.BaseClockSinker MiniCache *sync.Map HourCache *sync.Map DayCache *sync.Map @@ -67,7 +68,7 @@ func (this *CacheDataManager) addCacheData(timeRange int, key string, data inter // 感兴趣所有clock event func (this *CacheDataManager) InterestClockEvent() int { - return 1 << CLOCK_EVENT_MINUTE + return 1 << common.ClockEventMinute } func (this *CacheDataManager) OnMiniTimer() { @@ -113,6 +114,7 @@ func (this *CacheDataManager) CacheBillNumber(billNo int, platform string) { key := fmt.Sprintf("BillNo-%v-%v", billNo, platform) this.addCacheData(AfterHour, key, key) } + func (this *CacheDataManager) CacheBillCheck(billNo int, platform string) bool { key := fmt.Sprintf("BillNo-%v-%v", billNo, platform) if _, ok := this.HourCache.Load(key); ok { @@ -121,11 +123,12 @@ func (this *CacheDataManager) CacheBillCheck(billNo int, platform string) bool { return false } } + func (this *CacheDataManager) ClearCacheBill(billNo int, platform string) { key := fmt.Sprintf("BillNo-%v-%v", billNo, platform) this.HourCache.Delete(key) } func init() { - ClockMgrSington.RegisteSinker(CacheDataMgr) + common.ClockMgrSingleton.RegisterSinker(CacheDataMgr) } diff --git a/worldsrv/coinscenemgr.go b/worldsrv/coinscenemgr.go index 809e9f8..007922f 100644 --- a/worldsrv/coinscenemgr.go +++ b/worldsrv/coinscenemgr.go @@ -10,21 +10,17 @@ import ( "mongo.games.com/goserver/core/transact" "mongo.games.com/game/common" + "mongo.games.com/game/model" "mongo.games.com/game/proto" - hall_proto "mongo.games.com/game/protocol/gamehall" + hallproto "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/protocol/server" "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" ) var CoinSceneMgrSingleton = &CoinSceneMgr{ - playerChanging: make(map[int32]int32), - //按平台管理 + playerChanging: make(map[int32]int32), scenesOfPlatform: make(map[string]map[int32]*CoinScenePool), - platformOfScene: make(map[int]string), - //按组管理 - scenesOfGroup: make(map[int32]map[int32]*CoinScenePool), - groupOfScene: make(map[int]int32), } type CreateRoomCache struct { @@ -33,16 +29,8 @@ type CreateRoomCache struct { } type CoinSceneMgr struct { - playerChanging map[int32]int32 // snid:gamefreeid 换桌中的玩家 - - //按平台管理 - scenesOfPlatform map[string]map[int32]*CoinScenePool // platform:gamefreeid - platformOfScene map[int]string // sceneid:platform; 创建房间后记录房间所在平台 - - //按组管理 - scenesOfGroup map[int32]map[int32]*CoinScenePool // groupid:gamefreeid - groupOfScene map[int]int32 // sceneid:groupid; - + scenesOfPlatform map[string]map[int32]*CoinScenePool // 场次房间池 platform:gamefreeid + playerChanging map[int32]int32 // 换桌中的玩家 snid:gamefreeid //延迟创建房间列表 delayCache []*CreateRoomCache // 待预创建房间 } @@ -50,215 +38,126 @@ type CoinSceneMgr struct { // GetCoinScenePool 获取一个场景池 // plt 平台id // id 场次id -func (csm *CoinSceneMgr) GetCoinScenePool(plt string, id int32) *CoinScenePool { +func (m *CoinSceneMgr) GetCoinScenePool(plt string, id int32) *CoinScenePool { gf := PlatformMgrSingleton.GetGameFree(plt, id) - if gf == nil { + if gf == nil || gf.DbGameFree == nil { return nil } - groupId := gf.GetGroupId() - if groupId != 0 { - if _, ok := csm.scenesOfGroup[groupId]; ok { - if csp, ok := csm.scenesOfGroup[groupId][id]; ok { - return csp - } - } - } else { - if ss, ok := csm.scenesOfPlatform[plt]; ok { - if csp, ok := ss[id]; ok && csp != nil { - return csp - } - } - } - if gf.GetDbGameFree() == nil { - return nil + if ss, ok := m.scenesOfPlatform[plt]; ok { + if csp, ok := ss[id]; ok && csp != nil { + return csp + } } // 创建了一个新的 - // 应该是走不到这里,因为模块启动时所有场次都创建了房间池 - pool := newCoinScenePool(plt, groupId, gf.GetDbGameFree()) - if groupId != 0 { - v, ok := csm.scenesOfGroup[groupId] - if !ok || v == nil { - csm.scenesOfGroup[groupId] = make(map[int32]*CoinScenePool) - } - csm.scenesOfGroup[groupId][id] = pool - } else { - v, ok := csm.scenesOfPlatform[plt] - if !ok || v == nil { - csm.scenesOfPlatform[plt] = make(map[int32]*CoinScenePool) - } - csm.scenesOfPlatform[plt][id] = pool + // 模块启动时所有场次都创建了房间池 + pool := newCoinScenePool(plt, gf.GetDbGameFree()) + v, ok := m.scenesOfPlatform[plt] + if !ok || v == nil { + m.scenesOfPlatform[plt] = make(map[int32]*CoinScenePool) } + m.scenesOfPlatform[plt][id] = pool return pool } -func (csm *CoinSceneMgr) findCoinScenePool(platform string, id int32) (pools map[int32]*CoinScenePool, groupID int32, - dbGameFree *server.DB_GameFree) { +func (m *CoinSceneMgr) findCoinScenePool(platform string, id int32) (pools map[int32]*CoinScenePool, dbGameFree *server.DB_GameFree) { gf := PlatformMgrSingleton.GetGameFree(platform, id) if gf == nil || gf.GetDbGameFree() == nil { - return nil, 0, nil - } - groupId := gf.GetGroupId() - - var ss map[int32]*CoinScenePool - var ok bool - if groupId != 0 { - ss, ok = csm.scenesOfGroup[groupId] - if !ok { - ss = make(map[int32]*CoinScenePool) - csm.scenesOfGroup[groupId] = ss - } - return ss, groupId, gf.GetDbGameFree() + return nil, nil } - ss, ok = csm.scenesOfPlatform[platform] - if !ok { + ss, ok := m.scenesOfPlatform[platform] + if !ok || ss == nil { ss = make(map[int32]*CoinScenePool) - csm.scenesOfPlatform[platform] = ss + m.scenesOfPlatform[platform] = ss } - return ss, 0, gf.GetDbGameFree() + return ss, gf.GetDbGameFree() } // PlayerEnter 玩家进入房间池 -func (csm *CoinSceneMgr) PlayerEnter(p *Player, id int32, roomId int32, exclude []int32, isChangeRoom bool) hall_proto.OpResultCode { - logger.Logger.Tracef("(csm *CoinSceneMgr) PlayerEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude) +func (m *CoinSceneMgr) PlayerEnter(p *Player, id int32, roomId int32, exclude []int32, isChangeRoom bool) hallproto.OpResultCode { + logger.Logger.Tracef("CoinSceneMgr PlayerEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude) if p.isDelete { //删档用户不让进游戏 - return hall_proto.OpResultCode_OPRC_RoomHadClosed + return hallproto.OpResultCode_OPRC_RoomHadClosed + } + // 玩家已经在房间里了 + if m.InCoinScene(p) { + logger.Logger.Warnf("CoinSceneMgr PlayerEnter snid:%v find in gamefreeid:%v roomId:%v", p.SnId, p.scene.dbGameFree.Id, p.scene.sceneId) + return hallproto.OpResultCode_OPRC_Error } - //多平台支持 platform := p.GetPlatform() if platform == nil { - return hall_proto.OpResultCode_OPRC_RoomHadClosed + return hallproto.OpResultCode_OPRC_RoomHadClosed } - - // 玩家已经在房间里了 - if p.scene != nil { - logger.Logger.Warnf("(csm *CoinSceneMgr) PlayerEnter snid:%v find in gameId:%v gamefreeid:%v", p.SnId, p.scene.gameId, id) - return hall_proto.OpResultCode_OPRC_Error - } - - csp := csm.GetCoinScenePool(platform.IdStr, id) - - ret := csp.PlayerEnter(p, roomId, exclude, isChangeRoom) - - logger.Logger.Warnf("(csm *CoinSceneMgr) PlayerEnter snid:%v find in id:%v exclude:%v return false", p.SnId, id, exclude) + csp := m.GetCoinScenePool(platform.IdStr, id) + ret := csp.playerEnter(p, roomId, exclude, isChangeRoom) + logger.Logger.Tracef("CoinSceneMgr PlayerEnter snid:%v id:%v ret:%v", p.SnId, id, ret) return ret } // AudienceEnter 观众进入房间 -func (csm *CoinSceneMgr) AudienceEnter(p *Player, id int32, roomId int32, exclude []int32, ischangeroom bool) hall_proto.OpResultCode { +func (m *CoinSceneMgr) AudienceEnter(p *Player, id int32, roomId int32, exclude []int32, ischangeroom bool) hallproto.OpResultCode { + logger.Logger.Tracef("CoinSceneMgr AudienceEnter snid:%v id:%v roomid:%v exclude:%v", p.SnId, id, roomId, exclude) + if p.isDelete { //删档用户不让进游戏 + return hallproto.OpResultCode_OPRC_RoomHadClosed + } + if m.InCoinScene(p) { + logger.Logger.Warnf("CoinSceneMgr AudienceEnter snid:%v find in gamefreeid:%v roomId:%v", p.SnId, p.scene.dbGameFree.Id, p.scene.sceneId) + return hallproto.OpResultCode_OPRC_Error + } //多平台支持 platform := p.GetPlatform() if platform == nil { - return hall_proto.OpResultCode_OPRC_RoomHadClosed + return hallproto.OpResultCode_OPRC_RoomHadClosed } - pools, _, _ := csm.findCoinScenePool(platform.IdStr, id) + pools, _ := m.findCoinScenePool(platform.IdStr, id) if pools == nil { - return hall_proto.OpResultCode_OPRC_RoomHadClosed + return hallproto.OpResultCode_OPRC_RoomHadClosed } - if len(pools) == 0 { - return hall_proto.OpResultCode_OPRC_NoFindDownTiceRoom + return hallproto.OpResultCode_OPRC_NoFindDownTiceRoom } - if csp, ok := pools[id]; ok && csp != nil { - ret := csp.AudienceEnter(p, roomId, exclude, ischangeroom) - logger.Logger.Warnf("(csm *CoinSceneMgr) AudienceEnter snid:%v find in id:%v exclude:%v return false", p.SnId, id, exclude) - return ret - } - logger.Logger.Warnf("(csm *CoinSceneMgr) AudienceEnter snid:%v find in id:%v exclude:%v csp.AudienceEnter return false", p.SnId, id, exclude) - return hall_proto.OpResultCode_OPRC_Error -} - -func (csm *CoinSceneMgr) playerLeave(p *Player, reason int) bool { - if p == nil || p.scene == nil { - return true + csp, ok := pools[id] + if !ok || csp == nil { + return hallproto.OpResultCode_OPRC_RoomHadClosed } - s := p.scene - if s.groupId != 0 { - if ss, ok := csm.scenesOfGroup[s.groupId]; ok && ss != nil { - if csp, ok := ss[s.dbGameFree.GetId()]; ok && csp != nil { - if !csp.PlayerLeave(p, reason) { - csp.AudienceLeave(p, reason) - } - } - return true - } - } - - // 玩家身上平台 - if platform := p.GetPlatform(); platform != nil { - if ss, ok := csm.scenesOfPlatform[platform.IdStr]; ok && ss != nil { - if csp, ok := ss[s.dbGameFree.GetId()]; ok && csp != nil { - if !csp.PlayerLeave(p, reason) { - csp.AudienceLeave(p, reason) - } - } - return true - } - } - - // 房间所在平台 - if s.limitPlatform != nil { - if ss, ok := csm.scenesOfPlatform[s.limitPlatform.IdStr]; ok && ss != nil { - if csp, ok := ss[s.dbGameFree.GetId()]; ok && csp != nil { - if !csp.PlayerLeave(p, reason) { - csp.AudienceLeave(p, reason) - } - } - return true - } - } - - return true + ret := csp.audienceEnter(p, roomId, exclude, ischangeroom) + logger.Logger.Tracef("CoinSceneMgr AudienceEnter snid:%v id:%v ret:%v", p.SnId, id, ret) + return ret } // PlayerLeave 玩家离开 -func (csm *CoinSceneMgr) PlayerLeave(p *Player, reason int) bool { - logger.Logger.Tracef("玩家离开: snid %v, reason %v isAudience %v", p.SnId, reason) - return csm.playerLeave(p, reason) +// 游戏服玩家离开房间消息触发 +func (m *CoinSceneMgr) PlayerLeave(p *Player, reason int) bool { + logger.Logger.Tracef("玩家离开: snid %v, reason %v", p.SnId, reason) + if p.scene == nil || p.scene.csp == nil { + return false + } + if p.scene.csp.playerLeave(p, reason) { + return true + } + if p.scene.csp.audienceLeave(p, reason) { + return true + } + return false } // OnDestroyScene 解散房间 +// 游戏服解散房间消息触发 // sceneId 房间id -func (csm *CoinSceneMgr) OnDestroyScene(sceneId int) { - if platformName, ok := csm.platformOfScene[sceneId]; ok { - if ss, ok := csm.scenesOfPlatform[platformName]; ok { - for _, csp := range ss { - csp.OnDestroyScene(sceneId) - } - } - delete(csm.platformOfScene, sceneId) +func (m *CoinSceneMgr) OnDestroyScene(sceneId int) { + if s := SceneMgrSingleton.GetScene(sceneId); s != nil && s.csp != nil { + s.csp.onDestroyScene(sceneId) } - - if groupId, ok := csm.groupOfScene[sceneId]; ok { - if ss, ok := csm.scenesOfGroup[groupId]; ok { - for _, csp := range ss { - csp.OnDestroyScene(sceneId) - } - } - delete(csm.groupOfScene, sceneId) - } -} - -// GetPlatformBySceneId 获取房间所在平台 -func (csm *CoinSceneMgr) GetPlatformBySceneId(sceneId int) string { - if platformName, ok := csm.platformOfScene[sceneId]; ok { - return platformName - } - s := SceneMgrSingleton.GetScene(sceneId) - if s != nil && s.limitPlatform != nil { - return s.limitPlatform.IdStr - } - return DefaultPlatform } // GetPlayerNums 获取场次人数 -func (csm *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 { +func (m *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 { //多平台支持 platform := p.GetPlatform() var nums [10]int32 @@ -275,22 +174,11 @@ func (csm *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int3 for _, id := range ids { gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, id) if gps != nil { - if gps.GroupId != 0 { - if ss, exist := csm.scenesOfGroup[gps.GroupId]; exist { - if csp, exist := ss[id]; exist { - sceneType := csp.GetSceneType() - 1 - if sceneType >= 0 && sceneType < len(nums) { - nums[sceneType] += csp.GetPlayerNum() + csp.GetFakePlayerNum() - } - } - } - } else { - if ss, ok := csm.scenesOfPlatform[platform.IdStr]; ok { - if csp, exist := ss[id]; exist { - sceneType := csp.GetSceneType() - 1 - if sceneType >= 0 && sceneType < len(nums) { - nums[sceneType] += csp.GetPlayerNum() + csp.GetFakePlayerNum() - } + if ss, ok := m.scenesOfPlatform[platform.IdStr]; ok { + if csp, exist := ss[id]; exist { + sceneType := csp.GetSceneType() - 1 + if sceneType >= 0 && sceneType < len(nums) { + nums[sceneType] += csp.GetPlayerNum() + csp.GetFakePlayerNum() } } } @@ -304,9 +192,9 @@ func (csm *CoinSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int3 } // InCoinScene 是否在场次中 -func (csm *CoinSceneMgr) InCoinScene(p *Player) bool { +func (m *CoinSceneMgr) InCoinScene(p *Player) bool { if p == nil { - logger.Logger.Tracef("(csm *CoinSceneMgr) InCoinScene p == nil snid:%v ", p.SnId) + logger.Logger.Tracef("(m *CoinSceneMgr) InCoinScene p == nil") return false } @@ -321,10 +209,10 @@ func (csm *CoinSceneMgr) InCoinScene(p *Player) bool { } // PlayerTryLeave 通知游戏服务玩家要离开房间 -func (csm *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hall_proto.OpResultCode { - if !csm.InCoinScene(p) { - logger.Logger.Tracef("(csm *CoinSceneMgr) PlayerTryLeave !csm.InCoinScene(p) snid:%v ", p.SnId) - return hall_proto.OpResultCode_OPRC_Sucess +func (m *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hallproto.OpResultCode { + if !m.InCoinScene(p) { + logger.Logger.Tracef("(m *CoinSceneMgr) PlayerTryLeave !m.InCoinScene(p) snid:%v ", p.SnId) + return hallproto.OpResultCode_OPRC_Sucess } // 通知gamesrv @@ -332,46 +220,54 @@ func (csm *CoinSceneMgr) PlayerTryLeave(p *Player, isAudience bool) hall_proto.O if isAudience { op = common.CoinSceneOp_AudienceLeave } - pack := &hall_proto.CSCoinSceneOp{ - Id: proto.Int32(p.scene.csp.id), + pack := &hallproto.CSCoinSceneOp{ + Id: proto.Int32(p.scene.csp.ID()), OpType: proto.Int32(op), } - proto.SetDefaults(pack) - common.TransmitToServer(p.sid, int(hall_proto.CoinSceneGamePacketID_PACKET_CS_COINSCENE_OP), pack, p.scene.gameSess.Session) - logger.Logger.Tracef("(csm *CoinSceneMgr) PlayerTryLeave snid:%v id:%v", p.SnId, pack.GetId()) - return hall_proto.OpResultCode_OPRC_OpYield + common.TransmitToServer(p.sid, int(hallproto.CoinSceneGamePacketID_PACKET_CS_COINSCENE_OP), pack, p.scene.gameSess.Session) + logger.Logger.Tracef("(m *CoinSceneMgr) PlayerTryLeave snid:%v id:%v", p.SnId, pack.GetId()) + + return hallproto.OpResultCode_OPRC_OpYield } -func (csm *CoinSceneMgr) PlayerInChanging(p *Player) bool { - _, exist := csm.playerChanging[p.SnId] +// PlayerInChanging 换房中 +func (m *CoinSceneMgr) PlayerInChanging(p *Player) bool { + _, exist := m.playerChanging[p.SnId] return exist } -func (csm *CoinSceneMgr) ClearPlayerChanging(p *Player) { - delete(csm.playerChanging, p.SnId) +// ClearPlayerChanging 换房结束 +func (m *CoinSceneMgr) ClearPlayerChanging(p *Player) { + delete(m.playerChanging, p.SnId) } -func (csm *CoinSceneMgr) PlayerTryChange(p *Player, id int32, exclude []int32, isAudience bool) hall_proto.OpResultCode { - if csm.InCoinScene(p) { - return csm.StartChangeCoinSceneTransact(p, id, exclude, isAudience) +// PlayerTryChange 换房 +// id 场次id +// excludeRoomId 排除的房间id +// isAudience 是否是观众 +func (m *CoinSceneMgr) PlayerTryChange(p *Player, id int32, excludeRoomId []int32, isAudience bool) hallproto.OpResultCode { + if m.InCoinScene(p) { + return m.StartChangeCoinSceneTransact(p, id, excludeRoomId, isAudience) } + // 不在场次中,进入房间观战 if isAudience { - return csm.AudienceEnter(p, id, 0, exclude, true) + return m.AudienceEnter(p, id, 0, excludeRoomId, true) } - return csm.PlayerEnter(p, id, 0, exclude, true) + // 不在场次中,进入房间 + return m.PlayerEnter(p, id, 0, excludeRoomId, true) } -func (csm *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclude []int32, isAudience bool) hall_proto.OpResultCode { +func (m *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclude []int32, isAudience bool) hallproto.OpResultCode { if p == nil || p.scene == nil { - logger.Logger.Warnf("(csm *CoinSceneMgr) StartChangeCoinSceneTransact p == nil || p.scene == nil snid:%v id:%v", p.SnId, id) - return hall_proto.OpResultCode_OPRC_Error + logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact p == nil || p.scene == nil snid:%v id:%v", p.SnId, id) + return hallproto.OpResultCode_OPRC_Error } tNow := time.Now() if !p.lastChangeScene.IsZero() && tNow.Sub(p.lastChangeScene) < time.Second { - logger.Logger.Warnf("(csm *CoinSceneMgr) StartChangeCoinSceneTransact !p.lastChangeScene.IsZero() && tNow.Sub(p.lastChangeScene) < time.Second snid:%v id:%v", p.SnId, id) - return hall_proto.OpResultCode_OPRC_ChangeRoomTooOften + logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact !p.lastChangeScene.IsZero() && tNow.Sub(p.lastChangeScene) < time.Second snid:%v id:%v", p.SnId, id) + return hallproto.OpResultCode_OPRC_ChangeRoomTooOften } tnp := &transact.TransNodeParam{ @@ -391,12 +287,12 @@ func (csm *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclu tNode := transact.DTCModule.StartTrans(tnp, ctx, CoinSceneChangeTimeOut) if tNode != nil { tNode.Go(core.CoreObject()) - csm.playerChanging[p.SnId] = id + m.playerChanging[p.SnId] = id p.lastChangeScene = tNow - return hall_proto.OpResultCode_OPRC_Sucess + return hallproto.OpResultCode_OPRC_Sucess } - logger.Logger.Warnf("(csm *CoinSceneMgr) StartChangeCoinSceneTransact tNode == nil snid:%v id:%v", p.SnId, id) - return hall_proto.OpResultCode_OPRC_Error + logger.Logger.Warnf("(m *CoinSceneMgr) StartChangeCoinSceneTransact tNode == nil snid:%v id:%v", p.SnId, id) + return hallproto.OpResultCode_OPRC_Error } // TouchCreateRoom 触发预创建房间 @@ -404,44 +300,47 @@ func (csm *CoinSceneMgr) StartChangeCoinSceneTransact(p *Player, id int32, exclu // 2.游戏服建立连接后触发 // 3.房间解散后触发 // 4.场次配置更新后 -func (csm *CoinSceneMgr) TouchCreateRoom(platform string, gameFreeId int32) { +func (m *CoinSceneMgr) TouchCreateRoom(platform string, gameFreeId int32) { + if model.GameParamData.ClosePreCreateRoom { + return + } gf := PlatformMgrSingleton.GetGameFree(platform, gameFreeId) if gf.Status && gf.DbGameFree.GetCreateRoomNum() > 0 { logger.Logger.Tracef("TouchCreateRoom platform:%v gameFreeId:%v", platform, gameFreeId) - csm.delayCache = append(csm.delayCache, &CreateRoomCache{ + m.delayCache = append(m.delayCache, &CreateRoomCache{ platformName: platform, gameFreeId: gameFreeId, }) } } -func (csm *CoinSceneMgr) ModuleName() string { +func (m *CoinSceneMgr) ModuleName() string { return "CoinSceneMgr" } -func (csm *CoinSceneMgr) Init() { +func (m *CoinSceneMgr) Init() { // 房间池初始化 for _, platform := range PlatformMgrSingleton.GetPlatforms() { if platform.Isolated || platform.IdStr == "" { for _, v := range srvdata.PBDB_GameFreeMgr.Datas.GetArr() { gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, v.GetId()) if gps != nil { - csm.GetCoinScenePool(platform.IdStr, v.GetId()) - csm.TouchCreateRoom(platform.IdStr, v.GetId()) + m.GetCoinScenePool(platform.IdStr, v.GetId()) + m.TouchCreateRoom(platform.IdStr, v.GetId()) } } } } } -func (csm *CoinSceneMgr) Update() { - cnt := len(csm.delayCache) +func (m *CoinSceneMgr) Update() { + cnt := len(m.delayCache) if cnt > 0 { - data := csm.delayCache[cnt-1] - csm.delayCache = csm.delayCache[:cnt-1] + data := m.delayCache[cnt-1] + m.delayCache = m.delayCache[:cnt-1] gf := PlatformMgrSingleton.GetGameFree(data.platformName, data.gameFreeId) if gf != nil && gf.DbGameFree != nil { - csp := csm.GetCoinScenePool(data.platformName, data.gameFreeId) + csp := m.GetCoinScenePool(data.platformName, data.gameFreeId) if csp != nil { csp.PreCreateRoom() } @@ -449,49 +348,43 @@ func (csm *CoinSceneMgr) Update() { } } -func (csm *CoinSceneMgr) Shutdown() { - module.UnregisteModule(csm) +func (m *CoinSceneMgr) Shutdown() { + module.UnregisteModule(m) } //=====================PlatformObserver====================== -func (this *CoinSceneMgr) OnPlatformCreate(p *Platform) { +func (m *CoinSceneMgr) OnPlatformCreate(p *Platform) { } -func (this *CoinSceneMgr) OnPlatformDestroy(p *Platform) { +func (m *CoinSceneMgr) OnPlatformDestroy(p *Platform) { if p == nil { return } var ids []int - if v, ok := this.scenesOfPlatform[p.IdStr]; ok { + if v, ok := m.scenesOfPlatform[p.IdStr]; ok { for _, csp := range v { for _, scene := range csp.scenes { ids = append(ids, scene.sceneId) } } } - SceneMgrSingleton.DoDelete(ids, true) + SceneMgrSingleton.SendGameDestroy(ids, true) } -func (this *CoinSceneMgr) OnPlatformChangeDisabled(p *Platform, disabled bool) { +func (m *CoinSceneMgr) OnPlatformChangeDisabled(p *Platform, disabled bool) { if disabled { - this.OnPlatformDestroy(p) + m.OnPlatformDestroy(p) } } -func (this *CoinSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCfg *webapi.GameFree) { +func (m *CoinSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCfg *webapi.GameFree) { if p == nil || newCfg == nil { return } - var ss map[int32]*CoinScenePool - var ok bool - if oldCfg.GroupId != newCfg.GroupId || oldCfg.GroupId != 0 { - ss, ok = this.scenesOfGroup[oldCfg.GroupId] - } else { - ss, ok = this.scenesOfPlatform[p.IdStr] - } + ss, ok := m.scenesOfPlatform[p.IdStr] if !ok || ss == nil { return } @@ -502,63 +395,37 @@ func (this *CoinSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCfg * for _, scene := range cps.scenes { ids = append(ids, scene.sceneId) } - SceneMgrSingleton.DoDelete(ids, true) - this.TouchCreateRoom(p.IdStr, newCfg.DbGameFree.Id) + SceneMgrSingleton.SendGameDestroy(ids, true) + m.TouchCreateRoom(p.IdStr, newCfg.DbGameFree.Id) } } -func (this *CoinSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFreeId int32) { +func (m *CoinSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFreeId int32) { if p == nil { return } - if csps, ok := this.scenesOfPlatform[p.IdStr]; ok { - var ids []int - for _, csp := range csps { + var ids []int + if v, ok := m.scenesOfPlatform[p.IdStr]; ok { + for _, csp := range v { for _, scene := range csp.scenes { if scene.dbGameFree.Id == gameFreeId { ids = append(ids, scene.sceneId) } } } - SceneMgrSingleton.DoDelete(ids, true) } + SceneMgrSingleton.SendGameDestroy(ids, true) } //=========================PlatformGameGroupObserver============================== -func (this *CoinSceneMgr) OnGameGroupUpdate(oldCfg, newCfg *webapi.GameConfigGroup) { - if newCfg == nil { - return - } - if scenes, exist := this.scenesOfGroup[newCfg.Id]; exist { - if cps, ok := scenes[newCfg.DbGameFree.Id]; ok { - needDestroy := false - if cps.dbGameFree.GetBot() != newCfg.DbGameFree.GetBot() || - cps.dbGameFree.GetBaseScore() != newCfg.DbGameFree.GetBaseScore() || - cps.dbGameFree.GetLimitCoin() != newCfg.DbGameFree.GetLimitCoin() || - cps.dbGameFree.GetMaxCoinLimit() != newCfg.DbGameFree.GetMaxCoinLimit() || - cps.dbGameFree.GetTaxRate() != newCfg.DbGameFree.GetTaxRate() || - !common.SliceInt64Equal(cps.dbGameFree.GetOtherIntParams(), newCfg.DbGameFree.GetOtherIntParams()) || - !common.SliceInt64Equal(cps.dbGameFree.GetRobotTakeCoin(), newCfg.DbGameFree.GetRobotTakeCoin()) || - !common.SliceInt64Equal(cps.dbGameFree.GetRobotLimitCoin(), newCfg.DbGameFree.GetRobotLimitCoin()) { - needDestroy = true - } - //TODO 预创建房间配置更新,unsupport group model - cps.dbGameFree = newCfg.DbGameFree - if needDestroy { - var ids []int - for _, scene := range cps.scenes { - ids = append(ids, scene.sceneId) - } - SceneMgrSingleton.DoDelete(ids, true) - } - } - } +func (m *CoinSceneMgr) OnGameGroupUpdate(oldCfg, newCfg *webapi.GameConfigGroup) { + } //=========================GameSessionListener====================================== -func (csm *CoinSceneMgr) OnGameSessionRegiste(gs *GameSession) { +func (m *CoinSceneMgr) OnGameSessionRegiste(gs *GameSession) { wildGs := len(gs.gameIds) == 0 || common.InSliceInt32(gs.gameIds, 0) // 是否所有游戏都支持 for _, platform := range PlatformMgrSingleton.GetPlatforms() { if platform.IdStr == DefaultPlatform { @@ -568,13 +435,13 @@ func (csm *CoinSceneMgr) OnGameSessionRegiste(gs *GameSession) { gps := PlatformMgrSingleton.GetGameFrees(platform.IdStr) for _, v := range gps { if v != nil && (wildGs || common.InSliceInt32(gs.gameIds, v.DbGameFree.GetGameId())) { - csm.TouchCreateRoom(platform.IdStr, v.DbGameFree.Id) + m.TouchCreateRoom(platform.IdStr, v.DbGameFree.Id) } } } } -func (this *CoinSceneMgr) OnGameSessionUnregiste(gs *GameSession) { +func (m *CoinSceneMgr) OnGameSessionUnregiste(gs *GameSession) { //todo 游戏服务断开,是否解散房间? } diff --git a/worldsrv/coinscenepool.go b/worldsrv/coinscenepool.go index f6688d9..c4782fb 100644 --- a/worldsrv/coinscenepool.go +++ b/worldsrv/coinscenepool.go @@ -1,9 +1,9 @@ package main import ( - "mongo.games.com/game/common" "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/common" "mongo.games.com/game/model" gamehallproto "mongo.games.com/game/protocol/gamehall" serverproto "mongo.games.com/game/protocol/server" @@ -13,8 +13,6 @@ import ( // CoinScenePool 房间池 type CoinScenePool struct { platform string // 平台id - groupId int32 // 组id - id int32 // 场次id dbGameFree *serverproto.DB_GameFree // 场次配置 dbGameRule *serverproto.DB_GameRule // 场次配置 scenes map[int]*Scene // 所有房间,房间id @@ -26,7 +24,7 @@ type CoinScenePool struct { policy ICoinScenePool } -func newCoinScenePool(platform string, groupId int32, dbGameFree *serverproto.DB_GameFree) *CoinScenePool { +func newCoinScenePool(platform string, dbGameFree *serverproto.DB_GameFree) *CoinScenePool { if dbGameFree == nil { return nil } @@ -42,8 +40,6 @@ func newCoinScenePool(platform string, groupId int32, dbGameFree *serverproto.DB csp := &CoinScenePool{ platform: platform, - groupId: groupId, - id: dbGameFree.GetId(), dbGameFree: dbGameFree, dbGameRule: dbGameRule, scenes: make(map[int]*Scene), @@ -59,6 +55,10 @@ func newCoinScenePool(platform string, groupId int32, dbGameFree *serverproto.DB return csp } +func (csp *CoinScenePool) ID() int32 { + return csp.dbGameFree.Id +} + func (csp *CoinScenePool) GetPlayerNum() int32 { return int32(len(csp.players)) } @@ -73,7 +73,8 @@ func (csp *CoinScenePool) GetFakePlayerNum() int32 { return 0 } -// GetSceneType 获取场次id +// GetSceneType 获取场次类型 +// 新手场,中级场 ... func (csp *CoinScenePool) GetSceneType() int { if csp.dbGameFree != nil { return int(csp.dbGameFree.GetSceneType()) @@ -89,14 +90,79 @@ func (csp *CoinScenePool) CanInviteRob() bool { return false } -// CanEnter 检查入场条件 -func (csp *CoinScenePool) CanEnter(p *Player) gamehallproto.OpResultCode { +// PreCreateRoom 预创建房间 +func (csp *CoinScenePool) PreCreateRoom() { + if csp.platform == DefaultPlatform || model.GameParamData.ClosePreCreateRoom { + return + } + if p := PlatformMgrSingleton.GetPlatform(csp.platform); p == nil || p.Disable { + return + } + preCreateNum := int(csp.dbGameFree.GetCreateRoomNum()) + if preCreateNum <= 0 { + return + } + num := preCreateNum - csp.GetRoomNum(common.SceneMode_Public) + if num > 0 { + logger.Logger.Tracef("预创建房间 [inc:%v] platform:%v gameFreeId:%v", num, csp.platform, csp.dbGameFree.Id) + for i := 0; i < num; i++ { + scene := csp.policy.NewPreCreateScene(csp) + if scene != nil { + csp.AddScene(scene) + } + } + } +} + +func (csp *CoinScenePool) GetRoomNum(mode ...int) int { + tp := 0 + if len(mode) > 0 { + tp = mode[0] + } + + var num int + for _, scene := range csp.scenes { + if tp > 0 { + if scene.IsSceneMode(tp) { + num++ + } + } else { + num++ + } + } + return num +} + +// GetHasTruePlayerSceneCnt 有真人的房间数量 +func (csp *CoinScenePool) GetHasTruePlayerSceneCnt() int { + cnt := 0 + for _, s := range csp.scenes { + if s.GetTruePlayerCnt() != 0 { + cnt++ + } + } + return cnt +} + +// AddScene 添加房间 +// 自定义房间参数的时候创建房间后添加到房间池 +// 创建房间后,调用AddScene添加到房间池,在玩家进入房间之前调用 +func (csp *CoinScenePool) AddScene(s *Scene) { + if s == nil { + return + } + csp.scenes[s.sceneId] = s + s.csp = csp +} + +// canEnter 检查入场条件 +func (csp *CoinScenePool) canEnter(p *Player) gamehallproto.OpResultCode { if csp.dbGameFree == nil || p == nil { return gamehallproto.OpResultCode_OPRC_Error } //检测房间状态是否开启 - gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.id) + gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.ID()) if gps == nil || !gps.Status { return gamehallproto.OpResultCode_OPRC_RoomHadClosed } @@ -106,7 +172,7 @@ func (csp *CoinScenePool) CanEnter(p *Player) gamehallproto.OpResultCode { return gamehallproto.OpResultCode_OPRC_RoomHadClosed } - //检查游戏次数限制 + // 检查游戏次数限制 if !p.IsRob { todayData, _ := p.GetDaliyGameData(int(dbGameFree.GetId())) if dbGameFree.GetPlayNumLimit() != 0 && @@ -119,14 +185,14 @@ func (csp *CoinScenePool) CanEnter(p *Player) gamehallproto.OpResultCode { return csp.policy.CanEnter(csp, p) } -// CanAudienceEnter 检查观众入场条件 -func (csp *CoinScenePool) CanAudienceEnter(p *Player) gamehallproto.OpResultCode { +// canAudienceEnter 检查观众入场条件 +func (csp *CoinScenePool) canAudienceEnter(p *Player) gamehallproto.OpResultCode { if csp.dbGameFree == nil || p == nil { return gamehallproto.OpResultCode_OPRC_Error } //检测房间状态是否开启 - gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.id) + gps := PlatformMgrSingleton.GetGameFree(p.Platform, csp.ID()) if gps == nil { return gamehallproto.OpResultCode_OPRC_RoomHadClosed } @@ -139,35 +205,16 @@ func (csp *CoinScenePool) CanAudienceEnter(p *Player) gamehallproto.OpResultCode return csp.policy.CanAudienceEnter(csp, p) } -// AddScene 添加房间 -func (csp *CoinScenePool) AddScene(s *Scene) { - if s == nil { - return - } - csp.scenes[s.sceneId] = s - s.csp = csp - if csp.groupId != 0 { - CoinSceneMgrSingleton.groupOfScene[s.sceneId] = csp.groupId - } else { - CoinSceneMgrSingleton.platformOfScene[s.sceneId] = csp.platform - } -} - -// PlayerEnter 玩家进入房间池 +// playerEnter 玩家进入房间池 // exclude 排除的房间id // isChangeRoom 是否换房 -func (csp *CoinScenePool) PlayerEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode { - if ret := csp.CanEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess { - logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter find snid:%v csp.CanEnter coin:%v ret:%v id:%v", p.SnId, +func (csp *CoinScenePool) playerEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode { + if ret := csp.canEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess { + logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter find snid:%v csp.canEnter coin:%v ret:%v id:%v", p.SnId, p.Coin, ret, csp.dbGameFree.GetId()) return ret } - if p.scene != nil { - logger.Logger.Warnf("(csp *CoinScenePool) PlayerEnter[p.scene != nil] find snid:%v in scene:%v gameId:%v", p.SnId, p.scene.sceneId, p.scene.gameId) - return gamehallproto.OpResultCode_OPRC_Error - } - var scene *Scene // 进入房间 // 指定房间id进入,忽略排除exclude,只有机器人和进入预创建房间才允许 @@ -204,15 +251,17 @@ func (csp *CoinScenePool) PlayerEnter(p *Player, roomId int32, exclude []int32, if scene == nil { scene = csp.policy.NewScene(csp, p) if scene != nil { + logger.Logger.Infof("(csp *CoinScenePool) PlayerEnter create new scene:%v snid:%v gamefreeid:%v", scene.sceneId, p.SnId, csp.ID()) csp.AddScene(scene) } else { - logger.Logger.Errorf("Create %v scene failed.", csp.id) + logger.Logger.Errorf("Create %v scene failed.", csp.ID()) } } if scene != nil { if scene.PlayerEnter(p, -1, isChangeRoom) { - csp.OnPlayerEnter(p, scene) + logger.Logger.Infof("(csp *CoinScenePool) PlayerEnter snid:%v sceneid:%v gamefreeid:%v success", p.SnId, scene.sceneId, csp.ID()) + csp.onPlayerEnter(p, scene) return gamehallproto.OpResultCode_OPRC_Sucess } } @@ -220,18 +269,13 @@ func (csp *CoinScenePool) PlayerEnter(p *Player, roomId int32, exclude []int32, return gamehallproto.OpResultCode_OPRC_SceneServerMaintain } -// AudienceEnter 观众入场 -func (csp *CoinScenePool) AudienceEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode { - if ret := csp.CanAudienceEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess { - logger.Logger.Warnf("(csp *CoinScenePool) AudienceEnter find snid:%v csp.CanEnter coin:%v ret:%v id:%v", p.SnId, p.Coin, ret, csp.dbGameFree.GetId()) +// audienceEnter 观众入场 +func (csp *CoinScenePool) audienceEnter(p *Player, roomId int32, exclude []int32, isChangeRoom bool) gamehallproto.OpResultCode { + if ret := csp.canAudienceEnter(p); ret != gamehallproto.OpResultCode_OPRC_Sucess { + logger.Logger.Warnf("(csp *CoinScenePool) AudienceEnter find snid:%v csp.canEnter coin:%v ret:%v id:%v", p.SnId, p.Coin, ret, csp.dbGameFree.GetId()) return ret } - if p.scene != nil { - logger.Logger.Warnf("(csp *CoinScenePool) AudienceEnter[p.scene != nil] find snid:%v in scene:%v gameId:%v", p.SnId, p.scene.sceneId, p.scene.gameId) - return gamehallproto.OpResultCode_OPRC_Error - } - var scene *Scene if roomId != 0 { if s, ok := csp.scenes[int(roomId)]; ok { @@ -261,7 +305,8 @@ func (csp *CoinScenePool) AudienceEnter(p *Player, roomId int32, exclude []int32 } if scene.AudienceEnter(p, isChangeRoom) { - csp.OnPlayerEnter(p, scene) + logger.Logger.Infof("(csp *CoinScenePool) AudienceEnter snid:%v sceneid:%v gamefreeid:%v success", p.SnId, scene.sceneId, csp.ID()) + csp.onPlayerEnter(p, scene) return gamehallproto.OpResultCode_OPRC_Sucess } @@ -269,23 +314,45 @@ func (csp *CoinScenePool) AudienceEnter(p *Player, roomId int32, exclude []int32 return gamehallproto.OpResultCode_OPRC_NoFindDownTiceRoom } -// OnPlayerEnter 玩家进入房间完成 -func (csp *CoinScenePool) OnPlayerEnter(p *Player, scene *Scene) { +// onPlayerEnter 玩家进入房间完成 +func (csp *CoinScenePool) onPlayerEnter(p *Player, scene *Scene) { csp.players[p.SnId] = struct{}{} csp.policy.OnPlayerEnter(csp, p, scene) } -// PlayerLeave 玩家离开房间 -func (csp *CoinScenePool) PlayerLeave(p *Player, reason int) bool { - if p.scene == nil { - return true +// OnPlayerLeave 离开房间完成 +func (csp *CoinScenePool) onPlayerLeave(s *Scene, p *Player) { + if s == nil || p == nil { + return } - if p.scene.csp != csp && p.scene == csp.scenes[p.scene.sceneId] { - logger.Logger.Error("bug") + delete(csp.players, p.SnId) + + // 玩家离开结算空房间的私人房 + if s.IsPrivateScene() { + if s.IsEmpty() { + s.SendGameDestroy(false) + } + return } - if p.scene.csp != csp { - return false + + // 解散空房间并且房间数量大于预创建房间数量 + if s.IsPreCreateScene() { + if s.IsEmpty() { + var hasCnt int + for _, scene := range csp.scenes { + if s.limitPlatform.IdStr == scene.limitPlatform.IdStr { + hasCnt++ + } + } + if hasCnt > int(csp.dbGameFree.GetCreateRoomNum()) { + s.SendGameDestroy(false) + } + } } +} + +// playerLeave 玩家离开房间 +func (csp *CoinScenePool) playerLeave(p *Player, reason int) bool { if p.scene != csp.scenes[p.scene.sceneId] { logger.Logger.Error("bug") } @@ -306,18 +373,12 @@ func (csp *CoinScenePool) PlayerLeave(p *Player, reason int) bool { csp.policy.OnPlayerLeave(csp, s, p) - csp.OnPlayerLeave(s, p) + csp.onPlayerLeave(s, p) return true } -// AudienceLeave 观众离开房间 -func (csp *CoinScenePool) AudienceLeave(p *Player, reason int) bool { - if p.scene == nil { - return true - } - if p.scene.csp != csp { - return false - } +// audienceLeave 观众离开房间 +func (csp *CoinScenePool) audienceLeave(p *Player, reason int) bool { s, ok := csp.scenes[p.scene.sceneId] if !ok || s == nil { return false @@ -335,52 +396,23 @@ func (csp *CoinScenePool) AudienceLeave(p *Player, reason int) bool { csp.policy.OnPlayerLeave(csp, s, p) - csp.OnPlayerLeave(s, p) + csp.onPlayerLeave(s, p) return true } -// OnPlayerLeave 离开房间完成 -func (csp *CoinScenePool) OnPlayerLeave(s *Scene, p *Player) { - if s == nil || p == nil { - return - } - delete(csp.players, p.SnId) - - // 玩家离开结算空房间的私人房 - if s.IsPrivateScene() { - if s.IsEmpty() { - s.DoDelete(false) - } - return - } - - // 解散空房间并且房间数量大于预创建房间数量 - if s.IsPreCreateScene() { - if s.IsEmpty() { - var hasCnt int - for _, scene := range csp.scenes { - if s.limitPlatform.IdStr == scene.limitPlatform.IdStr { - hasCnt++ - } - } - if hasCnt > int(csp.dbGameFree.GetCreateRoomNum()) { - s.DoDelete(false) - } - } - } -} - -// OnDestroyScene 解散房间 -// 房间解散一定是游戏服确认的,worldsrv收到游戏房间解散消息后解散房间 -func (csp *CoinScenePool) OnDestroyScene(sceneId int) { +// onDestroyScene 解散房间 +// 房间解散一定是游戏服确认的,worldsrv收到游戏房间解散消息后解散房间,此时房间内玩家应该都离开了 +// 或者游戏服异常断开触发房间解散,此时房间中还有人 +func (csp *CoinScenePool) onDestroyScene(sceneId int) { scene, ok := csp.scenes[sceneId] - if !ok { + if !ok || scene == nil { return } logger.Logger.Tracef("(csp *CoinScenePool) OnDestroyScene scene:%v", sceneId) // todo 是否需要优化 + // 游戏服异常断开,同步一次金币 for id := range scene.players { player := PlayerMgrSington.GetPlayerBySnId(id) if player != nil { @@ -407,96 +439,13 @@ func (csp *CoinScenePool) OnDestroyScene(sceneId int) { } csp.policy.OnDestroyScene(csp, sceneId) + for k := range scene.players { + delete(csp.players, k) + } + for k := range scene.audiences { + delete(csp.players, k) + } scene.csp = nil // 解除关联 delete(csp.scenes, sceneId) CoinSceneMgrSingleton.TouchCreateRoom(csp.platform, csp.dbGameFree.Id) } - -// PreCreateRoom 预创建房间 -func (csp *CoinScenePool) PreCreateRoom() { - if csp.platform == DefaultPlatform { - return - } - if p := PlatformMgrSingleton.GetPlatform(csp.platform); p == nil || p.Disable { - return - } - preCreateNum := int(csp.dbGameFree.GetCreateRoomNum()) - if preCreateNum <= 0 || model.GameParamData.ClosePreCreateRoom { - return - } - num := preCreateNum - csp.GetRoomNum(common.SceneMode_Public) - if num > 0 { - logger.Logger.Tracef("预创建房间 [inc:%v] platform:%v gameFreeId:%v", num, csp.platform, csp.dbGameFree.Id) - for i := 0; i < num; i++ { - scene := csp.policy.NewPreCreateScene(csp) - if scene != nil { - csp.AddScene(scene) - } - } - } -} - -func (csp *CoinScenePool) GetRoomNum(mode ...int) int { - tp := 0 - if len(mode) > 0 { - tp = mode[0] - } - - var num int - for _, scene := range csp.scenes { - if tp > 0 { - if scene.IsSceneMode(tp) { - num++ - } - } else { - num++ - } - } - return num -} - -// ListRoom 房间列表 -//func (csp *CoinScenePool) ListRoom(p *Player) bool { -// if p.scene != nil { -// logger.Logger.Warnf("(csp *CoinScenePool) PlayerListRoom[p.scene != nil] find snid:%v in scene:%v gameId:%v", p.SnId, p.scene.sceneId, p.scene.gameId) -// return false -// } -// -// if len(csp.scenes) == 0 { -// return false -// } -// -// pack := &gamehallproto.SCCoinSceneListRoom{ -// Id: csp.dbGameFree.Id, -// LimitCoin: csp.dbGameFree.LimitCoin, -// MaxCoinLimit: csp.dbGameFree.MaxCoinLimit, -// BaseScore: csp.dbGameFree.BaseScore, -// MaxScore: csp.dbGameFree.MaxChip, -// OtherIntParams: csp.dbGameFree.OtherIntParams, -// } -// -// maxPlayerNum := 0 -// for sceneId, s := range csp.scenes { -// data := &gamehallproto.CoinSceneInfo{ -// SceneId: proto.Int(sceneId), -// PlayerNum: proto.Int(len(s.players)), -// } -// pack.Datas = append(pack.Datas, data) -// maxPlayerNum = s.playerNum -// } -// pack.MaxPlayerNum = proto.Int(maxPlayerNum) -// proto.SetDefaults(pack) -// p.SendToClient(int(gamehallproto.CoinSceneGamePacketID_PACKET_SC_COINSCENE_LISTROOM), pack) -// return true -//} - -// GetHasTruePlayerSceneCnt 有真人的房间数量 -func (csp *CoinScenePool) GetHasTruePlayerSceneCnt() int { - cnt := 0 - for _, s := range csp.scenes { - if s.GetTruePlayerCnt() != 0 { - cnt++ - } - } - return cnt -} diff --git a/worldsrv/coinscenepool_base.go b/worldsrv/coinscenepool_base.go index 670d816..ee214c1 100644 --- a/worldsrv/coinscenepool_base.go +++ b/worldsrv/coinscenepool_base.go @@ -3,8 +3,6 @@ package main import ( "sort" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/protocol/gamehall" @@ -157,7 +155,7 @@ func (this *BaseCoinScenePool) PlayerEnter(pool *CoinScenePool, p *Player, exclu } } else { //按类型匹配 //优先真人 - if scene == nil && len(scenes) != 0 && matchTrueManRule == MatchTrueManPriority { + if len(scenes) != 0 && matchTrueManRule == MatchTrueManPriority { var selScene []*Scene for _, value := range scenes { if value != nil { @@ -211,14 +209,6 @@ func (this *BaseCoinScenePool) AudienceLeave(pool *CoinScenePool, p *Player, rea func (this *BaseCoinScenePool) OnPlayerLeave(pool *CoinScenePool, s *Scene, p *Player) {} func (this *BaseCoinScenePool) NewScene(pool *CoinScenePool, p *Player) *Scene { - gameId := int(pool.dbGameRule.GetGameId()) - gs := GameSessMgrSington.GetMinLoadSess(gameId) - if gs == nil { - logger.Logger.Warnf("Get %v game min session failed.", gameId) - return nil - } - - gameMode := pool.dbGameRule.GetGameMode() params := common.CopySliceInt32ToInt64(pool.dbGameRule.GetParams()) limitPlatform := PlatformMgrSingleton.GetPlatform(pool.platform) if limitPlatform == nil || !limitPlatform.Isolated { @@ -226,9 +216,14 @@ func (this *BaseCoinScenePool) NewScene(pool *CoinScenePool, p *Player) *Scene { } sceneId := SceneMgrSingleton.GenOneCoinSceneId() - - scene := SceneMgrSingleton.CreateScene(0, 0, sceneId, gameId, int(gameMode), common.SceneMode_Public, - 1, -1, params, gs, limitPlatform, pool.groupId, pool.dbGameFree, pool.id) + scene := SceneMgrSingleton.CreateScene(&CreateSceneParam{ + RoomId: sceneId, + SceneMode: common.SceneMode_Public, + Params: params, + GS: nil, + Platform: limitPlatform, + GF: pool.dbGameFree, + }) return scene } diff --git a/worldsrv/coinscenepool_local.go b/worldsrv/coinscenepool_local.go index d458859..39cd9c6 100644 --- a/worldsrv/coinscenepool_local.go +++ b/worldsrv/coinscenepool_local.go @@ -20,10 +20,10 @@ func init() { RegisterCoinScenePool(common.GameId_TienLen_yl, local) RegisterCoinScenePool(common.GameId_TienLen_toend, local) RegisterCoinScenePool(common.GameId_TienLen_yl_toend, local) - RegisterCoinScenePool(common.GameId_TaLa, local) - RegisterCoinScenePool(common.GameId_SamLoc, local) RegisterCoinScenePool(common.GameID_ThirteenFree, local) RegisterCoinScenePool(common.GameID_ThirteenFreeLaiZi, local) + //RegisterCoinScenePool(common.GameId_TaLa, local) + //RegisterCoinScenePool(common.GameId_SamLoc, local) } type CoinScenePoolLocal struct { @@ -187,14 +187,7 @@ func (l *CoinScenePoolLocal) PlayerEnter(pool *CoinScenePool, p *Player, exclude func (l *CoinScenePoolLocal) NewScene(pool *CoinScenePool, p *Player) *Scene { gameId := int(pool.dbGameFree.GetGameId()) - gs := GameSessMgrSington.GetMinLoadSess(gameId) - if gs == nil { - logger.Logger.Errorf("Get %v game min session failed.", gameId) - return nil - } - sceneId := SceneMgrSingleton.GenOneCoinSceneId() - params := pool.dbGameRule.GetParams() limitPlatform := PlatformMgrSingleton.GetPlatform(pool.platform) if limitPlatform == nil || !limitPlatform.Isolated { @@ -203,7 +196,6 @@ func (l *CoinScenePoolLocal) NewScene(pool *CoinScenePool, p *Player) *Scene { //根据携带金额取可创房间 DB_Createroom baseScore := int32(0) - gameSite := 0 playerTakeCoin := p.Coin var dbCreateRoom *serverproto.DB_Createroom arrs := srvdata.PBDB_CreateroomMgr.Datas.Arr @@ -225,26 +217,26 @@ func (l *CoinScenePoolLocal) NewScene(pool *CoinScenePool, p *Player) *Scene { } if len(dbCreateRoom.GetBetRange()) != 0 && dbCreateRoom.GetBetRange()[0] != 0 { baseScore = common.RandInt32Slice(dbCreateRoom.GetBetRange()) - gameSite = int(dbCreateRoom.GetGameSite()) } if baseScore == 0 { - logger.Logger.Tracef("CoinScenePool CreateLocalGameNewScene failed! baseScore==0") + logger.Logger.Tracef("CoinScenePool CreateLocalGameNewScene failed! BaseScore==0") return nil } - - scene := SceneMgrSingleton.CreateLocalGameScene(p.SnId, sceneId, gameId, gameSite, common.SceneMode_Public, 1, common.CopySliceInt32ToInt64(params), - gs, limitPlatform, 0, pool.dbGameFree, baseScore, pool.groupId, pool.id) + scene := SceneMgrSingleton.CreateScene(&CreateSceneParam{ + CreateId: p.SnId, + RoomId: sceneId, + SceneMode: common.SceneMode_Public, + Params: common.CopySliceInt32ToInt64(params), + GS: nil, + Platform: limitPlatform, + GF: pool.dbGameFree, + BaseScore: baseScore, + }) return scene } func (l *CoinScenePoolLocal) NewPreCreateScene(pool *CoinScenePool) *Scene { gameId := int(pool.dbGameRule.GetGameId()) - gs := GameSessMgrSington.GetMinLoadSess(gameId) - if gs == nil { - logger.Logger.Warnf("Get %v game min session failed.", gameId) - return nil - } - sceneId := SceneMgrSingleton.GenOneCoinSceneId() params := pool.dbGameRule.GetParams() @@ -261,7 +253,6 @@ func (l *CoinScenePoolLocal) NewPreCreateScene(pool *CoinScenePool) *Scene { } //根据SceneType随机可创房间 DB_Createroom baseScore := int32(0) - gameSite := 0 var dbCreateRooms []*serverproto.DB_Createroom arrs := srvdata.PBDB_CreateroomMgr.Datas.Arr for i := len(arrs) - 1; i >= 0; i-- { @@ -281,13 +272,19 @@ func (l *CoinScenePoolLocal) NewPreCreateScene(pool *CoinScenePool) *Scene { dbCreateRoom := dbCreateRooms[randIdx] if len(dbCreateRoom.GetBetRange()) != 0 && dbCreateRoom.GetBetRange()[0] != 0 { baseScore = common.RandInt32Slice(dbCreateRoom.GetBetRange()) - gameSite = int(dbCreateRoom.GetGameSite()) } if baseScore != 0 { - scene = SceneMgrSingleton.CreateLocalGameScene(0, sceneId, gameId, gameSite, common.SceneMode_Public, 1, common.CopySliceInt32ToInt64(params), - gs, limitPlatform, playerNum, pool.dbGameFree, baseScore, pool.groupId, pool.id) + scene = SceneMgrSingleton.CreateScene(&CreateSceneParam{ + RoomId: sceneId, + SceneMode: common.SceneMode_Public, + Params: common.CopySliceInt32ToInt64(params), + Platform: limitPlatform, + GF: pool.dbGameFree, + PlayerNum: int32(playerNum), + BaseScore: baseScore, + }) if scene != nil { - logger.Logger.Tracef("CreateLocalGameScene success.gameId:%v gameSite:%v baseScore:%v randIdx:%v", scene.gameId, scene.gameSite, baseScore, randIdx) + logger.Logger.Tracef("CreateLocalGameScene success.gameId:%v gameSite:%v BaseScore:%v randIdx:%v", scene.gameId, scene.dbGameFree.GetSceneType(), baseScore, randIdx) } } } diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 5817a68..d78a051 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -5,7 +5,6 @@ import ( "encoding/json" "strconv" "strings" - "time" "go.etcd.io/etcd/client/v3" "mongo.games.com/goserver/core/basic" @@ -57,7 +56,7 @@ func init() { // 代理 etcd.Register(etcd.ETCDKEY_PROMOTER_PREFIX, PromoterConfig{}, handlerEvent) // 赠送 - etcd.Register(etcd.ETCDKEY_ACT_GIVE_PREFIX, PromoterConfig{}, handlerEvent) + etcd.Register(etcd.ETCDKEY_ACT_GIVE_PREFIX, ActGivePlateformConfig{}, handlerEvent) // 7日签到 etcd.Register(etcd.ETCDKEY_ACT_7SIGN, webapi.Welfare7SignDateList{}, platformConfigEvent) // 转盘 @@ -90,6 +89,84 @@ func init() { etcd.Register(etcd.ETCDKEY_AWARD_CONFIG, webapi.AwardLogConfig{}, platformConfigEvent) // 新手引导 etcd.Register(etcd.ETCDKEY_GUIDE, webapi.GuideConfig{}, platformConfigEvent) + // 比赛观众 + etcd.Register(etcd.ETCDKEY_MatchAudience, webapi.MatchAudience{}, handlerEvent) + // 小精灵配置 + etcd.Register(etcd.ETCDKEY_Spirit, webapi.SpiritConfig{}, platformConfigEvent) + + PlatformMgrSingleton.GetConfig("1").RoomType = map[int32]*webapi.RoomType{ + 1: { + Platform: "1", + Id: 1, + Name: "{\"zh\":\"话费赛\",\"kh\":\"话费赛\",\"vi\":\"话费赛\",\"en\":\"话费赛\"}", + On: 1, + SortId: 1, + }, + 2: { + Platform: "1", + Id: 2, + Name: "{\"zh\":\"物品赛\",\"kh\":\"物品赛\",\"vi\":\"物品赛\",\"en\":\"物品赛\"}", + On: 1, + SortId: 2, + }, + } + + PlatformMgrSingleton.UpdateRoomConfig(&webapi.RoomConfig{ + Platform: "1", + Id: 1, + Name: "{\"zh\":\"1元话费赛\",\"kh\":\"1元话费赛\",\"vi\":\"1元话费赛\",\"en\":\"1元话费赛\"}", + RoomType: 1, + On: 1, + SortId: 1, + Cost: []*webapi.ItemInfo{ + { + ItemId: 100001, + ItemNum: 12, + }, + }, + Reward: []*webapi.ItemInfo{ + { + ItemId: 100001, + ItemNum: 12, + }, + }, + OnChannelName: []string{common.ChannelOfficial, common.ChannelWeb, common.ChannelGooglePlay}, + GameFreeId: []int32{2150001, 2160001, 2170001, 2180001}, + Round: []int32{1, 2, 3, 4}, + PlayerNum: []int32{2, 3, 4}, + NeedPassword: 3, + CostType: 3, + Voice: 3, + ImageURI: "", + }) + PlatformMgrSingleton.UpdateRoomConfig(&webapi.RoomConfig{ + Platform: "1", + Id: 2, + Name: "{\"zh\":\"2元话费赛\",\"kh\":\"2元话费赛\",\"vi\":\"2元话费赛\",\"en\":\"2元话费赛\"}", + RoomType: 1, + On: 1, + SortId: 2, + Cost: []*webapi.ItemInfo{ + { + ItemId: 100001, + ItemNum: 12, + }, + }, + Reward: []*webapi.ItemInfo{ + { + ItemId: 100001, + ItemNum: 12, + }, + }, + OnChannelName: []string{common.ChannelOfficial, common.ChannelWeb, common.ChannelGooglePlay}, + GameFreeId: []int32{2150001, 2160001, 2170001, 2180001}, + Round: []int32{1, 2, 3, 4}, + PlayerNum: []int32{2, 3, 4}, + NeedPassword: 3, + CostType: 3, + Voice: 3, + ImageURI: "", + }) } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -117,11 +194,7 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).CommonNotices = config if !isInit { // 通知公共变更 - for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] { - if v != nil && v.IsOnLine() { - v.SendToClient(int(hallproto.GameHallPacketID_PACKET_SC_NoticeChange), &hallproto.SCNoticeChange{}) - } - } + PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(hallproto.GameHallPacketID_PACKET_SC_NoticeChange), &hallproto.SCNoticeChange{}) } case *webapi.GameConfigGlobal: if isInit { @@ -190,16 +263,12 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).ChannelSwitch[config.GetTp()] = config if !isInit { // 通知变更 - for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] { - if v != nil && v.IsOnLine() { - v.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCExchangeChannel), &playerproto.SCExchangeChannel{ - Datas: []*playerproto.ChannelSwitch{{ - Tp: config.Tp, - OnChannelName: config.OnChannelName, - }}, - }) - } - } + PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(playerproto.PlayerPacketID_PACKET_SCExchangeChannel), &playerproto.SCExchangeChannel{ + Datas: []*playerproto.ChannelSwitch{{ + Tp: config.Tp, + OnChannelName: config.OnChannelName, + }}, + }) } case *webapi.GameConfigGroup: PlatformGameGroupMgrSington.UpsertGameGroup(config) @@ -247,36 +316,40 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).PermitStartTs = startTs PlatformMgrSingleton.GetConfig(config.Platform).PermitEndTs = endTs } - f := func() { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - if st.StartTs <= 0 || st.EndTs <= 0 { - return nil - } - b, err := json.Marshal(st) + f1 := func() { + if st.StartTs <= 0 || st.EndTs <= 0 { + return + } + b, err := json.Marshal(st) + if err != nil { + logger.Logger.Errorf("permit startts save error: %v", err) + } else { + logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) + err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) if err != nil { - logger.Logger.Errorf("permit startts save error: %v", err) - } else { - logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) - err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) - if err != nil { - logger.Logger.Errorf("permit startts update error:%v", err) - } + logger.Logger.Errorf("permit startts update error:%v", err) } - return nil - }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - if st.StartTs > 0 { - LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ - Platform: config.Platform, - StartTs: st.StartTs, - EndTs: st.EndTs - 1, - }) - } - })).StartByExecutor("permit_start_ts") + } + } + f2 := func() { + if st.StartTs > 0 { + LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ + Platform: config.Platform, + StartTs: st.StartTs, + EndTs: st.EndTs - 1, + }) + } } if isInit { - time.AfterFunc(time.Second*5, f) //todo 优化 + f1() + f2() } else { - f() + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + f1() + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + f2() + })).StartByExecutor("permit_start_ts") } case *webapi.ItemConfig: @@ -307,13 +380,9 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e }) } if len(items) > 0 { - for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] { - if v != nil && v.IsOnLine() { - v.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCItem), &playerproto.SCItem{ - Items: items, - }) - } - } + PlayerMgrSington.BroadcastMessageToPlatform(config.Platform, int(playerproto.PlayerPacketID_PACKET_SCItem), &playerproto.SCItem{ + Items: items, + }) } } @@ -325,23 +394,54 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).AwardLogConfig = config case *webapi.GuideConfig: PlatformMgrSingleton.GetConfig(config.Platform).GuideConfig = config + case *webapi.SpiritConfig: + PlatformMgrSingleton.GetConfig(config.Platform).SpiritConfig = config + if !isInit { + PlayerMgrSington.BroadcastDataConfigToPlatform(config.Platform, common.DataConfigSprite) + } default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } - PlatformMgrSingleton.GetConfig("1").GuideConfig = &webapi.GuideConfig{ - Platform: "1", - On: common.On, - Skip: common.On, - } } func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { - if data == nil { - return + var plt string + var param []int + equalFunc := func(key string) bool { + plt = "" + param = param[:0] + if strings.HasPrefix(completeKey, key) { + arr := strings.Split(strings.TrimPrefix(completeKey, key), "/") + for k, v := range arr { + if v == "" { + continue + } + if len(v) > 0 { + plt = v + for _, v := range arr[k+1:] { + n, err := strconv.Atoi(v) + if err != nil { + continue + } + param = append(param, n) + } + return true + } + } + } + return false } - switch config := data.(type) { - case *BlackInfoApi: + + switch { + case equalFunc(etcd.ETCDKEY_BLACKLIST_PREFIX): + var config *BlackInfoApi + if data != nil { + config = data.(*BlackInfoApi) + } if isInit { + if config == nil { + return + } BlackListMgrSington.InitBlackInfo(config) } else { switch event.Type { @@ -358,6 +458,9 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c } } case clientv3.EventTypePut: + if config == nil { + return + } BlackListMgrSington.UpsertBlackInfo(config) if (config.Space & int32(BlackState_Login)) != 0 { var targetPlayer []*Player //确定用户是否在线 @@ -377,8 +480,16 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c } } } - case *PromoterConfig: + + case equalFunc(etcd.ETCDKEY_PROMOTER_PREFIX): + var config *PromoterConfig + if data != nil { + config = data.(*PromoterConfig) + } if isInit { + if config == nil { + return + } PromoterMgrSington.AddConfig(config) } else { switch event.Type { @@ -390,14 +501,92 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c PromoterMgrSington.RemoveConfigByKey(promoterConfig) } case clientv3.EventTypePut: + if config == nil { + return + } PromoterMgrSington.AddConfig(config) } } - case *ActGivePlateformConfig: + + case equalFunc(etcd.ETCDKEY_ACT_GIVE_PREFIX): + var config *ActGivePlateformConfig + if data != nil { + config = data.(*ActGivePlateformConfig) + } + if config == nil { + return + } if isInit || event.Type == clientv3.EventTypePut { ActMgrSington.AddGiveConfig(config, config.Platform) } + case equalFunc(etcd.ETCDKEY_MatchAudience): + switch event.Type { + case clientv3.EventTypePut: + if data == nil { + return + } + config := data.(*webapi.MatchAudience) + PlatformMgrSingleton.AddMatchAudience(config) + if !isInit { + p := PlayerMgrSington.GetPlayerBySnId(config.GetSnId()) + if p != nil { + p.SCDataConfig(common.DataConfigMatchAudience) + } + } + case clientv3.EventTypeDelete: + if plt == "" || len(param) == 0 { + return + } + PlatformMgrSingleton.DelMatchAudience(plt, int32(param[0])) + if !isInit { + p := PlayerMgrSington.GetPlayerBySnId(int32(param[0])) + if p != nil { + p.SCDataConfig(common.DataConfigMatchAudience) + } + } + } + case equalFunc(etcd.ETCDKEY_RoomType): + switch event.Type { + case clientv3.EventTypePut: + if data == nil { + return + } + config := data.(*webapi.RoomType) + PlatformMgrSingleton.UpdateRoomType(config) + if !isInit { + PlayerMgrSington.BroadcastMessageToPlatform(config.GetPlatform(), int(0), nil) + } + case clientv3.EventTypeDelete: + if plt == "" || len(param) == 0 { + return + } + PlatformMgrSingleton.DelRoomType(plt, int32(param[0])) + if !isInit { + PlayerMgrSington.BroadcastMessageToPlatform(plt, int(0), nil) + } + } + + case equalFunc(etcd.ETCDKEY_RoomConfig): + switch event.Type { + case clientv3.EventTypePut: + if data == nil { + return + } + config := data.(*webapi.RoomConfig) + PlatformMgrSingleton.UpdateRoomConfig(config) + if !isInit { + //PlayerMgrSington.BroadcastMessageToPlatform(config.GetPlatform(), int(0), nil) + } + case clientv3.EventTypeDelete: + if plt == "" || len(param) == 0 { + return + } + PlatformMgrSingleton.DelRoomConfig(plt, int32(param[0])) + if !isInit { + //PlayerMgrSington.BroadcastMessageToPlatform(plt, int(0), nil) + } + } default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } diff --git a/worldsrv/gameconfig.go b/worldsrv/gameconfig.go index c2c33b0..18440e5 100644 --- a/worldsrv/gameconfig.go +++ b/worldsrv/gameconfig.go @@ -124,11 +124,7 @@ func UpdateGameConfigPolicy(fullPath string) error { } if err == nil && spd.Init() { for _, m := range spd.GameMode { - //logger.Logger.Info("New game config ver:", spd.ConfigVer) - if !CheckGameConfigVer(spd.ConfigVer, spd.GameId, m) { - //TeaHouseMgr.UpdateGameConfigVer(spd.ConfigVer, spd.GameId, m) - } - RegisteScenePolicy(int(spd.GameId), int(m), spd) + RegisterScenePolicy(int(spd.GameId), int(m), spd) } } return err diff --git a/worldsrv/gamesess.go b/worldsrv/gamesess.go index eb7339a..5ee4209 100644 --- a/worldsrv/gamesess.go +++ b/worldsrv/gamesess.go @@ -80,18 +80,14 @@ func (this *GameSession) GetSrvId() int32 { // 关闭其上的所有场景 func (this *GameSession) CloseAllScene() { for sceneId, scene := range this.scenes { - if scene.IsMiniGameScene() { - - } else { - scDestroyRoom := &gamehall_proto.SCDestroyRoom{ - RoomId: proto.Int(sceneId), - OpRetCode: gamehall_proto.OpResultCode_Game_OPRC_Sucess_Game, - IsForce: proto.Int(1), - } - proto.SetDefaults(scDestroyRoom) - scene.Broadcast(int(gamehall_proto.GameHallPacketID_PACKET_SC_DESTROYROOM), scDestroyRoom, 0) - SceneMgrSingleton.DestroyScene(sceneId, true) + scDestroyRoom := &gamehall_proto.SCDestroyRoom{ + RoomId: proto.Int(sceneId), + OpRetCode: gamehall_proto.OpResultCode_Game_OPRC_Sucess_Game, + IsForce: proto.Int(1), } + proto.SetDefaults(scDestroyRoom) + scene.Broadcast(int(gamehall_proto.GameHallPacketID_PACKET_SC_DESTROYROOM), scDestroyRoom, 0) + SceneMgrSingleton.DestroyScene(sceneId, true) } this.scenes = nil this.players = nil @@ -155,69 +151,55 @@ func (this *GameSession) OnStateOff() { this.Send(int(server_proto.SSPacketID_PACKET_WG_SERVER_STATE), pack) } -func (this *GameSession) AddScene(s *Scene) { - this.scenes[s.sceneId] = s +type AddSceneParam struct { + S *Scene +} + +func (this *GameSession) AddScene(args *AddSceneParam) { + this.scenes[args.S.sceneId] = args.S //send msg msg := &server_proto.WGCreateScene{ - SceneId: proto.Int(s.sceneId), - GameId: proto.Int(s.gameId), - GameMode: proto.Int(s.gameMode), - SceneMode: proto.Int(s.sceneMode), - Params: s.params, - ParamsEx: s.paramsEx, - Creator: proto.Int32(s.creator), - Agentor: proto.Int32(s.agentor), - HallId: proto.Int32(s.hallId), - ReplayCode: proto.String(s.replayCode), - GroupId: proto.Int32(s.groupId), - TotalOfGames: proto.Int32(s.totalRound), - BaseScore: proto.Int32(s.BaseScore), - PlayerNum: proto.Int(s.playerNum), + Platform: args.S.limitPlatform.IdStr, + SceneId: int32(args.S.sceneId), + GameId: int32(args.S.gameId), + GameMode: int32(args.S.gameMode), + SceneMode: int32(args.S.sceneMode), + ReplayCode: args.S.replayCode, + DBGameFree: args.S.dbGameFree, + TotalOfGames: args.S.totalRound, + PlayerNum: int32(args.S.playerNum), + Creator: args.S.creator, + BaseScore: args.S.BaseScore, + Custom: args.S.CustomParam, + Match: args.S.MatchParam, + Params: args.S.params, } - var platform *Platform - if s.limitPlatform != nil { - msg.Platform = proto.String(s.limitPlatform.IdStr) - platform = s.limitPlatform - } else { - msg.Platform = proto.String(DefaultPlatform) - platform = PlatformMgrSingleton.GetPlatform(DefaultPlatform) - } - if s.dbGameFree != nil { - msg.DBGameFree = s.dbGameFree - } else if platform != nil { - gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, s.paramsEx[0]) - if gps != nil { - if gps.GroupId == 0 { - msg.DBGameFree = gps.DbGameFree - } else { - pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId) - if pgg != nil { - msg.DBGameFree = pgg.DbGameFree - } + if args.S.GetRoomTypeId() != 0 { + cfg := PlatformMgrSingleton.GetConfig(args.S.limitPlatform.IdStr).RoomConfig[args.S.GetRoomTypeId()] + if cfg != nil { + for _, v := range cfg.GetReward() { + msg.Items = append(msg.Items, &server_proto.Item{ + Id: v.GetItemId(), + Num: v.GetItemNum(), + }) + } + for _, v := range cfg.GetCost() { + msg.CostItems = append(msg.CostItems, &server_proto.Item{ + Id: v.GetItemId(), + Num: v.GetItemNum(), + }) } } } - if s.IsCoinScene() { - if sp, ok := s.sp.(*ScenePolicyData); ok { - msg.EnterAfterStart = proto.Bool(sp.EnterAfterStart) - } - } - //if s.ClubId > 0 { - // msg.Club = proto.Int32(s.ClubId) - // msg.ClubRoomId = proto.String(s.clubRoomID) - // msg.ClubRoomPos = proto.Int32(s.clubRoomPos) - // msg.ClubRate = proto.Int32(s.clubRoomTax) - //} - if s.IsHundredScene() { - //msg.RealCtrl = WBCtrlCfgMgr.GetRealCtrl(s.limitPlatform.IdStr) + if sp, ok := args.S.sp.(*ScenePolicyData); ok { + msg.EnterAfterStart = proto.Bool(sp.EnterAfterStart) } // 象棋游戏添加段位配置 - if s.dbGameFree != nil && s.dbGameFree.GameDif == common.GameDifChess && platform != nil { - msg.ChessRank = ChessRankMgrSington.GetChessRankArr(platform.Name, int32(s.gameId)) + if args.S.dbGameFree != nil && srvdata.GameFreeMgr.IsGameDif(int32(args.S.gameId), common.GameDifChess) { + msg.ChessRank = ChessRankMgrSington.GetChessRankArr(args.S.limitPlatform.Name, int32(args.S.gameId)) } - proto.SetDefaults(msg) this.Send(int(server_proto.SSPacketID_PACKET_WG_CREATESCENE), msg) - logger.Logger.Trace("WGCreateScene:", msg) + logger.Logger.Tracef("WGCreateScene: %v", msg) } func (this *GameSession) DelScene(s *Scene) { diff --git a/worldsrv/gamesessmgr.go b/worldsrv/gamesessmgr.go index 830ab6d..5dc0682 100644 --- a/worldsrv/gamesessmgr.go +++ b/worldsrv/gamesessmgr.go @@ -66,7 +66,7 @@ func (this *GameSessMgr) OnRegiste(s *netlib.Session) { } gs.OnRegiste() //尝试创建百人场 - HundredSceneMgrSington.TryCreateRoom() + HundredSceneMgrSingleton.TryCreateRoom() } } else if srvInfo.GetType() == srvlib.GateServiceType { logger.Logger.Warn("(this *GameSessMgr) OnRegiste (GateSrv):", s) diff --git a/worldsrv/gamestate.go b/worldsrv/gamestate.go index 2eff9a8..f315cec 100644 --- a/worldsrv/gamestate.go +++ b/worldsrv/gamestate.go @@ -75,7 +75,7 @@ func (gsm *GameStateManager) BrodcastGameState(gameId int32, platform string, pa } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packid, pack, v...) + pack, err := common.CreateMulticastPacket(packid, pack, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) diff --git a/worldsrv/horseracelamp.go b/worldsrv/horseracelamp.go index 85a23e2..bdef8f5 100644 --- a/worldsrv/horseracelamp.go +++ b/worldsrv/horseracelamp.go @@ -400,7 +400,7 @@ func (this *HorseRaceLampMgr) BroadcastHorseRaceLampMsg(horseRaceLamp *HorseRace if len(horseRaceLamp.Target) == 0 { PlayerMgrSington.BroadcastMessageToPlatform(horseRaceLamp.Platform, int(message.MSGPacketID_PACKET_SC_NOTICE), rawpack) } else { - PlayerMgrSington.BroadcastMessageToTarget(horseRaceLamp.Platform, horseRaceLamp.Target, int(message.MSGPacketID_PACKET_SC_NOTICE), rawpack) + PlayerMgrSington.BroadcastMessageToTarget(horseRaceLamp.Target, int(message.MSGPacketID_PACKET_SC_NOTICE), rawpack) } } diff --git a/worldsrv/hundredscenemgr.go b/worldsrv/hundredscenemgr.go index 835e4d7..70c59e0 100644 --- a/worldsrv/hundredscenemgr.go +++ b/worldsrv/hundredscenemgr.go @@ -10,408 +10,212 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" - gamehall_proto "mongo.games.com/game/protocol/gamehall" - server_proto "mongo.games.com/game/protocol/server" + gamehallproto "mongo.games.com/game/protocol/gamehall" + serverproto "mongo.games.com/game/protocol/server" "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" ) const ( - HundredSceneType_Primary int = iota //初级 - HundredSceneType_Mid //中级 - HundredSceneType_Senior //高级 - HundredSceneType_Professor //专家 - HundredSceneType_Experience //体验场 - HundredSceneType_Max + HundredSceneOPEnter int32 = iota //进入 + HundredSceneOPLeave //离开 + HundredSceneOPChange //换桌 ) -const ( - HundredSceneOp_Enter int32 = iota //进入 - HundredSceneOp_Leave //离开 - HundredSceneOp_Change //换桌 - HundredSceneOp_Audience //观战 -) - -var HundredSceneMgrSington = &HundredSceneMgr{ - //分平台管理 +var HundredSceneMgrSingleton = &HundredSceneMgr{ scenesOfPlatform: make(map[string]map[int32]*Scene), - platformOfScene: make(map[int32]string), - //分组管理 - scenesOfGroup: make(map[int32]map[int32]*Scene), - groupOfScene: make(map[int32]int32), - playerIning: make(map[int32]int32), } type HundredSceneMgr struct { - //分平台管理 scenesOfPlatform map[string]map[int32]*Scene // platform:gamefreeid:房间 - platformOfScene map[int32]string // sceneid:platform - //分组管理 - scenesOfGroup map[int32]map[int32]*Scene // groupid:gamefreeid:房间 - groupOfScene map[int32]int32 // sceneid:groupid - playerIning map[int32]int32 // snid:sceneid } -func (this *HundredSceneMgr) GetPlatformNameBySceneId(sceneid int32) (string, bool) { - if name, exist := this.platformOfScene[sceneid]; exist { - return name, exist - } - if _, exist := this.groupOfScene[sceneid]; exist { - s := SceneMgrSingleton.GetScene(int(sceneid)) - if s != nil && s.limitPlatform != nil { - return s.limitPlatform.IdStr, true - } - } - return DefaultPlatform, false -} - -func (this *HundredSceneMgr) RebindPlayerSnId(oldSnId, newSnId int32) { - if id, exist := this.playerIning[oldSnId]; exist { - delete(this.playerIning, oldSnId) - this.playerIning[newSnId] = id - } - for _, ss := range this.scenesOfPlatform { - for _, s := range ss { - s.RebindPlayerSnId(oldSnId, newSnId) - } - } - for _, ss := range this.scenesOfGroup { - for _, s := range ss { - s.RebindPlayerSnId(oldSnId, newSnId) - } - } -} - -func (this *HundredSceneMgr) PlayerEnter(p *Player, id int32) gamehall_proto.OpResultCode_Hundred { - logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter snid:%v id:%v", p.SnId, id) - if oid, exist := this.playerIning[p.SnId]; exist { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter:%v snid:%v find in id:%v PlayerEnter return false", id, p.SnId, oid) - return gamehall_proto.OpResultCode_Hundred_OPRC_Error_Hundred +// PlayerEnter 玩家进入场次 +// id 场次id +func (this *HundredSceneMgr) PlayerEnter(p *Player, id int32) gamehallproto.OpResultCode_Hundred { + logger.Logger.Tracef("HundredSceneMgr PlayerEnter snid:%v gamefreeid:%v", p.SnId, id) + if p.isDelete { + return gamehallproto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred } - if p.scene != nil { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter:%v snid:%v find in id:%v PlayerEnter return false", id, p.SnId, p.scene.sceneId) - return gamehall_proto.OpResultCode_Hundred_OPRC_Error_Hundred - } - - if p.isDelete { //删档用户不让进游戏 - return gamehall_proto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred + if this.InHundredScene(p) { + logger.Logger.Warnf("HundredSceneMgr PlayerEnter snid:%v find in gamefreeid:%v roomId:%v", p.SnId, p.scene.dbGameFree.Id, p.scene.sceneId) + return gamehallproto.OpResultCode_Hundred_OPRC_Error_Hundred } //多平台支持 - var limitPlatform *Platform - platformName := DefaultPlatform - platform := PlatformMgrSingleton.GetPlatform(p.Platform) - if platform != nil && platform.Isolated { - platformName = platform.IdStr - limitPlatform = platform - } else { - limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform) + platform := p.GetPlatform() + if platform == nil { + return gamehallproto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred } - gps := PlatformMgrSingleton.GetGameFree(limitPlatform.IdStr, id) + gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, id) if gps == nil { - return gamehall_proto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred + return gamehallproto.OpResultCode_Hundred_OPRC_RoomHadClosed_Hundred } - if gps.GroupId != 0 { //按分组进入场景游戏 - pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId) - if pgg != nil { - if _, ok := this.scenesOfGroup[gps.GroupId]; !ok { - this.scenesOfGroup[gps.GroupId] = make(map[int32]*Scene) - - } - if ss, ok := this.scenesOfGroup[gps.GroupId]; ok { - if s, ok := ss[id]; !ok { - s = this.CreateNewScene(id, gps.GroupId, limitPlatform, pgg.DbGameFree) - if s != nil { - ss[id] = s - this.groupOfScene[int32(s.sceneId)] = gps.GroupId - logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(groupid=%v) Create %v scene success.", gps.GroupId, id) - } else { - logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(groupid=%v) Create %v scene failed.", gps.GroupId, id) - } - } - //尝试进入 - if s, ok := ss[id]; ok && s != nil { - if s.PlayerEnter(p, -1, true) { - this.OnPlayerEnter(p, id) - return gamehall_proto.OpResultCode_Hundred_OPRC_Sucess_Hundred - } else { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(groupid=%v) enter %v scene failed.", gps.GroupId, id) - } - } else { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(groupid=%v) get %v scene failed.", gps.GroupId, id) - } - } - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(groupid=%v) snid:%v find in id:%v csp.PlayerEnter return false", gps.GroupId, p.SnId, id) - return gamehall_proto.OpResultCode_Hundred_OPRC_Error_Hundred - } - } //没有场景,尝试创建 - if _, ok := this.scenesOfPlatform[platformName]; !ok { - this.scenesOfPlatform[platformName] = make(map[int32]*Scene) + if _, ok := this.scenesOfPlatform[platform.IdStr]; !ok { + this.scenesOfPlatform[platform.IdStr] = make(map[int32]*Scene) } - if ss, ok := this.scenesOfPlatform[platformName]; ok { - if s, ok := ss[id]; !ok { - s = this.CreateNewScene(id, gps.GroupId, limitPlatform, gps.DbGameFree) - if s != nil { - ss[id] = s - this.platformOfScene[int32(s.sceneId)] = platformName - logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(platform=%v) Create %v scene success.", platformName, id) - } else { - logger.Logger.Tracef("(this *HundredSceneMgr) PlayerEnter(platform=%v) Create %v scene failed.", platformName, id) - } - } - //尝试进入 - if s, ok := ss[id]; ok && s != nil { - if s.PlayerEnter(p, -1, true) { - this.OnPlayerEnter(p, id) - return gamehall_proto.OpResultCode_Hundred_OPRC_Sucess_Hundred - } else { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(platform=%v) enter %v scene failed.", platformName, id) - } + ss := this.scenesOfPlatform[platform.IdStr] + if s, ok := ss[id]; !ok || s == nil { + s = this.CreateNewScene(id, gps.GroupId, platform, gps.DbGameFree) + if s != nil { + ss[id] = s + s.hp = this + logger.Logger.Infof("HundredSceneMgr PlayerEnter(platform=%v snid=%v) Create %v scene success.", platform.IdStr, p.SnId, id) } else { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(platform=%v) get %v scene failed.", platformName, id) + logger.Logger.Errorf("HundredSceneMgr PlayerEnter(platform=%v snid=%v) Create %v scene failed.", platform.IdStr, p.SnId, id) } } - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerEnter(platform=%v) snid:%v find in id:%v csp.PlayerEnter return false", platformName, p.SnId, id) - return gamehall_proto.OpResultCode_Hundred_OPRC_SceneServerMaintain_Hundred -} - -func (this *HundredSceneMgr) OnPlayerEnter(p *Player, id int32) { - this.playerIning[p.SnId] = id + //尝试进入 + if s, ok := ss[id]; ok && s != nil { + if s.PlayerEnter(p, -1, true) { + logger.Logger.Infof("HundredSceneMgr PlayerEnter(platform=%v snid=%v) enter %v scene success.", platform.IdStr, p.SnId, id) + return gamehallproto.OpResultCode_Hundred_OPRC_Sucess_Hundred + } else { + logger.Logger.Errorf("HundredSceneMgr PlayerEnter(platform=%v snid=%v) enter %v scene failed.", platform.IdStr, p.SnId, id) + } + } else { + logger.Logger.Errorf("HundredSceneMgr PlayerEnter(platform=%v) get %v scene failed.", platform.IdStr, id) + } + + return gamehallproto.OpResultCode_Hundred_OPRC_SceneServerMaintain_Hundred } +// PlayerLeave 离开房间 +// 游戏服通知玩家离开房间 func (this *HundredSceneMgr) PlayerLeave(p *Player, reason int) bool { - if p == nil { + if p == nil || p.scene == nil || p.scene.hp == nil { return false } - if _, ok := this.playerIning[p.SnId]; ok { - if p.scene != nil { - p.scene.PlayerLeave(p, reason) - } else { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerLeave(%v) found scene=nil", p.SnId) - delete(this.playerIning, p.SnId) - } - return true - } else { - if p.scene != nil && p.scene.IsHundredScene() { - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerLeave(%v) exception scene=%v gameid=%v", p.SnId, p.scene.sceneId, p.scene.gameId) - p.scene.PlayerLeave(p, reason) - return true - } - } - logger.Logger.Warnf("(this *HundredSceneMgr) PlayerLeave(%v) not found in hundred scene", p.SnId) + + p.scene.PlayerLeave(p, reason) + return false } -func (this *HundredSceneMgr) PlayerTryLeave(p *Player) gamehall_proto.OpResultCode_Hundred { - if p.scene == nil || p.scene.gameSess == nil { - logger.Logger.Tracef("(csm *HundredSceneMgr) PlayerTryLeave p.scene == nil || p.scene.gameSess == nil snid:%v ", p.SnId) - return 1 +// PlayerTryLeave 玩家尝试离开房间 +// 给游戏服发离开消息 +func (this *HundredSceneMgr) PlayerTryLeave(p *Player) gamehallproto.OpResultCode_Hundred { + if !this.InHundredScene(p) { + logger.Logger.Tracef("(this *HundredSceneMgr) PlayerTryLeave !csm.InCoinScene(p) snid:%v ", p.SnId) + return gamehallproto.OpResultCode_Hundred_OPRC_Sucess_Hundred } - //通知gamesrv托管 - if _, ok := this.playerIning[p.SnId]; ok { - pack := &gamehall_proto.CSLeaveRoom{Mode: proto.Int(0)} - proto.SetDefaults(pack) - common.TransmitToServer(p.sid, int(gamehall_proto.GameHallPacketID_PACKET_CS_LEAVEROOM), pack, p.scene.gameSess.Session) - } - return 0 + + pack := &gamehallproto.CSLeaveRoom{Mode: proto.Int(0)} + common.TransmitToServer(p.sid, int(gamehallproto.GameHallPacketID_PACKET_CS_LEAVEROOM), pack, p.scene.gameSess.Session) + return gamehallproto.OpResultCode_Hundred_OPRC_Sucess_Hundred // ??? } -func (this *HundredSceneMgr) OnPlayerLeave(p *Player) { - delete(this.playerIning, p.SnId) -} +// OnDestroyScene 房间销毁 +func (this *HundredSceneMgr) OnDestroyScene(sceneId int) { + s := SceneMgrSingleton.GetScene(sceneId) + if s == nil { + return + } + plt := SceneMgrSingleton.GetPlatformBySceneId(sceneId) + if plt == "" { + return + } + if ss, ok := this.scenesOfPlatform[plt]; ok { + for id, scene := range ss { + if scene.sceneId == sceneId { + if scene != s { + logger.Logger.Errorf("bug") + } -func (this *HundredSceneMgr) OnDestroyScene(sceneid int) { - var s *Scene - if platformName, ok := this.platformOfScene[int32(sceneid)]; ok { - if ss, ok := this.scenesOfPlatform[platformName]; ok { - for id, scene := range ss { - if scene.sceneId == sceneid { - s = scene - //删除玩家 - for pid, hid := range this.playerIning { - if hid == id { - delete(this.playerIning, pid) - //TODO 非正常删除房间时,尝试同步金币 - player := PlayerMgrSington.GetPlayerBySnId(pid) - if player != nil { - if !player.IsRob { - ctx := scene.GetPlayerGameCtx(player.SnId) - if ctx != nil { - //发送一个探针,等待ack后同步金币 - player.TryRetrieveLostGameCoin(sceneid) - - logger.Logger.Warnf("(this *HundredSceneMgr) OnDestroyScene(sceneid:%v) snid:%v SyncGameCoin", sceneid, player.SnId) - } - } + //删除玩家 + for _, v := range scene.players { + if v != nil { + if !v.IsRob { + ctx := scene.GetPlayerGameCtx(v.SnId) + if ctx != nil { + //发送一个探针,等待ack后同步金币 + v.TryRetrieveLostGameCoin(sceneId) + logger.Logger.Warnf("(this *HundredSceneMgr) OnDestroyScene(sceneid:%v) snid:%v SyncGameCoin", sceneId, v.SnId) } } } - delete(ss, id) - break } + + scene.hp = nil + delete(ss, id) + break } } } - if groupId, ok := this.groupOfScene[int32(sceneid)]; ok { - if ss, ok := this.scenesOfGroup[groupId]; ok { - for id, scene := range ss { - if scene.sceneId == sceneid { - s = scene - //删除玩家 - for pid, hid := range this.playerIning { - if hid == id { - delete(this.playerIning, pid) - //TODO 非正常删除房间时,尝试同步金币 - player := PlayerMgrSington.GetPlayerBySnId(pid) - if player != nil { - if !player.IsRob { - ctx := scene.GetPlayerGameCtx(player.SnId) - if ctx != nil { - //发送一个探针,等待ack后同步金币 - player.TryRetrieveLostGameCoin(sceneid) - logger.Logger.Warnf("(this *HundredSceneMgr) OnDestroyScene(sceneid:%v) snid:%v SyncGameCoin", sceneid, player.SnId) - } - } - } - } - } - delete(ss, id) - break - } - } - } - } - - this.PreCreateGame(s.limitPlatform.IdStr, []int32{s.dbGameFree.Id}) + this.tryCreateRoom(plt, s.dbGameFree.Id) } func (this *HundredSceneMgr) GetPlayerNums(p *Player, gameId, gameMode int32) []int32 { //多平台支持 - platformName := DefaultPlatform - platform := PlatformMgrSingleton.GetPlatform(p.Platform) - if platform != nil && platform.Isolated { - platformName = platform.IdStr - } else if p.Platform != DefaultPlatform { - platform = PlatformMgrSingleton.GetPlatform(DefaultPlatform) - } - - var nums [HundredSceneType_Max]int32 - wantNum := []int32{80, 50, 30, 20, 0} - for i := 0; i < HundredSceneType_Max; i++ { + platform := p.GetPlatform() + var nums [10]int32 + wantNum := [10]int32{80, 50, 30, 20, 10, 10, 10, 10, 10, 10} + for i := 0; i < 10; i++ { if wantNum[i]/2 > 0 { nums[i] = rand.Int31n(wantNum[i]/2) + wantNum[i] } } - if platform == nil { return nums[:] } - ids, _ := srvdata.GameFreeMgr.GetGameFreeIds(gameId, gameMode) for _, id := range ids { gps := PlatformMgrSingleton.GetGameFree(platform.IdStr, id) if gps != nil { - if gps.GroupId != 0 { - if ss, exist := this.scenesOfGroup[gps.GroupId]; exist { - for _, s := range ss { - if s.paramsEx[0] == id { - dbGame := srvdata.PBDB_GameFreeMgr.GetData(s.paramsEx[0]) - sceneType := int(dbGame.GetSceneType()) - 1 - if sceneType == -2 { - //体验场 - sceneType = HundredSceneType_Experience - } - truePlayerCount := int32(s.GetPlayerCnt()) - - //获取fake用户数量 - var fakePlayerCount int32 - //if truePlayerCount >= 21 { - // correctNum := dbGame.GetCorrectNum() - // correctRate := dbGame.GetCorrectRate() - // fakePlayerCount = correctNum + truePlayerCount*correctRate/100 + dbGame.GetDeviation() - //} - if sceneType >= 0 && sceneType < HundredSceneType_Max { - nums[sceneType] += int32(truePlayerCount + fakePlayerCount) - } - break - } - } - } - } else { - if ss, ok := this.scenesOfPlatform[platformName]; ok { - for _, s := range ss { - if s.paramsEx[0] == id { - dbGame := srvdata.PBDB_GameFreeMgr.GetData(s.paramsEx[0]) - sceneType := int(dbGame.GetSceneType()) - 1 - if sceneType == -2 { - //体验场 - sceneType = HundredSceneType_Experience - } - truePlayerCount := int32(s.GetPlayerCnt()) - - //获取fake用户数量 - var fakePlayerCount int32 - //if truePlayerCount >= 21 { - // correctNum := dbGame.GetCorrectNum() - // correctRate := dbGame.GetCorrectRate() - // fakePlayerCount = correctNum + truePlayerCount*correctRate/100 + dbGame.GetDeviation() - //} - if sceneType >= 0 && sceneType < HundredSceneType_Max { - nums[sceneType] += int32(truePlayerCount + fakePlayerCount) - } - break - } + if ss, ok := this.scenesOfPlatform[platform.IdStr]; ok { + if s, exist := ss[id]; exist && s.dbGameFree != nil { + sceneType := s.dbGameFree.GetSceneType() - 1 + if sceneType >= 0 && int(sceneType) < len(nums) { + nums[sceneType] += int32(s.GetPlayerCnt()) } } } } } + if len(ids) <= 10 { + return nums[:len(ids)] + } return nums[:] } func (this *HundredSceneMgr) InHundredScene(p *Player) bool { if p == nil { - logger.Logger.Tracef("(this *HundredSceneMgr) InHundredScene p == nil snid:%v ", p.SnId) return false } - if _, ok := this.playerIning[p.SnId]; ok { - return true + if p.scene == nil { + return false } - logger.Logger.Tracef("(csm *HundredSceneMgr) InHundredScene false snid:%v ", p.SnId) - return false + if p.scene.hp == nil { + return false + } + return true } -func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Platform, dbGameFree *server_proto.DB_GameFree) *Scene { +func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Platform, dbGameFree *serverproto.DB_GameFree) *Scene { if dbGameFree != nil { dbGameRule := srvdata.PBDB_GameRuleMgr.GetData(dbGameFree.GetGameRule()) if dbGameRule != nil { gameId := int(dbGameRule.GetGameId()) - gs := GameSessMgrSington.GetMinLoadSess(gameId) - if gs != nil { - sceneId := SceneMgrSingleton.GenOneHundredSceneId() - gameMode := dbGameRule.GetGameMode() - params := common.CopySliceInt32ToInt64(dbGameRule.GetParams()) - //SceneType := dbGameFree.GetSceneType() - - scene := SceneMgrSingleton.CreateScene(0, 0, sceneId, gameId, int(gameMode), common.SceneMode_Public, 1, -1, params, gs, limitPlatform, groupId, dbGameFree, id) - if scene != nil { - scene.hallId = id - //移动到SceneMgr中集中处理 - //if !scene.IsMatchScene() { - // //平台水池设置 - // gs.DetectCoinPoolSetting(limitPlatform.Name, scene.hallId, scene.groupId) - //} - return scene - } else { - logger.Logger.Errorf("Create hundred scene %v-%v failed.", gameId, sceneId) - } + sceneId := SceneMgrSingleton.GenOneHundredSceneId() + params := common.CopySliceInt32ToInt64(dbGameRule.GetParams()) + scene := SceneMgrSingleton.CreateScene(&CreateSceneParam{ + RoomId: sceneId, + SceneMode: common.SceneMode_Public, + Params: params, + Platform: limitPlatform, + GF: dbGameFree, + }) + if scene != nil { + logger.Logger.Infof("Create hundred scene %v-%v success.", gameId, sceneId) + scene.hp = this + return scene } else { - logger.Logger.Errorf("Game %v server session no found.", gameId) + logger.Logger.Errorf("Create hundred scene %v-%v failed.", gameId, sceneId) } } else { logger.Logger.Errorf("Game rule data %v no found.", dbGameFree.GetGameRule()) @@ -419,135 +223,144 @@ func (this *HundredSceneMgr) CreateNewScene(id, groupId int32, limitPlatform *Pl } else { logger.Logger.Errorf("Game free data %v no found.", id) } - return nil } -func (this *HundredSceneMgr) TryCreateRoom() { - if model.GameParamData.HundredScenePreCreate { - arr := srvdata.PBDB_GameFreeMgr.Datas.GetArr() - for _, dbGame := range arr { - if dbGame.GetGameId() <= 0 { - continue - } - if common.IsHundredType(dbGame.GetGameType()) { //百人场 - id := dbGame.GetId() - for k, ss := range this.scenesOfPlatform { - if _, exist := ss[id]; !exist { - limitPlatform := PlatformMgrSingleton.GetPlatform(k) - if limitPlatform == nil || !limitPlatform.Isolated { - limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform) - k = DefaultPlatform - continue - } - gps := PlatformMgrSingleton.GetGameFree(limitPlatform.IdStr, id) - if gps != nil && gps.GroupId == 0 && gps.Status { - scene := this.CreateNewScene(id, gps.GroupId, limitPlatform, gps.DbGameFree) - logger.Logger.Trace("(this *HundredSceneMgr) TryCreateRoom(platform) ", id, k, scene) - if scene != nil { - this.platformOfScene[int32(scene.sceneId)] = k - ss[id] = scene - } - } - } - } - } - } - } -} -func (this *HundredSceneMgr) PreCreateGame(platform string, createIds []int32) { - limitPlatform := PlatformMgrSingleton.GetPlatform(platform) +func (this *HundredSceneMgr) tryCreateRoom(plt string, id ...int32) { + limitPlatform := PlatformMgrSingleton.GetPlatform(plt) if limitPlatform == nil || !limitPlatform.Isolated { limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform) } - if this.scenesOfPlatform[platform] == nil { - this.scenesOfPlatform[platform] = make(map[int32]*Scene) + if this.scenesOfPlatform[plt] == nil { + this.scenesOfPlatform[plt] = make(map[int32]*Scene) } - //var platformName string - platformData := PlatformMgrSingleton.GetPlatform(platform) - if platformData != nil && platformData.Isolated { - //platformName = platformData.Name - } else if platform != DefaultPlatform { - platformData = PlatformMgrSingleton.GetPlatform(DefaultPlatform) - } - if platformData.IdStr == DefaultPlatform { + if limitPlatform.IdStr == DefaultPlatform { return } - if model.GameParamData.HundredScenePreCreate { - //不创建已经存在的场景 - for _, id := range createIds { - dbGame := srvdata.PBDB_GameFreeMgr.GetData(id) - if common.IsHundredType(dbGame.GetGameType()) { - gps := PlatformMgrSingleton.GetGameFree(platformData.IdStr, id) - if gps != nil && gps.Status { - if gps.GroupId != 0 { - if this.scenesOfGroup[gps.GroupId] != nil && this.scenesOfGroup[gps.GroupId][id] != nil { - continue - } else { - scene := this.CreateNewScene(dbGame.GetId(), gps.GroupId, limitPlatform, gps.DbGameFree) - if scene != nil { - this.scenesOfGroup[gps.GroupId][id] = scene - this.groupOfScene[int32(scene.sceneId)] = gps.GroupId - } - } - } else { - if this.scenesOfPlatform[platform] != nil && this.scenesOfPlatform[platform][dbGame.GetId()] != nil { - continue - } else { - scene := this.CreateNewScene(dbGame.GetId(), gps.GroupId, limitPlatform, gps.DbGameFree) - if scene != nil { - this.platformOfScene[int32(scene.sceneId)] = platform - this.scenesOfPlatform[platform][dbGame.GetId()] = scene - } - } - } - } - } + f := func(i int32) { + if this.scenesOfPlatform[plt][i] != nil { + return + } + gps := PlatformMgrSingleton.GetGameFree(plt, i) + if !common.IsHundredType(gps.GetDbGameFree().GetGameType()) { + return + } + scene := this.CreateNewScene(i, gps.GroupId, limitPlatform, gps.DbGameFree) + if scene != nil { + this.scenesOfPlatform[plt][i] = scene + scene.hp = this + logger.Logger.Infof("HundredSceneMgr PreCreateRoom Platform:%v Id:%v", plt, i) + } + } + + if len(id) == 0 { + // 所有百人场 + for _, vv := range srvdata.PBDB_GameFreeMgr.Datas.GetArr() { + f(vv.GetId()) + } + } else { + for _, v := range id { + f(v) } } } -func (this *HundredSceneMgr) OnPlatformCreate(p *Platform) { - if p != nil && p.Isolated && p.IdStr != DefaultPlatform { - if _, exist := this.scenesOfPlatform[p.IdStr]; !exist { - this.scenesOfPlatform[p.IdStr] = make(map[int32]*Scene) - if model.GameParamData.HundredScenePreCreate { - arr := srvdata.PBDB_GameFreeMgr.Datas.GetArr() - for _, dbGame := range arr { - if common.IsHundredType(dbGame.GetGameType()) { //百人场 - id := dbGame.GetId() - gps := PlatformMgrSingleton.GetGameFree(p.IdStr, id) - if gps != nil { - if gps.GroupId != 0 { - if ss, ok := this.scenesOfGroup[gps.GroupId]; ok { - if _, exist := ss[id]; !exist { - pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId) - if pgg != nil { - scene := this.CreateNewScene(id, gps.GroupId, p, pgg.DbGameFree) - logger.Logger.Trace("(this *HundredSceneMgr) TryCreateRoom(group) ", id, gps.GroupId, scene) - if scene != nil { - ss[id] = scene - } - } - } - } - } else { - if ss, ok := this.scenesOfPlatform[p.IdStr]; ok { - if _, exist := ss[id]; !exist { - scene := this.CreateNewScene(id, gps.GroupId, p, gps.DbGameFree) - logger.Logger.Trace("(this *HundredSceneMgr) TryCreateRoom(platform) ", id, p.Name, scene) - if scene != nil { - ss[id] = scene - } - } - } - } - } - } + +// TryCreateRoom 预创建房间 +func (this *HundredSceneMgr) TryCreateRoom() { + if !model.GameParamData.HundredScenePreCreate { + return + } + + for _, v := range PlatformMgrSingleton.GetPlatforms() { + this.tryCreateRoom(v.IdStr) + } +} + +func (this *HundredSceneMgr) OnPlatformChangeIsolated(p *Platform, isolated bool) { + if p == nil { + return + } + if isolated { //孤立 + this.OnPlatformCreate(p) //预创建场景 + } else { + this.OnPlatformDestroy(p) + } +} + +func (this *HundredSceneMgr) GetPlatformSceneByGameFreeId(platform string, gameFreeIds []int32) []*Scene { + platformName := DefaultPlatform + platformData := PlatformMgrSingleton.GetPlatform(platform) + if platformData != nil && platformData.Isolated { + platformName = platformData.IdStr + } else if platform != DefaultPlatform { + platformData = PlatformMgrSingleton.GetPlatform(DefaultPlatform) + } + + if platformData == nil { + return nil + } + + var scenes []*Scene + for _, id := range gameFreeIds { + gps := PlatformMgrSingleton.GetGameFree(platformData.IdStr, id) + if gps != nil { + if ss, ok := this.scenesOfPlatform[platformName]; ok { + if s, exist := ss[id]; exist && s != nil { + scenes = append(scenes, s) } } } } + + return scenes +} + +func (this *HundredSceneMgr) GetPlatformScene(platform string, gameId int32) []*Scene { + gameFreeIds := gameStateMgr.gameIds[gameId] + gameScenes := this.GetPlatformSceneByGameFreeId(platform, gameFreeIds) + if len(gameScenes) != len(gameFreeIds) { + var createIds []int32 + for _, gfi := range gameFreeIds { + bFind := false + for _, s := range gameScenes { + if s.dbGameFree.GetId() == gfi { + bFind = true + break + } + } + if !bFind { + createIds = append(createIds, gfi) + } + } + if len(createIds) > 0 { + this.tryCreateRoom(platform, createIds...) + gameScenes = this.GetPlatformSceneByGameFreeId(platform, gameFreeIds) + } + } + return gameScenes +} + +func (this *HundredSceneMgr) ModuleName() string { + return "HundredSceneMgr" +} + +func (this *HundredSceneMgr) Init() { + //this.TryCreateRoom() +} + +func (this *HundredSceneMgr) Update() { + +} + +func (this *HundredSceneMgr) Shutdown() { + module.UnregisteModule(this) +} + +func (this *HundredSceneMgr) OnPlatformCreate(p *Platform) { + if model.GameParamData.HundredScenePreCreate { + this.tryCreateRoom(p.IdStr) + } } func (this *HundredSceneMgr) OnPlatformDestroy(p *Platform) { @@ -559,23 +372,7 @@ func (this *HundredSceneMgr) OnPlatformDestroy(p *Platform) { for _, scene := range ss { ids = append(ids, scene.sceneId) } - SceneMgrSingleton.DoDelete(ids, true) - } -} - -func (this *HundredSceneMgr) OnPlatformChangeIsolated(p *Platform, isolated bool) { - if p != nil { - if isolated { //孤立 - this.OnPlatformCreate(p) //预创建场景 - } else { - if ss, ok := this.scenesOfPlatform[p.IdStr]; ok { - var ids []int - for _, scene := range ss { - ids = append(ids, scene.sceneId) - } - SceneMgrSingleton.DoDelete(ids, true) - } - } + SceneMgrSingleton.SendGameDestroy(ids, true) } } @@ -584,13 +381,7 @@ func (this *HundredSceneMgr) OnPlatformChangeDisabled(p *Platform, disabled bool return } if disabled { - if ss, ok := this.scenesOfPlatform[p.IdStr]; ok { - var ids []int - for _, scene := range ss { - ids = append(ids, scene.sceneId) - } - SceneMgrSingleton.DoDelete(ids, true) - } + this.OnPlatformDestroy(p) } } @@ -598,115 +389,15 @@ func (this *HundredSceneMgr) OnPlatformGameFreeUpdate(p *Platform, oldCfg, newCf if p == nil || newCfg == nil { return } - if oldCfg.GroupId != newCfg.GroupId || oldCfg.GroupId != 0 { - if scenes, exist := this.scenesOfGroup[oldCfg.GroupId]; exist { - if s, ok := scenes[newCfg.DbGameFree.Id]; ok { - s.DoDelete(false) - } - } - return - } if scenes, exist := this.scenesOfPlatform[p.IdStr]; exist { if s, ok := scenes[newCfg.DbGameFree.Id]; ok { - s.DoDelete(false) + s.SendGameDestroy(false) } } } func (this *HundredSceneMgr) OnGameGroupUpdate(oldCfg, newCfg *webapi.GameConfigGroup) { - if newCfg == nil { - return - } - if scenes, exist := this.scenesOfGroup[newCfg.Id]; exist { - if s, ok := scenes[newCfg.DbGameFree.Id]; ok { - needDestroy := false - if s.dbGameFree.GetBot() != newCfg.DbGameFree.GetBot() || - s.dbGameFree.GetBaseScore() != newCfg.DbGameFree.GetBaseScore() || - s.dbGameFree.GetLimitCoin() != newCfg.DbGameFree.GetLimitCoin() || - s.dbGameFree.GetMaxCoinLimit() != newCfg.DbGameFree.GetMaxCoinLimit() || - !common.SliceInt64Equal(s.dbGameFree.GetRobotTakeCoin(), newCfg.DbGameFree.GetRobotTakeCoin()) || - !common.SliceInt64Equal(s.dbGameFree.GetRobotLimitCoin(), newCfg.DbGameFree.GetRobotLimitCoin()) { - needDestroy = true - } - if needDestroy { - SceneMgrSingleton.DoDelete([]int{s.sceneId}, true) - } - } - } -} -func (this *HundredSceneMgr) GetPlatformSceneByGameFreeId(platform string, gameFreeIds []int32) []*Scene { - platformName := DefaultPlatform - platformData := PlatformMgrSingleton.GetPlatform(platform) - if platformData != nil && platformData.Isolated { - platformName = platformData.IdStr - } else if platform != DefaultPlatform { - platformData = PlatformMgrSingleton.GetPlatform(DefaultPlatform) - } - gameScenes := []*Scene{} - for _, id := range gameFreeIds { - gps := PlatformMgrSingleton.GetGameFree(platformData.IdStr, id) - if gps != nil { - if gps.GroupId != 0 { - if ss, exist := this.scenesOfGroup[gps.GroupId]; exist { - if s, exist := ss[id]; exist && s != nil { - gameScenes = append(gameScenes, s) - } - } - } else { - if ss, ok := this.scenesOfPlatform[platformName]; ok { - if s, exist := ss[id]; exist && s != nil { - gameScenes = append(gameScenes, s) - } - } - } - } - } - return gameScenes -} -func (this *HundredSceneMgr) GetPlatformScene(platform string, gameid int32) []*Scene { - gameFreeIds := gameStateMgr.gameIds[gameid] - gameScenes := this.GetPlatformSceneByGameFreeId(platform, gameFreeIds) - if len(gameScenes) != len(gameFreeIds) { - createIds := []int32{} - for _, gfi := range gameFreeIds { - bFind := false - for _, s := range gameScenes { - if s.dbGameFree.GetId() == gfi { - bFind = false - break - } - } - if !bFind { - createIds = append(createIds, gfi) - } - } - if len(createIds) > 0 { - this.PreCreateGame(platform, createIds) - gameScenes = this.GetPlatformSceneByGameFreeId(platform, gameFreeIds) - } - } - return gameScenes -} -func (this *HundredSceneMgr) ModuleName() string { - return "HundredSceneMgr" -} - -func (this *HundredSceneMgr) Init() { - for _, platform := range PlatformMgrSingleton.GetPlatforms() { - if platform.Isolated || platform.IdStr == DefaultPlatform { - this.scenesOfPlatform[platform.IdStr] = make(map[int32]*Scene) - } - } -} - -// 撮合 -func (this *HundredSceneMgr) Update() { - -} - -func (this *HundredSceneMgr) Shutdown() { - module.UnregisteModule(this) } func (this *HundredSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFreeId int32) { @@ -720,11 +411,12 @@ func (this *HundredSceneMgr) OnPlatformDestroyByGameFreeId(p *Platform, gameFree ids = append(ids, scene.sceneId) } } - SceneMgrSingleton.DoDelete(ids, true) + SceneMgrSingleton.SendGameDestroy(ids, true) } } + func init() { - module.RegisteModule(HundredSceneMgrSington, time.Second*5, 0) - PlatformMgrSingleton.RegisterObserver(HundredSceneMgrSington) - PlatformGameGroupMgrSington.RegisteObserver(HundredSceneMgrSington) + module.RegisteModule(HundredSceneMgrSingleton, time.Second*5, 0) + PlatformMgrSingleton.RegisterObserver(HundredSceneMgrSingleton) + PlatformGameGroupMgrSington.RegisteObserver(HundredSceneMgrSingleton) } diff --git a/worldsrv/matchscenemgr.go b/worldsrv/matchscenemgr.go index a5e3285..11b6528 100644 --- a/worldsrv/matchscenemgr.go +++ b/worldsrv/matchscenemgr.go @@ -1,10 +1,12 @@ package main import ( + "mongo.games.com/game/srvdata" "mongo.games.com/goserver/core/logger" "mongo.games.com/game/common" "mongo.games.com/game/proto" + hallproto "mongo.games.com/game/protocol/gamehall" "mongo.games.com/game/protocol/server" ) @@ -22,20 +24,12 @@ type MatchSceneMgr struct { // isFinals 是否决赛 // round 第几轮 func (ms *MatchSceneMgr) NewScene(tm *TmMatch, isFinals bool, round int32) *Scene { - sceneId := SceneMgrSingleton.GenOneMatchSceneId() - gameId := int(tm.dbGameFree.GameId) - gameMode := tm.dbGameFree.GetGameMode() - // 获取游戏服务器 - gs := GameSessMgrSington.GetMinLoadSess(gameId) - if gs == nil { - logger.Logger.Warn("not found game server, gameid: ", gameId) - return nil - } // 平台 limitPlatform := PlatformMgrSingleton.GetPlatform(tm.Platform) if limitPlatform == nil || !limitPlatform.Isolated { limitPlatform = PlatformMgrSingleton.GetPlatform(DefaultPlatform) } + sceneId := SceneMgrSingleton.GenOneMatchSceneId() // 是否决赛 finals := int32(0) if isFinals { @@ -53,15 +47,24 @@ func (ms *MatchSceneMgr) NewScene(tm *TmMatch, isFinals bool, round int32) *Scen nextNeed = tm.gmd.MatchPromotion[round] } } - groupId := PlatformMgrSingleton.GetGameFreeGroup(tm.Platform, tm.dbGameFree.Id) - // 建房参数 - // 比赛唯一索引,是否决赛,第几轮,本轮总人数,下一轮总人数,赛制类型 - params := []int64{tm.SortId, int64(finals), int64(round), int64(curPlayerNum), int64(nextNeed), int64(tm.gmd.MatchType)} - - scene := SceneMgrSingleton.CreateScene(0, 0, sceneId, gameId, int(gameMode), common.SceneMode_Match, 1, - 0, params, gs, limitPlatform, groupId, tm.dbGameFree, tm.dbGameFree.GetId()) + rule := srvdata.PBDB_GameRuleMgr.GetData(tm.dbGameFree.GetGameRule()) + scene := SceneMgrSingleton.CreateScene(&CreateSceneParam{ + RoomId: sceneId, + SceneMode: common.SceneMode_Match, + Params: common.CopySliceInt32ToInt64(rule.GetParams()), + Platform: limitPlatform, + GF: tm.dbGameFree, + MatchParam: &server.MatchParam{ + MatchId: tm.TMId, + MatchSortId: tm.SortId, + IsFinals: finals == 1, + CurrRound: round, + CurrPlayerNum: curPlayerNum, + NextPlayerNum: nextNeed, + MatchType: tm.gmd.MatchType, + }, + }) if scene != nil { - scene.matchId = tm.SortId return scene } return nil @@ -97,7 +100,6 @@ func (ms *MatchSceneMgr) MatchStart(tm *TmMatch) { } // 填充机器人 if scene != nil && !scene.IsFull() { - tm.RobotGradesDecline(1) needRobotNum := scene.playerNum - len(scene.players) logger.Logger.Trace("MatchStart 填充机器人", needRobotNum) pack := &server.WGInviteMatchRob{ @@ -158,7 +160,7 @@ func (ms *MatchSceneMgr) PlayerLeave(p *Player, reason int) bool { if p == nil || p.scene == nil { return true } - if p.scene.matchId == 0 { + if p.scene.MatchSortId == 0 { return true } p.scene.PlayerLeave(p, reason) @@ -173,11 +175,22 @@ func (ms *MatchSceneMgr) OnDestroyScene(sceneId int) { delete(ms.scenes, sceneId) } +func (ms *MatchSceneMgr) AudienceEnter(p *Player, id int32, roomId int, exclude []int32, ischangeroom bool) hallproto.OpResultCode { + scene, ok := ms.scenes[roomId] + if !ok { + return hallproto.OpResultCode_OPRC_RoomHadClosed + } + if !scene.AudienceEnter(p, ischangeroom) { + return hallproto.OpResultCode_OPRC_RoomHadClosed + } + return hallproto.OpResultCode_OPRC_Sucess +} + func (ms *MatchSceneMgr) MatchStop(tm *TmMatch) { if SceneMgrSingleton.scenes != nil && tm != nil { for _, scene := range SceneMgrSingleton.scenes { - if scene.IsMatchScene() && scene.matchId == tm.SortId { - scene.DoDelete(false) + if scene.IsMatchScene() && scene.MatchSortId == tm.SortId { + scene.SendGameDestroy(false) } } } diff --git a/worldsrv/multicasthandler.go b/worldsrv/multicasthandler.go deleted file mode 100644 index 2a94ceb..0000000 --- a/worldsrv/multicasthandler.go +++ /dev/null @@ -1,67 +0,0 @@ -package main - -import ( - rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/game/proto" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/netlib" - "mongo.games.com/goserver/srvlib" - "mongo.games.com/goserver/srvlib/protocol" -) - -var ( - MulticastMaker = &MulticastPacketFactory{} -) - -type MulticastPacketFactory struct { -} - -type MulticastHandler struct { -} - -func init() { - netlib.RegisterHandler(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), &MulticastHandler{}) - netlib.RegisterFactory(int(protocol.SrvlibPacketID_PACKET_SS_MULTICAST), MulticastMaker) -} - -func (this *MulticastPacketFactory) CreatePacket() interface{} { - pack := &protocol.SSPacketMulticast{} - return pack -} - -func (this *MulticastPacketFactory) CreateMulticastPacket(packetid int, data interface{}, sis ...*protocol.MCSessionUnion) (rawproto.Message, error) { - pack := &protocol.SSPacketMulticast{ - Sessions: sis, - PacketId: proto.Int(packetid), - } - if byteData, ok := data.([]byte); ok { - pack.Data = byteData - } else { - byteData, err := netlib.MarshalPacket(packetid, data) - if err == nil { - pack.Data = byteData - } else { - logger.Logger.Info("MulticastPacketFactory.CreateMulticastPacket err:", err) - return nil, err - } - } - proto.SetDefaults(pack) - return pack, nil -} - -func (this *MulticastHandler) Process(s *netlib.Session, packetid int, data interface{}) error { - if mp, ok := data.(*protocol.SSPacketMulticast); ok { - pd := mp.GetData() - sis := mp.GetSessions() - for _, si := range sis { - ss := si.GetMcss() - if ss != nil { - ns := srvlib.ServerSessionMgrSington.GetSession(int(ss.GetSArea()), int(ss.GetSType()), int(ss.GetSId())) - if ns != nil { - ns.Send(int(mp.GetPacketId()), pd /*, s.GetSessionConfig().IsInnerLink*/) - } - } - } - } - return nil -} diff --git a/worldsrv/permitmgr.go b/worldsrv/permitmgr.go index 9f0efed..88d55ae 100644 --- a/worldsrv/permitmgr.go +++ b/worldsrv/permitmgr.go @@ -16,11 +16,11 @@ import ( var PermitMgrInst = new(PermitMgr) type PermitMgr struct { - BaseClockSinker + common.BaseClockSinker } func (r *PermitMgr) InterestClockEvent() int { - return 1 << CLOCK_EVENT_DAY + return 1 << common.ClockEventDay } func (r *PermitMgr) OnDayTimer() { @@ -180,5 +180,5 @@ func (r *PermitMgr) OnDayTimer() { } func init() { - ClockMgrSington.RegisteSinker(PermitMgrInst) + common.ClockMgrSingleton.RegisterSinker(PermitMgrInst) } diff --git a/worldsrv/platform.go b/worldsrv/platform.go index a173e6a..d71d19f 100644 --- a/worldsrv/platform.go +++ b/worldsrv/platform.go @@ -48,50 +48,48 @@ type ClubConfig struct { GiveCoinRate []int64 //会长充值额外赠送比例 } type Platform struct { - Id int32 // 平台ID - IdStr string // 字符id - Name string // 平台名称 - Isolated bool // 是否孤立(别的平台看不到) - Disable bool // 是否禁用 - Halls map[int32]*PlatformGameHall //厅 - GamePlayerNum map[int32]*PlatformGamePlayerNum //游戏人数 - dirty bool // - ServiceUrl string //客服地址 - BindOption int32 //绑定选项 - ServiceFlag bool //客服标记 是否支持浏览器跳转 false否 true是 - UpgradeAccountGiveCoin int32 //升级账号奖励金币 - NewAccountGiveCoin int32 //新账号奖励金币 - PerBankNoLimitAccount int32 //同一银行卡号绑定用户数量限制 - ExchangeMin int32 //最低兑换金额 - ExchangeLimit int32 //兑换后身上保留最低余额 - ExchangeTax int32 //兑换税收(万分比) - ExchangeFlow int32 //兑换流水比例 - ExchangeForceTax int32 //强制兑换税收 - ExchangeGiveFlow int32 //赠送兑换流水 - ExchangeFlag int32 //兑换标记 二进制 第一位:兑换税收 第二位:流水比例 - ExchangeVer int32 //兑换版本号 - ExchangeMultiple int32 //兑换基数(只能兑换此数的整数倍) - VipRange []int32 //VIP充值区间 - OtherParams string //其他参数json串 - SpreadConfig int32 //0:等级返点 1:保底返佣 - RankSwitch RankSwitch //排行榜开关 - ClubConfig *ClubConfig //俱乐部配置 - VerifyCodeType int32 //注册账号使用验证码方式 0:短信验证码 1:随机字符串 2:滑块验证码 3:不使用 - RegisterVerifyCodeSwitch bool // 关闭注册验证码 - ThirdGameMerchant map[int32]int32 //三方游戏平台状态 - CustomType int32 //客服类型 0:live800 1:美洽 2:cc - NeedDeviceInfo bool //需要获取设备信息 - NeedSameName bool //绑定的银行卡和支付宝用户名字需要相同 - ExchangeBankMax int32 //银行卡最大兑换金额 0不限制 - ExchangeAlipayMax int32 //支付宝最大兑换金额 0不限制 - DgHboConfig int32 //dg hbo配置,默认0,dg 1 hbo 2 - PerBankNoLimitName int32 //银行卡和支付宝 相同名字最大数量 - IsCanUserBindPromoter bool //是否允许用户手动绑定推广员 - UserBindPromoterPrize int32 //手动绑定奖励 - SpreadWinLose bool //是否打开客损开关 - GameConfig *GameList //平台游戏配置 - MerchantKey string //商户秘钥 - BindTelReward map[int32]int64 // 绑定手机号奖励 + Id int32 // 平台ID + IdStr string // 字符id + Name string // 平台名称 + Isolated bool // 是否孤立(别的平台看不到) + Disable bool // 是否禁用 + dirty bool // + ServiceUrl string //客服地址 + BindOption int32 //绑定选项 + ServiceFlag bool //客服标记 是否支持浏览器跳转 false否 true是 + UpgradeAccountGiveCoin int32 //升级账号奖励金币 + NewAccountGiveCoin int32 //新账号奖励金币 + PerBankNoLimitAccount int32 //同一银行卡号绑定用户数量限制 + ExchangeMin int32 //最低兑换金额 + ExchangeLimit int32 //兑换后身上保留最低余额 + ExchangeTax int32 //兑换税收(万分比) + ExchangeFlow int32 //兑换流水比例 + ExchangeForceTax int32 //强制兑换税收 + ExchangeGiveFlow int32 //赠送兑换流水 + ExchangeFlag int32 //兑换标记 二进制 第一位:兑换税收 第二位:流水比例 + ExchangeVer int32 //兑换版本号 + ExchangeMultiple int32 //兑换基数(只能兑换此数的整数倍) + VipRange []int32 //VIP充值区间 + OtherParams string //其他参数json串 + SpreadConfig int32 //0:等级返点 1:保底返佣 + RankSwitch RankSwitch //排行榜开关 + ClubConfig *ClubConfig //俱乐部配置 + VerifyCodeType int32 //注册账号使用验证码方式 0:短信验证码 1:随机字符串 2:滑块验证码 3:不使用 + RegisterVerifyCodeSwitch bool // 关闭注册验证码 + ThirdGameMerchant map[int32]int32 //三方游戏平台状态 + CustomType int32 //客服类型 0:live800 1:美洽 2:cc + NeedDeviceInfo bool //需要获取设备信息 + NeedSameName bool //绑定的银行卡和支付宝用户名字需要相同 + ExchangeBankMax int32 //银行卡最大兑换金额 0不限制 + ExchangeAlipayMax int32 //支付宝最大兑换金额 0不限制 + DgHboConfig int32 //dg hbo配置,默认0,dg 1 hbo 2 + PerBankNoLimitName int32 //银行卡和支付宝 相同名字最大数量 + IsCanUserBindPromoter bool //是否允许用户手动绑定推广员 + UserBindPromoterPrize int32 //手动绑定奖励 + SpreadWinLose bool //是否打开客损开关 + GameConfig *GameList //平台游戏配置 + MerchantKey string //商户秘钥 + BindTelReward map[int32]int64 // 绑定手机号奖励 } type GameList struct { @@ -129,7 +127,7 @@ func (cfg *GameList) GetGameConfig(gameFreeId int32) *webapiproto.GameFree { return nil } -func CompareGameFreeConfigChged(oldCfg, newCfg *webapiproto.GameFree) bool { +func CompareGameFreeConfigChanged(oldCfg, newCfg *webapiproto.GameFree) bool { if oldCfg.Status != newCfg.Status || oldCfg.GroupId != newCfg.GroupId || oldCfg.DbGameFree.GetBot() != newCfg.DbGameFree.GetBot() || @@ -179,12 +177,10 @@ func CompareGameFreeConfigChged(oldCfg, newCfg *webapiproto.GameFree) bool { func NewPlatform(id int32, isolated bool) *Platform { p := &Platform{ - Id: id, - IdStr: strconv.Itoa(int(id)), - Isolated: isolated, - Halls: make(map[int32]*PlatformGameHall), - GamePlayerNum: make(map[int32]*PlatformGamePlayerNum), - ClubConfig: &ClubConfig{}, + Id: id, + IdStr: strconv.Itoa(int(id)), + Isolated: isolated, + ClubConfig: &ClubConfig{}, GameConfig: &GameList{ gameFreeId: make(map[int32]*webapiproto.GameFree), gameId: make(map[int32][]*webapiproto.GameFree), diff --git a/worldsrv/platformgamehall.go b/worldsrv/platformgamehall.go deleted file mode 100644 index dd73000..0000000 --- a/worldsrv/platformgamehall.go +++ /dev/null @@ -1,71 +0,0 @@ -package main - -import ( - "mongo.games.com/game/proto" - "mongo.games.com/game/protocol/gamehall" - "mongo.games.com/game/protocol/server" -) - -type PlatformGameHall struct { - HallId int32 //游戏厅id - Scenes map[int]*Scene //游戏房间列表 - Players map[int32]*Player //大厅中的玩家 - p *Platform //所属平台 - dbGameFree *server.DB_GameFree //厅配置数据(这里都是模板值,非后台实例数据) - dbGameRule *server.DB_GameRule //游戏配置数据(这里都是模板值,非后台实例数据) -} - -func (pgh *PlatformGameHall) PlayerLeave(p *Player) { - delete(pgh.Players, p.SnId) - if p.hallId == pgh.HallId { - p.hallId = 0 - } -} - -func (p *Player) CreateRoomPlayerInfoProtocol() *gamehall.RoomPlayerInfo { - pack := &gamehall.RoomPlayerInfo{ - SnId: proto.Int32(p.SnId), - Head: proto.Int32(p.Head), - Sex: proto.Int32(p.Sex), - Name: proto.String(p.Name), - Pos: proto.Int(p.pos), - Flag: proto.Int32(p.flag), - HeadOutLine: proto.Int32(p.HeadOutLine), - VIP: proto.Int32(p.VIP), - } - return pack -} - -func (pgh *PlatformGameHall) OnPlayerEnterScene(scene *Scene, player *Player) { - delete(pgh.Players, player.SnId) - pack := &gamehall.SCRoomPlayerEnter{ - RoomId: proto.Int(scene.sceneId), - Player: player.CreateRoomPlayerInfoProtocol(), - } - proto.SetDefaults(pack) - pgh.Broadcast(int(gamehall.GameHallPacketID_PACKET_SC_ROOMPLAYERENTER), pack, player.SnId) -} - -func (pgh *PlatformGameHall) OnPlayerLeaveScene(scene *Scene, player *Player) { - pack := &gamehall.SCRoomPlayerLeave{ - RoomId: proto.Int(scene.sceneId), - Pos: proto.Int(player.pos), - } - proto.SetDefaults(pack) - pgh.Broadcast(int(gamehall.GameHallPacketID_PACKET_SC_ROOMPLAYERLEAVE), pack, player.SnId) -} - -func (pgh *PlatformGameHall) OnDestroyScene(scene *Scene) { - delete(pgh.Scenes, scene.sceneId) - pack := &gamehall.SCDestroyRoom{ - RoomId: proto.Int(scene.sceneId), - OpRetCode: gamehall.OpResultCode_Game_OPRC_Sucess_Game, - IsForce: proto.Int(1), - } - proto.SetDefaults(pack) - pgh.Broadcast(int(gamehall.GameHallPacketID_PACKET_SC_DESTROYROOM), pack, 0) -} - -func (pgh *PlatformGameHall) Broadcast(packetid int, packet interface{}, exclude int32) { - PlatformMgrSingleton.Broadcast(packetid, packet, pgh.Players, exclude) -} diff --git a/worldsrv/platformmgr.go b/worldsrv/platformmgr.go index be24b14..c9769e9 100644 --- a/worldsrv/platformmgr.go +++ b/worldsrv/platformmgr.go @@ -10,6 +10,7 @@ import ( "mongo.games.com/goserver/core/utils" srvlibproto "mongo.games.com/goserver/srvlib/protocol" + "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" hallproto "mongo.games.com/game/protocol/gamehall" @@ -38,7 +39,7 @@ var PlatformMgrSingleton = &PlatformMgr{ } type PlatformMgr struct { - BaseClockSinker + common.BaseClockSinker *model.ConfigMgr platforms map[string]*Platform observers []PlatformObserver @@ -243,7 +244,7 @@ func (pm *PlatformMgr) UpsertGameFree(platform string, data *webapiproto.GameFre pgc.gameId[data.DbGameFree.Id] = append(pgc.gameId[data.DbGameFree.Id], data) } // 新增的场次不会通知 - if ok && old != nil && !CompareGameFreeConfigChged(old, data) { + if ok && old != nil && !CompareGameFreeConfigChanged(old, data) { pm.OnPlatformGameFreeUpdate(p, old, data) pm.SyncGameFree(p.IdStr, data) } @@ -302,7 +303,7 @@ func (pm *PlatformMgr) Broadcast(packetid int, packet interface{}, players map[i } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, packet, v...) + pack, err := common.CreateMulticastPacket(packetid, packet, v...) if err == nil { gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) } @@ -492,7 +493,7 @@ func (this *PlatformMgr) Shutdown() { } func (this *PlatformMgr) InterestClockEvent() int { - return 1<= int64(v.VipEx) { vip = v.VipId @@ -4118,7 +4096,7 @@ func (this *Player) GetPayGoodsInfo() { this.dirty = true this.SendDiffData() - info.Amount[2] = this.GetVIPExpByPay(info.ConsumeNum) + info.Amount[2] = int32(this.GetVIPExpByPay(int64(info.ConsumeNum))) BagMgrSingleton.AddItems(this, items, 0, info.GainWay, info.Operator, info.Remark, 0, 0, false) @@ -4942,3 +4920,67 @@ func (this *Player) SCGuide() { this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCGuideConfig), pack) logger.Logger.Tracef("SCGuideConfig: %v", pack) } + +// DataConfigFuncMap 配置查询方法 +var DataConfigFuncMap = map[int]func(platform string, p *Player) *playerproto.Config{ + common.DataConfigSprite: func(platform string, p *Player) *playerproto.Config { + cfg := PlatformMgrSingleton.GetConfig(platform).SpiritConfig + if cfg == nil { + return nil + } + return &playerproto.Config{ + Tp: common.DataConfigSprite, + On: cfg.On == 1, + Value: cfg.Url, + } + }, + common.DataConfigMatchAudience: func(platform string, p *Player) *playerproto.Config { + if p == nil { + return nil + } + cfg := PlatformMgrSingleton.GetConfig(platform).MatchAudience + if cfg == nil { + return nil + } + d, ok := cfg[p.GetSnId()] + if !ok || d == nil { + return &playerproto.Config{ + Tp: common.DataConfigMatchAudience, + On: false, + } + } + return &playerproto.Config{ + Tp: common.DataConfigMatchAudience, + On: true, + } + }, +} + +// SCDataConfig 通知配置 +// tp 类型 0所有 1小精灵 2比赛观众开关 +func (this *Player) SCDataConfig(tp int) { + if this == nil { + return + } + pack := &playerproto.SCDataConfig{} + if tp == common.DataConfigAll { + for _, f := range DataConfigFuncMap { + d := f(this.Platform, this) + if d != nil { + pack.Cfg = append(pack.Cfg, d) + } + } + } else { + f, ok := DataConfigFuncMap[tp] + if ok { + d := f(this.Platform, this) + if d != nil { + pack.Cfg = append(pack.Cfg, d) + } + } + } + if len(pack.Cfg) > 0 { + this.SendToClient(int(playerproto.PlayerPacketID_PACKET_SCDataConfig), pack) + logger.Logger.Tracef("SCDataConfig: %v", pack) + } +} diff --git a/worldsrv/playerinfo.go b/worldsrv/playerinfo.go new file mode 100644 index 0000000..850c073 --- /dev/null +++ b/worldsrv/playerinfo.go @@ -0,0 +1,128 @@ +package main + +import ( + "strconv" + + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/task" + + "mongo.games.com/game/common" + "mongo.games.com/game/model" + "mongo.games.com/game/worldsrv/internal" +) + +/* +玩家信息加载,缓存,持久化,缓存释放 +*/ + +func init() { + internal.RegisterPlayerLoad(PlayerInfoMgrSingle) +} + +var PlayerInfoMgrSingle = &PlayerInfoMgr{ + Players: make(map[int32]*PlayerInfo), +} + +type AllPlayerInfo struct { + GameData []*model.PlayerGameData +} + +// PlayerInfo 玩家信息 +type PlayerInfo struct { + GameData map[int32]*model.PlayerGameData // 游戏数据 +} + +type PlayerInfoMgr struct { + Players map[int32]*PlayerInfo +} + +func (p *PlayerInfoMgr) Load(platform string, snid int32, player any) *internal.PlayerLoadReplay { + var err error + allPlayerInfo := &AllPlayerInfo{ + GameData: make([]*model.PlayerGameData, 0), + } + // 游戏数据 + gameData, err := model.GetPlayerGameData(platform, snid) + if err != nil { + logger.Logger.Errorf("GetPlayerGameData snid:%v error: %v", snid, err) + goto here + } + allPlayerInfo.GameData = gameData + // ... + +here: + return &internal.PlayerLoadReplay{ + Platform: platform, + Snid: snid, + Err: err, + Data: allPlayerInfo, + } +} + +func (p *PlayerInfoMgr) Callback(player any, ret *internal.PlayerLoadReplay) { + if ret.Err != nil { + return + } + data, ok := ret.Data.(*AllPlayerInfo) + if !ok { + return + } + info := &PlayerInfo{ + GameData: make(map[int32]*model.PlayerGameData), + } + + // 游戏数据 + for _, v := range data.GameData { + info.GameData[v.Id] = v + } + // ... + + p.Players[ret.Snid] = info +} + +func (p *PlayerInfoMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay { + return nil +} + +func (p *PlayerInfoMgr) CallbackAfter(ret *internal.PlayerLoadReplay) { + +} + +func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) { + var err error + f := func() { + data, ok := p.Players[snid] + if !ok { + return + } + + // 游戏数据 + err = model.SavePlayerGameData(platform, common.GetMapValues(data.GameData)) + if err != nil { + logger.Logger.Errorf("SavePlayerGameData snid:%v error: %v", snid, err) + } + // ... + } + + cf := func() { + + } + + if isSync { + f() + cf() + return + } + + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + f() + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + cf() + }), "SavePlayerInfo").StartByFixExecutor("SnId:" + strconv.Itoa(int(snid))) +} + +func (p *PlayerInfoMgr) Release(platform string, snid int32) { + delete(p.Players, snid) +} diff --git a/worldsrv/playermgr.go b/worldsrv/playermgr.go index 55d4c08..73b463b 100644 --- a/worldsrv/playermgr.go +++ b/worldsrv/playermgr.go @@ -2,7 +2,6 @@ package main import ( "math/rand" - "mongo.games.com/game/worldsrv/internal" "time" "mongo.games.com/goserver/core/basic" @@ -16,7 +15,9 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" "mongo.games.com/game/proto" - server_proto "mongo.games.com/game/protocol/server" + playerproto "mongo.games.com/game/protocol/player" + serverproto "mongo.games.com/game/protocol/server" + "mongo.games.com/game/worldsrv/internal" ) var PlayerMgrSington = &PlayerMgr{ @@ -35,7 +36,7 @@ type PlayerPendingData struct { } type PlayerMgr struct { - BaseClockSinker + common.BaseClockSinker sidMap map[int64]*Player // sid snidMap map[int32]*Player // snid accountMap map[string]*Player // accountid @@ -292,7 +293,7 @@ func (this *PlayerMgr) BroadcastMessage(packetid int, rawpack interface{}) bool sc := &srvproto.BCSessionUnion{ Bccs: &srvproto.BCClientSession{}, } - pack, err := BroadcastMaker.CreateBroadcastPacket(sc, packetid, rawpack) + pack, err := common.CreateBroadcastPacket(sc, packetid, rawpack) if err == nil && pack != nil { srvlib.ServerSessionMgrSington.Broadcast(int(srvproto.SrvlibPacketID_PACKET_SS_BROADCAST), pack, common.GetSelfAreaId(), srvlib.GateServerType) return true @@ -318,7 +319,7 @@ func (this *PlayerMgr) BroadcastMessageToPlatform(platform string, packetid int, } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, rawpack, v...) + pack, err := common.CreateMulticastPacket(packetid, rawpack, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -328,6 +329,21 @@ func (this *PlayerMgr) BroadcastMessageToPlatform(platform string, packetid int, } } +func (this *PlayerMgr) BroadcastDataConfigToPlatform(platform string, tp int) { + packetId := int(playerproto.PlayerPacketID_PACKET_SCDataConfig) + pack := &playerproto.SCDataConfig{} + f, ok := DataConfigFuncMap[tp] + if ok { + d := f(platform, nil) + if d != nil { + pack.Cfg = append(pack.Cfg, d) + } + } + if len(pack.Cfg) > 0 { + this.BroadcastMessageToPlatform(platform, packetId, pack) + } +} + func (this *PlayerMgr) BroadcastMessageToPlatformByFunc(platform string, packetid int, rawpack interface{}, f func(p *Player) bool) { if platform == "" { this.BroadcastMessage(packetid, rawpack) @@ -345,7 +361,7 @@ func (this *PlayerMgr) BroadcastMessageToPlatformByFunc(platform string, packeti } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, rawpack, v...) + pack, err := common.CreateMulticastPacket(packetid, rawpack, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -378,7 +394,7 @@ func (this *PlayerMgr) BroadcastMessageToPlatformWithHall(platform string, snid } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, rawpack, v...) + pack, err := common.CreateMulticastPacket(packetid, rawpack, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -391,7 +407,7 @@ func (this *PlayerMgr) BroadcastMessageToPlatformWithHall(platform string, snid // BroadcastMessageToGroup 发送群组消息 func (this *PlayerMgr) BroadcastMessageToGroup(packetid int, rawpack interface{}, tags []string) bool { - pack := &server_proto.SSCustomTagMulticast{ + pack := &serverproto.SSCustomTagMulticast{ Tags: tags, } if byteData, ok := rawpack.([]byte); ok { @@ -405,28 +421,27 @@ func (this *PlayerMgr) BroadcastMessageToGroup(packetid int, rawpack interface{} return false } } - srvlib.ServerSessionMgrSington.Broadcast(int(server_proto.SSPacketID_PACKET_SS_CUSTOMTAG_MULTICAST), pack, common.GetSelfAreaId(), srvlib.GateServerType) + srvlib.ServerSessionMgrSington.Broadcast(int(serverproto.SSPacketID_PACKET_SS_CUSTOMTAG_MULTICAST), pack, common.GetSelfAreaId(), srvlib.GateServerType) return true } // BroadcastMessageToTarget 给某些玩家发消息 -func (this *PlayerMgr) BroadcastMessageToTarget(platform string, target []int32, packetid int, rawpack interface{}) { - players := this.playerOfPlatform[platform] +func (this *PlayerMgr) BroadcastMessageToTarget(target []int32, packetid int, rawpack interface{}) { mgs := make(map[*netlib.Session][]*srvproto.MCSessionUnion) - for _, p := range players { - if p != nil && p.gateSess != nil && p.IsOnLine() /*&& p.Platform == platform*/ { - if common.InSliceInt32(target, p.SnId) { - mgs[p.gateSess] = append(mgs[p.gateSess], &srvproto.MCSessionUnion{ - Mccs: &srvproto.MCClientSession{ - SId: proto.Int64(p.sid), - }, - }) - } + for _, v := range target { + d := this.snidMap[v] + if d != nil && d.gateSess != nil && d.IsOnLine() { + mgs[d.gateSess] = append(mgs[d.gateSess], &srvproto.MCSessionUnion{ + Mccs: &srvproto.MCClientSession{ + SId: proto.Int64(d.sid), + }, + }) } } + for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, rawpack, v...) + pack, err := common.CreateMulticastPacket(packetid, rawpack, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -437,7 +452,7 @@ func (this *PlayerMgr) BroadcastMessageToTarget(platform string, target []int32, // 感兴趣所有clock event func (this *PlayerMgr) InterestClockEvent() int { - return (1 << CLOCK_EVENT_MAX) - 1 + return (1 << common.ClockEventMax) - 1 } func (this *PlayerMgr) OnSecTimer() { @@ -1123,5 +1138,5 @@ func init() { PlayerSubjectSign.AttachHead(FriendMgrSington) // 定时器 - ClockMgrSington.RegisteSinker(PlayerMgrSington) + common.ClockMgrSingleton.RegisterSinker(PlayerMgrSington) } diff --git a/worldsrv/playernotify.go b/worldsrv/playernotify.go new file mode 100644 index 0000000..e944769 --- /dev/null +++ b/worldsrv/playernotify.go @@ -0,0 +1,82 @@ +package main + +import ( + "time" + + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/common" +) + +func init() { + common.ClockMgrSingleton.RegisterSinker(PlayerNotifySingle) +} + +var PlayerNotifySingle = &PlayerNotify{ + players: make(map[int32]map[int32]*PlayerNotifyInfo), +} + +type PlayerNotifyInfo struct { + SnId int32 // 玩家id + Ts int64 // 失效时间戳 +} + +type PlayerNotify struct { + common.BaseClockSinker + players map[int32]map[int32]*PlayerNotifyInfo // 消息类型:玩家id:玩家信息 +} + +func (p *PlayerNotify) InterestClockEvent() int { + return 1 << common.ClockEventMinute +} + +func (p *PlayerNotify) OnMiniTimer() { + now := time.Now() + for _, v := range p.players { + var ids []int32 + for k, vv := range v { + if vv == nil || vv.Ts <= now.Unix() { + ids = append(ids, k) + } + } + for _, id := range ids { + delete(v, id) + } + } +} + +// AddTime 延长某个类型消息的通知时间 +// snid 玩家id +// tp 消息类型 +// d 延长时间 +func (p *PlayerNotify) AddTime(snid int32, tp common.NotifyType, d time.Duration) { + if _, ok := p.players[int32(tp)]; !ok { + p.players[int32(tp)] = make(map[int32]*PlayerNotifyInfo) + } + p.players[int32(tp)][snid] = &PlayerNotifyInfo{ + SnId: snid, + Ts: time.Now().Add(d).Unix(), + } +} + +// GetPlayers 获取某个类型消息的玩家id +// tp 消息类型 +func (p *PlayerNotify) GetPlayers(tp common.NotifyType) []int32 { + now := time.Now() + var ret []int32 + for k, v := range p.players[int32(tp)] { + if v == nil || v.Ts <= now.Unix() { + continue + } + ret = append(ret, k) + } + return ret +} + +// SendToClient 发送消息给客户端 +// tp 消息类型 +func (p *PlayerNotify) SendToClient(tp common.NotifyType, packetId int, pack interface{}) { + ids := p.GetPlayers(tp) + PlayerMgrSington.BroadcastMessageToTarget(ids, packetId, pack) + logger.Logger.Tracef("PlayerNotify SendToClient tp:%v ids:%v", tp, ids) +} diff --git a/worldsrv/playersingleadjust.go b/worldsrv/playersingleadjust.go deleted file mode 100644 index e59a3ad..0000000 --- a/worldsrv/playersingleadjust.go +++ /dev/null @@ -1,273 +0,0 @@ -package main - -import ( - "github.com/globalsign/mgo/bson" - "mongo.games.com/game/model" - "mongo.games.com/game/protocol/server" - "mongo.games.com/game/protocol/webapi" - "mongo.games.com/goserver/core/basic" - "mongo.games.com/goserver/core/logger" - "mongo.games.com/goserver/core/module" - "mongo.games.com/goserver/core/task" - "time" -) - -type PlayerSingleAdjustManager struct { - AdjustData map[uint64]*model.PlayerSingleAdjust - dirtyList map[uint64]bool - cacheDirtyList map[uint64]bool //缓存待删除数据 -} - -var PlayerSingleAdjustMgr = &PlayerSingleAdjustManager{ - AdjustData: make(map[uint64]*model.PlayerSingleAdjust), - dirtyList: make(map[uint64]bool), - cacheDirtyList: make(map[uint64]bool), -} - -func (this *PlayerSingleAdjustManager) WebData(msg *webapi.ASSinglePlayerAdjust, p *Player) (sa *webapi.PlayerSingleAdjust) { - psa := model.WebSingleAdjustToModel(msg.PlayerSingleAdjust) - switch msg.Opration { - case 1: - this.AddNewSingleAdjust(psa) - case 2: - this.EditSingleAdjust(psa) - case 3: - this.DeleteSingleAdjust(psa.Platform, psa.SnId, psa.GameFreeId) - case 4: - sa = this.WebGetSingleAdjust(psa.Platform, psa.SnId, psa.GameFreeId) - return - } - //同步到游服 - if p != nil { - if p.scene != nil && p.scene.dbGameFree.Id == psa.GameFreeId { - gss := GameSessMgrSington.GetGameServerSess(int(psa.GameId)) - pack := &server.WGSingleAdjust{ - SceneId: int32(p.scene.sceneId), - Option: msg.Opration, - PlayerSingleAdjust: model.MarshalSingleAdjust(psa), - } - for _, gs := range gss { - gs.Send(int(server.SSPacketID_PACKET_WG_SINGLEADJUST), pack) - } - } - if p.miniScene != nil { - for _, game := range p.miniScene { - if game.dbGameFree.Id == psa.GameFreeId { - gss := GameSessMgrSington.GetGameServerSess(int(psa.GameId)) - pack := &server.WGSingleAdjust{ - SceneId: int32(game.sceneId), - Option: msg.Opration, - PlayerSingleAdjust: model.MarshalSingleAdjust(psa), - } - for _, gs := range gss { - gs.Send(int(server.SSPacketID_PACKET_WG_SINGLEADJUST), pack) - } - break - } - } - } - } - return -} - -func (this *PlayerSingleAdjustManager) IsSingleAdjustPlayer(snid int32, gameFreeId int32) (*model.PlayerSingleAdjust, bool) { - key := uint64(snid)<<32 + uint64(gameFreeId) - if data, ok := this.AdjustData[key]; ok { - if data.CurTime < data.TotalTime { - return data, true - } - } - return nil, false -} -func (this *PlayerSingleAdjustManager) AddAdjustCount(snid int32, gameFreeId int32) { - key := uint64(snid)<<32 + uint64(gameFreeId) - if ad, ok := this.AdjustData[key]; ok { - ad.CurTime++ - this.dirtyList[key] = true - } -} -func (this *PlayerSingleAdjustManager) GetSingleAdjust(platform string, snid, gameFreeId int32) *model.PlayerSingleAdjust { - key := uint64(snid)<<32 + uint64(gameFreeId) - if psa, ok := this.AdjustData[key]; ok { - return psa - } - return nil -} -func (this *PlayerSingleAdjustManager) WebGetSingleAdjust(platform string, snid, gameFreeId int32) *webapi.PlayerSingleAdjust { - key := uint64(snid)<<32 + uint64(gameFreeId) - if psa, ok := this.AdjustData[key]; ok { - return &webapi.PlayerSingleAdjust{ - Id: psa.Id.Hex(), - Platform: psa.Platform, - GameFreeId: psa.GameFreeId, - SnId: psa.SnId, - Mode: psa.Mode, - TotalTime: psa.TotalTime, - CurTime: psa.CurTime, - BetMin: psa.BetMin, - BetMax: psa.BetMax, - BankerLoseMin: psa.BankerLoseMin, - BankerWinMin: psa.BankerWinMin, - CardMin: psa.CardMin, - CardMax: psa.CardMax, - Priority: psa.Priority, - WinRate: psa.WinRate, - GameId: psa.GameId, - GameMode: psa.GameMode, - Operator: psa.Operator, - CreateTime: psa.CreateTime, - UpdateTime: psa.UpdateTime, - } - } - return nil -} -func (this *PlayerSingleAdjustManager) AddNewSingleAdjust(psa *model.PlayerSingleAdjust) *model.PlayerSingleAdjust { - if psa != nil { - key := uint64(psa.SnId)<<32 + uint64(psa.GameFreeId) - psa.Id = bson.NewObjectId() - psa.CreateTime = time.Now().Unix() - psa.UpdateTime = time.Now().Unix() - - this.AdjustData[key] = psa - logger.Logger.Trace("SinglePlayerAdjust new:", psa) - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.AddNewSingleAdjust(psa) - }), nil, "AddNewSingleAdjust").StartByFixExecutor("AddNewSingleAdjust") - } - return psa -} -func (this *PlayerSingleAdjustManager) EditSingleAdjust(psa *model.PlayerSingleAdjust) { - if psa != nil { - var inGame bool - psa.UpdateTime = time.Now().Unix() - for key, value := range this.AdjustData { - if value.Id == psa.Id { - var tempKey = key - if psa.GameFreeId != value.GameFreeId { - delete(this.AdjustData, key) - delete(this.dirtyList, key) - tempKey = uint64(psa.SnId)<<32 + uint64(psa.GameFreeId) - } - this.AdjustData[tempKey] = psa - this.dirtyList[tempKey] = true - inGame = true - break - } - } - logger.Logger.Trace("SinglePlayerAdjust edit:", *psa) - if !inGame { - //不在游戏 直接更新库 - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.EditSingleAdjust(psa) - }), nil, "EditSingleAdjust").StartByFixExecutor("EditSingleAdjust") - } - } -} -func (this *PlayerSingleAdjustManager) DeleteSingleAdjust(platform string, snid, gameFreeId int32) { - key := uint64(snid)<<32 + uint64(gameFreeId) - if _, ok := this.AdjustData[key]; ok { - delete(this.AdjustData, key) - delete(this.dirtyList, key) - } - logger.Logger.Trace("SinglePlayerAdjust delete:", snid, gameFreeId) - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - return model.DeleteSingleAdjust(&model.PlayerSingleAdjust{SnId: snid, GameFreeId: gameFreeId, Platform: platform}) - }), nil, "DeleteSingleAdjust").Start() -} - -func (this *PlayerSingleAdjustManager) ModuleName() string { - return "PlayerSingleAdjustManager" -} -func (this *PlayerSingleAdjustManager) Init() { - //data, err := model.QueryAllSingleAdjust("1") - //if err != nil { - // logger.Logger.Warn("QueryAllSingleAdjust is err:", err) - // return - //} - //if len(data) > 0 { - // for _, psa := range data { - // _, gameType := srvdata.DataMgr.GetGameFreeIds(psa.GameId, psa.GameMode) - // if gameType != common.GameType_Mini { - // key := uint64(psa.SnId)<<32 + uint64(psa.GameFreeId) - // this.AdjustData[key] = psa - // } - // } - //} -} - -// 登录加载 -func (this *PlayerSingleAdjustManager) LoadSingleAdjustData(platform string, snid int32) { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - ret, err := model.QueryAllSingleAdjustByKey(platform, snid) - if err != nil { - return nil - } - return ret - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - if data != nil { - ret := data.([]*model.PlayerSingleAdjust) - for _, psa := range ret { - key := uint64(psa.SnId)<<32 + uint64(psa.GameFreeId) - this.AdjustData[key] = psa - } - } - })).StartByFixExecutor("LoadPlayerSingleAdjust") -} - -// 掉线删除 -func (this *PlayerSingleAdjustManager) DelPlayerData(platform string, snid int32) { - for _, psa := range this.AdjustData { - if psa.Platform == platform && psa.SnId == snid { - key := uint64(psa.SnId)<<32 + uint64(psa.GameFreeId) - if this.dirtyList[key] { - this.cacheDirtyList[key] = true - } else { - delete(this.AdjustData, key) - } - } - } -} -func (this *PlayerSingleAdjustManager) Update() { - if len(this.dirtyList) == 0 { - return - } - var syncArr []*model.PlayerSingleAdjust - for key, _ := range this.dirtyList { - syncArr = append(syncArr, this.AdjustData[key]) - delete(this.dirtyList, key) - } - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - var saveArr [2][]uint64 - for _, value := range syncArr { - err := model.EditSingleAdjust(value) - if err != nil { - logger.Logger.Error("PlayerSingleAdjustManager edit ", err) - saveArr[0] = append(saveArr[0], uint64(value.SnId)<<32+uint64(value.GameFreeId)) - } else { - saveArr[1] = append(saveArr[1], uint64(value.SnId)<<32+uint64(value.GameFreeId)) - } - } - return saveArr - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - if saveArr, ok := data.([2][]uint64); ok { - //失败处理 - for _, key := range saveArr[0] { - this.dirtyList[key] = true - } - //成功处理 - for _, key := range saveArr[1] { - if this.cacheDirtyList[key] { - delete(this.cacheDirtyList, key) - delete(this.AdjustData, key) - } - } - } - return - })).StartByFixExecutor("PlayerSingleAdjustManager") -} -func (this *PlayerSingleAdjustManager) Shutdown() { - module.UnregisteModule(this) -} -func init() { - module.RegisteModule(PlayerSingleAdjustMgr, time.Minute*5, 0) -} diff --git a/worldsrv/playgamenum.go b/worldsrv/playgamenum.go deleted file mode 100644 index 7e26726..0000000 --- a/worldsrv/playgamenum.go +++ /dev/null @@ -1,47 +0,0 @@ -package main - -import ( - "mongo.games.com/game/common" - //"mongo.games.com/game/gamerule/blackjack" - //"mongo.games.com/game/gamerule/dezhoupoker" - //"mongo.games.com/game/gamerule/fivecardstud" - //"mongo.games.com/game/gamerule/omahapoker" -) - -var minPlayGameNum = map[int]int{ - common.GameId_TenHalf: 2, - common.GameId_DezhouPoker: 2, - common.GameId_FiveCardStud: 2, - common.GameId_BlackJack: 1, - //common.GameId_OmahaPoker: omahapoker.MinNumOfPlayer, -} - -var maxPlayGameNum = map[int]int{ - //common.GameId_DezhouPoker: int(dezhoupoker.MaxNumOfPlayer), - //common.GameId_FiveCardStud: int(fivecardstud.MaxNumOfPlayer), - //common.GameId_BlackJack: blackjack.MaxPlayer, - //common.GameId_OmahaPoker: omahapoker.MaxNumOfPlayer, -} - -func GetGameStartMinNum(gameid int) int { - return minPlayGameNum[gameid] -} -func GetGameSuiableNum(gameid int, flag int32) int { - minNum, maxNum := minPlayGameNum[gameid], maxPlayGameNum[gameid] - if flag == MatchTrueManForbid { - if minNum == maxNum { - return minNum - } else { - return maxNum - 1 - } - } else { - if minNum == maxNum { - return minNum - } else { - return maxNum - 2 - } - } -} -func IsRegularNum(gameid int) bool { - return minPlayGameNum[gameid] == maxPlayGameNum[gameid] -} diff --git a/worldsrv/qmflowmgr.go b/worldsrv/qmflowmgr.go index 4933aed..5d345fb 100644 --- a/worldsrv/qmflowmgr.go +++ b/worldsrv/qmflowmgr.go @@ -1,6 +1,7 @@ package main import ( + "mongo.games.com/game/common" "mongo.games.com/game/model" server_proto "mongo.games.com/game/protocol/server" "mongo.games.com/game/webapi" @@ -13,7 +14,7 @@ import ( ) type QMFlowManager struct { - BaseClockSinker + common.BaseClockSinker playerStatement map[int32]map[int32]*webapi.PlayerStatementSrc offPlayerStatement map[int32]map[int32]*webapi.PlayerStatementSrc } @@ -40,7 +41,7 @@ func (this *QMFlowManager) Shutdown() { // 感兴趣所有clock event func (this *QMFlowManager) InterestClockEvent() int { - return 1 << CLOCK_EVENT_HOUR + return 1 << common.ClockEventHour } func (this *QMFlowManager) OnHourTimer() { @@ -458,5 +459,5 @@ func (this *QMFlowManager) Save() { func init() { module.RegisteModule(QMFlowMgr, time.Minute*3, 0) - ClockMgrSington.RegisteSinker(QMFlowMgr) + common.ClockMgrSingleton.RegisterSinker(QMFlowMgr) } diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index 1a97d9c..f81f5a6 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "fmt" + "mongo.games.com/game/common" "sort" "strings" "time" @@ -244,7 +245,7 @@ func (this *PlayerRankSeason) rankLog(rankType int32) { } type RankMatchMgr struct { - BaseClockSinker + common.BaseClockSinker failSeason []string seasons map[string]*RankSeasonId // 当前赛季 key平台id playerSeasons map[int32]*PlayerRankSeason // 玩家排位信息 key玩家id @@ -638,7 +639,7 @@ func (r *RankMatchMgr) GetRankAwardList(rankType int32) []*rankmatch.AwardItem { //========================implement ClockSinker ============================== func (r *RankMatchMgr) InterestClockEvent() int { - return 1 << CLOCK_EVENT_DAY + return 1 << common.ClockEventDay } func (r *RankMatchMgr) OnDayTimer() { @@ -934,6 +935,6 @@ func (r *RankMatchMgr) Release(platform string, snid int32) { func init() { module.RegisteModule(RankMgrSingleton, time.Minute, 0) - ClockMgrSington.RegisteSinker(RankMgrSingleton) + common.ClockMgrSingleton.RegisterSinker(RankMgrSingleton) internal.RegisterPlayerLoad(RankMgrSingleton) } diff --git a/worldsrv/scene.go b/worldsrv/scene.go index b01394c..333f90e 100644 --- a/worldsrv/scene.go +++ b/worldsrv/scene.go @@ -1,13 +1,11 @@ package main import ( - "math" "math/rand" "strconv" "time" rawproto "google.golang.org/protobuf/proto" - "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" "mongo.games.com/goserver/srvlib" @@ -17,186 +15,132 @@ import ( "mongo.games.com/game/gamerule/tienlen" "mongo.games.com/game/model" "mongo.games.com/game/proto" + "mongo.games.com/game/protocol/gamehall" hallproto "mongo.games.com/game/protocol/gamehall" - playerproto "mongo.games.com/game/protocol/player" serverproto "mongo.games.com/game/protocol/server" "mongo.games.com/game/srvdata" ) -const ( - MatchSceneState_Waiting = iota //等待状态 - MatchSceneState_Running //进行状态 - MatchSceneState_Billed //结算状态 -) - -const ( - // PlayerHistoryModel . - PlayerHistoryModel = iota + 1 - - // BIGWIN_HISTORY_MODEL . - BIGWIN_HISTORY_MODEL - - // GameHistoryModel . - GameHistoryModel -) - type PlayerGameCtx struct { - takeCoin int64 //进房时携带的金币量 - enterTs int64 //进入时间 - totalConvertibleFlow int64 //进房时玩家身上的总流水 + takeCoin int64 //进房时携带的金币量 + enterTs int64 //进入时间 } // Scene 场景(房间) type Scene struct { - sceneId int //场景id - gameId int //游戏id - gameMode int //游戏模式 - sceneMode int //房间模式,参考common.SceneMode_XXX - params []int64 //场景参数 - paramsEx []int32 //其他扩展参数 - playerNum int //人数 - robotNum int //机器人数量 - robotLimit int //最大限制机器人数量 - preInviteRobNum int //准备邀请机器人的数量 - creator int32 //创建者账号id - agentor int32 //代理者id - replayCode string //回放码 - currRound int32 //当前第几轮 - totalRound int32 //总共几轮 - clycleTimes int32 //循环次数 - deleting bool //正在删除 - starting bool //正在开始 - closed bool //房间已关闭 - force bool //强制删除 - hadCost bool //是否已经扣过房卡 - inTeahourse bool //是否在棋牌馆 - players map[int32]*Player //玩家 - audiences map[int32]*Player //观众 - seats [9]*Player //座位 - gameSess *GameSession //所在gameserver - sp ScenePolicy //场景上的一些业务策略 - createTime time.Time //创建时间 - lastTime time.Time //最后活跃时间 - startTime time.Time //开始时间 - dirty bool //脏标记 - applyTimes map[int32]int32 //申请坐下次数 - limitPlatform *Platform //限制平台 - groupId int32 //组id - hallId int32 //厅id - state int32 //场景当前状态 - fishing int32 //渔场的鱼潮状态 - gameCtx map[int32]*PlayerGameCtx //进入房间的环境 - dbGameFree *serverproto.DB_GameFree // - ClubId int32 - clubRoomID string //俱乐部包间ID - clubRoomPos int32 // - clubRoomTax int32 // - createFee int32 //创建房间的费用 - GameLog []int32 //游戏服务器同步的录单 - JackPotFund int64 //游戏服务器同步的奖池 - State int32 //当前游戏状态,后期放到ScenePolicy里去处理 - StateTs int64 //切换到当前状态的时间 - StateSec int32 //押注状态的秒数 - BankerListNum int32 //庄家列表数量 - matchParams []int32 //比赛参数 - matchState int //比赛状态 - quitMatchSnids []int32 //退赛玩家id - gameSite int //tienlen游戏场次区分 1.初级 2.中级 3.高级场 - BaseScore int32 //tienlen游戏底分 - matchId int64 //比赛场id - - csp *CoinScenePool // 所在场景池 + sceneId int // 场景id + gameId int // 游戏id + gameMode int // 废弃,游戏模式(玩法) + sceneMode int // 房间模式,参考common.SceneMode_XXX + params []int64 // 场景参数 + playerNum int // 房间最大人数 + robotNum int // 机器人数量 + robotLimit int // 最大限制机器人数量 + creator int32 // 创建者账号id + replayCode string // 回放码 + currRound int32 // 当前第几轮 + totalRound int32 // 总共几轮,小于等于0表示无限轮 + cycleTimes int32 // 循环次数 + deleting bool // 正在删除 + starting bool // 正在开始 + closed bool // 房间已关闭 + force bool // 强制删除 + players map[int32]*Player // 玩家 + audiences map[int32]*Player // 观众 + seats [9]*Player // 座位 + gameSess *GameSession // 所在gameserver + sp ScenePolicy // 场景上的一些业务策略 + createTime time.Time // 创建时间 + lastTime time.Time // 最后活跃时间 + startTime time.Time // 游戏开始时间 + limitPlatform *Platform // 限制平台 + groupId int32 // 组id + dbGameFree *serverproto.DB_GameFree // 场次配置 + gameCtx map[int32]*PlayerGameCtx // 进入房间的环境,没有机器人数据 SnId + BaseScore int32 // 游戏底分,优先级,创建参数>本地配置>场次配置 + SceneState int32 // 房间当前状态 + State int32 // 当前游戏状态,后期放到ScenePolicy里去处理 + StateTs int64 // 切换到当前状态的时间 + StateSec int32 // 押注状态的秒数 + Channel []string // 客户端类型 + *serverproto.CustomParam // 房卡场参数 + *serverproto.MatchParam // 比赛场参数 + csp *CoinScenePool // 所在场景池 + hp *HundredSceneMgr // 百人场房间池 } // NewScene 创建房间 -func NewScene(agentor, creator int32, id, gameId, gameMode, sceneMode int, clycleTimes, numOfGames int32, params []int64, - gs *GameSession, limitPlatform *Platform, groupId int32, dbGameFree *serverproto.DB_GameFree, paramsEx ...int32) *Scene { +func NewScene(args *CreateSceneParam) *Scene { + gameId := int(args.GF.GetGameId()) + gameMode := int(args.GF.GetGameMode()) sp := GetScenePolicy(gameId, gameMode) if sp == nil { logger.Logger.Errorf("NewScene sp == nil, gameId=%v gameMode=%v", gameId, gameMode) return nil } + s := &Scene{ - sceneId: id, - hallId: dbGameFree.Id, - playerNum: 0, - creator: creator, - agentor: agentor, + sceneId: args.RoomId, + playerNum: int(args.PlayerNum), + creator: args.CreateId, gameId: gameId, gameMode: gameMode, - sceneMode: sceneMode, - params: params, - paramsEx: paramsEx, - clycleTimes: clycleTimes, + sceneMode: args.SceneMode, + params: args.Params, + cycleTimes: int32(args.CycleTimes), players: make(map[int32]*Player), audiences: make(map[int32]*Player), - gameSess: gs, + gameSess: args.GS, sp: sp, createTime: time.Now(), - limitPlatform: limitPlatform, - groupId: groupId, + limitPlatform: args.Platform, + groupId: 0, gameCtx: make(map[int32]*PlayerGameCtx), //进入房间的环境 - dbGameFree: dbGameFree, + dbGameFree: args.GF, currRound: 0, - totalRound: numOfGames, - } - // 从房间配置参数获取,最大房间人数 - s.playerNum = int(sp.GetPlayerNum(s)) - s.lastTime = s.createTime - - if s.IsHallScene() || s.IsCoinScene() { - code := SceneMgrSingleton.AllocReplayCode() - s.replayCode = code - } - if s.dbGameFree.GetMatchMode() == 0 { - s.RandRobotCnt() - } - if s.IsMatchScene() { - s.BaseScore = 10 - } - s.sp.OnStart(s) - return s -} - -func NewLocalGameScene(creator int32, sceneId, gameId, gameSite, sceneMode int, clycleTimes int32, params []int64, - gs *GameSession, limitPlatform *Platform, playerNum int, dbGameFree *serverproto.DB_GameFree, baseScore, groupId int32, paramsEx ...int32) *Scene { - sp := GetScenePolicy(gameId, 0) - if sp == nil { - logger.Logger.Errorf("NewLocalGameScene sp == nil, gameId=%v ", gameId) - return nil - } - s := &Scene{ - sceneId: sceneId, - hallId: dbGameFree.Id, - playerNum: playerNum, - creator: creator, - gameId: gameId, - sceneMode: sceneMode, - params: params, - paramsEx: paramsEx, - clycleTimes: clycleTimes, - players: make(map[int32]*Player), - audiences: make(map[int32]*Player), - gameSess: gs, - sp: sp, - createTime: time.Now(), - limitPlatform: limitPlatform, - groupId: groupId, - gameCtx: make(map[int32]*PlayerGameCtx), //进入房间的环境 - dbGameFree: dbGameFree, - gameSite: gameSite, - BaseScore: baseScore, + totalRound: int32(args.TotalRound), + BaseScore: args.BaseScore, + Channel: args.Channel, + CustomParam: args.CustomParam, + MatchParam: args.MatchParam, } + // 最大房间人数 if s.playerNum <= 0 { - s.playerNum = int(sp.GetPlayerNum(s)) + s.playerNum = sp.GetPlayerNum() + } + // 底分 + if s.BaseScore <= 0 { + s.BaseScore = int32(sp.GetBaseScore()) } if s.BaseScore <= 0 { - s.BaseScore = int32(sp.GetBaseCoin(s)) + s.BaseScore = s.dbGameFree.GetBaseScore() + } + if s.cycleTimes <= 0 { + s.cycleTimes = 1 } s.lastTime = s.createTime + s.replayCode = SceneMgrSingleton.AllocReplayCode() - code := SceneMgrSingleton.AllocReplayCode() - s.replayCode = code + if s.dbGameFree.GetMatchMode() == 0 { + // 普通匹配设置最大机器人数量 + number := s.dbGameFree.GetRobotNumRng() + if len(number) >= 2 { + if number[1] == number[0] { + s.robotLimit = int(number[0]) + } else { + if number[1] < number[0] { + number[1], number[0] = number[0], number[1] + } + s.robotLimit = int(number[1]) + } + } + } + if s.MatchParam == nil { + s.MatchParam = new(serverproto.MatchParam) + } + if s.CustomParam == nil { + s.CustomParam = new(serverproto.CustomParam) + } s.sp.OnStart(s) return s } @@ -205,9 +149,6 @@ func (this *Scene) RebindPlayerSnId(oldSnId, newSnId int32) { if this.creator == oldSnId { this.creator = newSnId } - if this.agentor == oldSnId { - this.agentor = newSnId - } if p, exist := this.players[oldSnId]; exist { delete(this.players, oldSnId) this.players[newSnId] = p @@ -227,18 +168,26 @@ func (this *Scene) RobotIsLimit() bool { return false } +func (this *Scene) GetPlayerGameCtx(snid int32) *PlayerGameCtx { + if ctx, exist := this.gameCtx[snid]; exist { + return ctx + } + return nil +} + +// PlayerEnter 玩家进入场景 func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { logger.Logger.Infof("(this *Scene:%v) PlayerEnter(%v, %v) ", this.sceneId, p.SnId, pos) - if p.IsRob { - if this.robotLimit != 0 { - if !model.GameParamData.IsRobFightTest { - //增加所有机器人对战场的 - if this.robotNum+1 > this.robotLimit { - logger.Logger.Warnf("(this *Scene:%v) PlayerEnter(%v) robot num limit(%v)", this.sceneId, p.SnId, this.robotLimit) - return false - } - } + if this.dbGameFree == nil { + return false + } + + // 机器人数量限制 + if p.IsRobot() && this.robotLimit != 0 { + if this.robotNum+1 > this.robotLimit { + logger.Logger.Warnf("(this *Scene:%v) PlayerEnter(%v) robot num limit(%v)", this.sceneId, p.SnId, this.robotLimit) + return false } } @@ -268,20 +217,6 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { } } - p.scene = this - this.players[p.SnId] = p - this.gameSess.AddPlayer(p) - - switch { - case this.IsCoinScene(): - - case this.IsHundredScene(): - // todo 删除这个标记 - HundredSceneMgrSington.OnPlayerEnter(p, this.paramsEx[0]) - case this.IsMatchScene(): - - } - // 如果正在等待比赛,退赛 if !this.IsMatchScene() { isWaiting, tmid := TournamentMgr.IsMatchWaiting(p.Platform, p.SnId) @@ -293,8 +228,12 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { takeCoin := p.Coin leaveCoin := int64(0) gameTimes := rand.Int31n(100) - matchParams := []int32{} //排名、段位、假snid、假角色、假皮肤 + if this.IsCustom() { // 房卡场初始1000金币 + takeCoin = 1000 + } + + var matchParams []int32 //排名、段位、假snid、假角色、假皮肤 if this.IsMatchScene() && p.matchCtx != nil { takeCoin = int64(p.matchCtx.grade) matchParams = append(matchParams, p.matchCtx.rank) //排名 @@ -306,146 +245,6 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { matchParams = append(matchParams, p.matchCtx.copySnid) //假snid matchParams = append(matchParams, p.matchCtx.copyRoleId) //假RoleId matchParams = append(matchParams, p.matchCtx.copySkinId) //假SkinId - } else { - if p.IsRob { - if len(this.paramsEx) > 0 { //机器人携带金币动态调整 - gps := PlatformMgrSingleton.GetGameFree(this.limitPlatform.IdStr, this.paramsEx[0]) - if gps != nil { - dbGameFree := gps.DbGameFree - if gps.GroupId != 0 { - pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId) - if pgg != nil { - dbGameFree = pgg.DbGameFree - } - } - - flag := false - if common.IsLocalGame(this.gameId) { - baseScore := this.BaseScore - arrs := srvdata.PBDB_CreateroomMgr.Datas.Arr - tmpIds := []int32{} - for i := 0; i < len(arrs); i++ { - arr := arrs[i] - if int(arr.GameId) == this.gameId && int(arr.GameSite) == this.gameSite { - betRange := arr.GetBetRange() - if len(betRange) == 0 { - continue - } - for j := 0; j < len(betRange); j++ { - if betRange[j] == baseScore && len(arr.GetGoldRange()) > 0 && arr.GetGoldRange()[0] != 0 { - tmpIds = append(tmpIds, arr.GetId()) - break - } - } - } - } - if len(tmpIds) > 0 { - randId := common.RandInt32Slice(tmpIds) - crData := srvdata.PBDB_CreateroomMgr.GetData(randId) - if crData != nil { - goldRange := crData.GetGoldRange() - if len(goldRange) == 2 { - takeCoin = common.RandFromRangeInt64(int64(goldRange[0]), int64(goldRange[1])) - flag = true - } else if len(goldRange) == 1 { - takeCoin = common.RandFromRangeInt64(int64(goldRange[0]), 2*int64(goldRange[0])) - flag = true - } - leaveCoin = int64(goldRange[0]) - for _, id := range tmpIds { - tmp := srvdata.PBDB_CreateroomMgr.GetData(id).GetGoldRange() - if int64(tmp[0]) < leaveCoin && tmp[0] != 0 { - leaveCoin = int64(tmp[0]) - } - } - } - } else { - logger.Logger.Warn("gameId: ", this.gameId, " gameSite: ", this.gameSite, " baseScore: ", baseScore) - } - if leaveCoin > takeCoin { - logger.Logger.Warn("robotSnId: ", p.SnId, " baseScore: ", baseScore, " takeCoin: ", takeCoin, " leaveCoin: ", leaveCoin) - } - if takeCoin > p.Coin { - p.Coin = takeCoin - } - } - //if !flag && this.IsCoinScene() && !this.IsTestScene() { - // if expectEnterCoin, expectLeaveCoin, ExpectGameTime, ok := RobotCarryMgrEx.RandOneCarry(dbGameFree.GetId()); ok && expectEnterCoin > dbGameFree.GetLimitCoin() && expectEnterCoin < dbGameFree.GetMaxCoinLimit() { - // takeCoin = int64(expectEnterCoin) - // leaveCoin = int64(expectLeaveCoin) - // //如果带入金币和离开金币比较接近,就调整离开金币值 - // var delta = takeCoin - leaveCoin - // if math.Abs(float64(delta)) < float64(takeCoin/50) { - // if leaveCoin = takeCoin + delta*(10+rand.Int63n(50)); leaveCoin < 0 { - // leaveCoin = 0 - // } - // } - // gameTimes = ExpectGameTime * 2 - // flag = true - // } - //} - - if !flag { - takerng := dbGameFree.GetRobotTakeCoin() - if len(takerng) >= 2 && takerng[1] > takerng[0] { - if takerng[0] < dbGameFree.GetLimitCoin() { - takerng[0] = dbGameFree.GetLimitCoin() - } - takeCoin = int64(common.RandInt(int(takerng[0]), int(takerng[1]))) - } else { - maxlimit := int64(dbGameFree.GetMaxCoinLimit()) - if maxlimit != 0 && p.Coin > maxlimit { - logger.Logger.Trace("Player coin:", p.Coin) - //在下限和上限之间随机,并对其的100的整数倍 - takeCoin = int64(common.RandInt(int(dbGameFree.GetLimitCoin()), int(maxlimit))) - logger.Logger.Trace("Take coin:", takeCoin) - } - if maxlimit == 0 && this.IsCoinScene() { - maxlimit = int64(common.RandInt(10, 50)) * int64(dbGameFree.GetLimitCoin()) - takeCoin = int64(common.RandInt(int(dbGameFree.GetLimitCoin()), int(maxlimit))) - logger.Logger.Trace("Take coin:", takeCoin) - } - } - takeCoin = takeCoin / 100 * 100 - //离场金币 - leaverng := dbGameFree.GetRobotLimitCoin() - if len(leaverng) >= 2 { - leaveCoin = int64(leaverng[0] + rand.Int63n(leaverng[1]-leaverng[0])) - } - } - - // 象棋积分 - chessScore := dbGameFree.GetChessScoreParams() - if len(chessScore) == 2 { - p.ChessGrade = int64(common.RandInt(int(chessScore[0]), int(chessScore[1]))) - } - - bankerLimit := this.dbGameFree.GetBanker() - if bankerLimit != 0 { - //上庄AI携带 - if /*this.gameId == common.GameId_HundredBull ||*/ - this.gameId == common.GameId_RollCoin || - this.gameId == common.GameId_RollAnimals || - this.gameId == common.GameId_DragonVsTiger || - this.gameId == common.GameId_Baccarat { - if this.BankerListNum < 3 { - if rand.Intn(100) < 5 { - randCoin := int64(math.Floor(float64(bankerLimit) * 1 / float64(this.dbGameFree.GetSceneType()))) - takeCoin = rand.Int63n(randCoin) + int64(bankerLimit) - if takeCoin > p.Coin { - //加钱速度慢 暂时不用 - //ExePMCmd(p.gateSess, fmt.Sprintf("%v%v%v", common.PMCmd_AddCoin, common.PMCmd_SplitToken, takeCoin)) - } - } - } - } - } - if takeCoin > p.Coin { - p.Coin = takeCoin - } - } - } - } } if p.IsRob { @@ -456,268 +255,324 @@ func (this *Scene) PlayerEnter(p *Player, pos int, ischangeroom bool) bool { p.RandRobotPetSkillLevel() name := this.GetSceneName() logger.Logger.Tracef("(this *Scene) PlayerEnter(%v) robot(%v) robotlimit(%v)", name, this.robotNum, this.robotLimit) + + if !this.IsMatchScene() && !this.IsCustom() { + flag := false + // 本地游戏机器人携带金币 + if common.IsLocalGame(this.gameId) { + baseScore := this.BaseScore + arrs := srvdata.PBDB_CreateroomMgr.Datas.Arr + var tmpIds []int32 + for i := 0; i < len(arrs); i++ { + arr := arrs[i] + if int(arr.GameId) == this.gameId && arr.GameSite == this.dbGameFree.GetSceneType() { + betRange := arr.GetBetRange() + if len(betRange) == 0 { + continue + } + for j := 0; j < len(betRange); j++ { + if betRange[j] == baseScore && len(arr.GetGoldRange()) > 0 && arr.GetGoldRange()[0] != 0 { + tmpIds = append(tmpIds, arr.GetId()) + break + } + } + } + } + if len(tmpIds) > 0 { + randId := common.RandInt32Slice(tmpIds) + crData := srvdata.PBDB_CreateroomMgr.GetData(randId) + if crData != nil { + goldRange := crData.GetGoldRange() + if len(goldRange) == 2 { + takeCoin = common.RandFromRangeInt64(int64(goldRange[0]), int64(goldRange[1])) + flag = true + } else if len(goldRange) == 1 { + takeCoin = common.RandFromRangeInt64(int64(goldRange[0]), 2*int64(goldRange[0])) + flag = true + } + leaveCoin = int64(goldRange[0]) + for _, id := range tmpIds { + tmp := srvdata.PBDB_CreateroomMgr.GetData(id).GetGoldRange() + if int64(tmp[0]) < leaveCoin && tmp[0] != 0 { + leaveCoin = int64(tmp[0]) + } + } + } + } else { + logger.Logger.Warn("gameId: ", this.gameId, " gameSite: ", this.dbGameFree.GetSceneType(), " BaseScore: ", baseScore) + } + if leaveCoin > takeCoin { + logger.Logger.Warn("robotSnId: ", p.SnId, " BaseScore: ", baseScore, " takeCoin: ", takeCoin, " leaveCoin: ", leaveCoin) + } + if takeCoin > p.Coin { + p.Coin = takeCoin + } + } + + // 非本地游戏机器人携带金币 + if !flag { + takerng := this.dbGameFree.GetRobotTakeCoin() + if len(takerng) >= 2 && takerng[1] > takerng[0] { + if takerng[0] < this.dbGameFree.GetLimitCoin() { + takerng[0] = this.dbGameFree.GetLimitCoin() + } + takeCoin = int64(common.RandInt(int(takerng[0]), int(takerng[1]))) + } else { + maxlimit := int64(this.dbGameFree.GetMaxCoinLimit()) + if maxlimit != 0 && p.Coin > maxlimit { + logger.Logger.Trace("Player coin:", p.Coin) + //在下限和上限之间随机,并对其的100的整数倍 + takeCoin = int64(common.RandInt(int(this.dbGameFree.GetLimitCoin()), int(maxlimit))) + logger.Logger.Trace("Take coin:", takeCoin) + } + if maxlimit == 0 && this.IsCoinScene() { + maxlimit = int64(common.RandInt(10, 50)) * int64(this.dbGameFree.GetLimitCoin()) + takeCoin = int64(common.RandInt(int(this.dbGameFree.GetLimitCoin()), int(maxlimit))) + logger.Logger.Trace("Take coin:", takeCoin) + } + } + takeCoin = takeCoin / 100 * 100 + //离场金币 + leaverng := this.dbGameFree.GetRobotLimitCoin() + if len(leaverng) >= 2 { + leaveCoin = leaverng[0] + rand.Int63n(leaverng[1]-leaverng[0]) + } + } + + // 象棋积分 + chessScore := this.dbGameFree.GetChessScoreParams() + if len(chessScore) == 2 { + p.ChessGrade = int64(common.RandInt(int(chessScore[0]), int(chessScore[1]))) + } + + if takeCoin > p.Coin { + p.Coin = takeCoin + } + } } - //todo:send add msg to gamesrv - data, err := p.MarshalData(this.gameId) - if err == nil { - var gateSid int64 - if p.gateSess != nil { - if srvInfo, ok := p.gateSess.GetAttribute(srvlib.SessionAttributeServerInfo).(*srvlibproto.SSSrvRegiste); ok && srvInfo != nil { - sessionId := srvlib.NewSessionIdEx(srvInfo.GetAreaId(), srvInfo.GetType(), srvInfo.GetId(), 0) - gateSid = sessionId.Get() - } - } - isQuMin := false - //if !p.IsRob { - // pt := PlatformMgrSingleton.GetPackageTag(p.PackageID) - // if pt != nil && pt.SpreadTag == 1 { - // isQuMin = true - // } - //} - msg := &serverproto.WGPlayerEnter{ - Sid: proto.Int64(p.sid), - SnId: proto.Int32(p.SnId), - GateSid: proto.Int64(gateSid), - SceneId: proto.Int(this.sceneId), - PlayerData: data, - IsLoaded: proto.Bool(ischangeroom), - IsQM: proto.Bool(isQuMin), - IParams: p.MarshalIParam(), - SParams: p.MarshalSParam(), - CParams: p.MarshalCParam(), - } - //sa, err2 := p.MarshalSingleAdjustData(this.dbGameFree.Id) - //if err2 == nil && sa != nil { - // msg.SingleAdjust = sa - //} - if this.ClubId != 0 { - - } - p.takeCoin = takeCoin - p.sceneCoin = takeCoin - p.enterts = time.Now() - - if !p.IsRob { //保存下进入时的环境 - this.gameCtx[p.SnId] = &PlayerGameCtx{ - takeCoin: p.takeCoin, - enterTs: p.enterts.Unix(), - totalConvertibleFlow: p.TotalConvertibleFlow, - } - this.lastTime = time.Now() - } - msg.TakeCoin = proto.Int64(takeCoin) - msg.ExpectLeaveCoin = proto.Int64(leaveCoin) - msg.ExpectGameTimes = proto.Int32(gameTimes) - msg.Pos = proto.Int(p.pos) - if matchParams != nil { - for _, param := range matchParams { - msg.MatchParams = append(msg.MatchParams, param) - } - } - - // 道具 - dbItemArr := srvdata.GameItemMgr.GetArr(p.Platform) - if dbItemArr != nil { - msg.Items = make(map[int32]int64) - for _, dbItem := range dbItemArr { - msg.Items[dbItem.Id] = 0 - itemInfo := BagMgrSingleton.GetItem(p.SnId, dbItem.Id) - if itemInfo != nil { - msg.Items[dbItem.Id] = itemInfo.ItemNum - } - } - } - - // 排位积分 - ret := RankMgrSingleton.GetPlayerSeason(p.SnId) - if ret != nil && ret.PlayerRankSeason != nil { - msg.RankScore = make(map[int32]int64) - for k, v := range ret.RankType { - if v != nil { - msg.RankScore[k] = v.Score - } - } - } - - if p.IsRobot() { - msg.RankScore = make(map[int32]int64) - rankScore := this.dbGameFree.GetRankScoreParams() - if len(rankScore) == 2 { - switch { - case this.dbGameFree.GameDif == common.GameDifTienlen: - msg.RankScore[tienlen.RankType] = int64(common.RandInt(int(rankScore[0]), int(rankScore[1]))) - } - } - } - - proto.SetDefaults(msg) - this.SendToGame(int(serverproto.SSPacketID_PACKET_WG_PLAYERENTER), msg) - logger.Logger.Tracef("SSPacketID_PACKET_WG_PLAYERENTER Scene:%v ;PlayerEnter(%v, %v)", this.sceneId, p.SnId, pos) - FirePlayerEnterScene(p, this) - return true - } else { - logger.Logger.Warnf("(this *Scene:%v) PlayerEnter(%v, %v) Marshal player data error %v", this.sceneId, p.SnId, pos, err) - this.DelPlayer(p) + data, err := p.MarshalData() + if err != nil { + logger.Logger.Errorf("Scene PlayerEnter MarshalData failed, err:%v", err) return false } -} -func ExePMCmd(s *netlib.Session, cmd string) { - CSPMCmd := &playerproto.CSPMCmd{ - Cmd: proto.String(cmd), - } - proto.SetDefaults(CSPMCmd) - logger.Logger.Trace("CSPMCmd:", CSPMCmd) - s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PMCMD), CSPMCmd) -} - -func (this *Scene) GetPlayerGameCtx(snid int32) *PlayerGameCtx { - if ctx, exist := this.gameCtx[snid]; exist { - return ctx - } - return nil -} - -func (this *Scene) PlayerLeave(p *Player, reason int) { - logger.Logger.Infof("(this *Scene:%v) PlayerLeave(%v, %v) ", this.sceneId, p.SnId, reason) - //if !this.IsMatchScene() { - //pack := &hall_proto.SCLeaveRoom{ - // Reason: proto.Int(reason), - // OpRetCode: hall_proto.OpResultCode_Game_OPRC_Sucess_Game, - // Mode: proto.Int(0), - // RoomId: proto.Int(this.sceneId), - //} - //proto.SetDefaults(pack) - //p.SendToClient(int(hall_proto.GameHallPacketID_PACKET_SC_LEAVEROOM), pack) - pack := &hallproto.SCQuitGame{ - Id: int32(this.dbGameFree.Id), - Reason: proto.Int(reason), - } - pack.OpCode = hallproto.OpResultCode_Game_OPRC_Sucess_Game - proto.SetDefaults(pack) - p.SendToClient(int(hallproto.GameHallPacketID_PACKET_SC_QUITGAME), pack) - //} - - //其他人直接从房间退出来 - this.DelPlayer(p) - - // 玩家最后所在游戏 - p.LastGameId = int(this.dbGameFree.GetGameId()) - if !p.IsRob { - this.lastTime = time.Now() - } -} - -func (this *Scene) DelPlayer(p *Player) bool { - if p.scene != this { - inroomid := 0 - if p.scene != nil { - inroomid = p.scene.sceneId + var gateSid int64 + if p.gateSess != nil { + if srvInfo, ok := p.gateSess.GetAttribute(srvlib.SessionAttributeServerInfo).(*srvlibproto.SSSrvRegiste); ok && srvInfo != nil { + sessionId := srvlib.NewSessionIdEx(srvInfo.GetAreaId(), srvInfo.GetType(), srvInfo.GetId(), 0) + gateSid = sessionId.Get() } - logger.Logger.Warnf("(this *Scene) DelPlayer found player:%v in room:%v but room:%v", p.SnId, inroomid, this.sceneId) } - if this.gameSess != nil { - this.gameSess.DelPlayer(p) + msg := &serverproto.WGPlayerEnter{ + Sid: proto.Int64(p.sid), + GateSid: proto.Int64(gateSid), + SceneId: proto.Int(this.sceneId), + PlayerData: data, + TakeCoin: takeCoin, + IsLoaded: proto.Bool(ischangeroom), + IsQM: false, + ExpectLeaveCoin: leaveCoin, + ExpectGameTimes: gameTimes, + IParams: p.MarshalIParam(), + SParams: p.MarshalSParam(), + CParams: p.MarshalCParam(), + SnId: proto.Int32(p.SnId), + Pos: int32(p.pos), + MatchParams: matchParams, } - delete(this.players, p.SnId) - if !p.IsRob { - delete(this.gameCtx, p.SnId) + // 道具 + msg.Items = make(map[int32]int64) + dbItemArr := srvdata.GameItemMgr.GetArr(p.Platform) + for _, dbItem := range dbItemArr { + msg.Items[dbItem.Id] = 0 + itemInfo := BagMgrSingleton.GetItem(p.SnId, dbItem.Id) + if itemInfo != nil { + msg.Items[dbItem.Id] = itemInfo.ItemNum + } } - - p.scene = nil - SceneMgrSingleton.OnPlayerLeaveScene(this, p) - - switch { - case this.IsHundredScene(): - HundredSceneMgrSington.OnPlayerLeave(p) - //case this.IsHallScene(): - // PlatformMgrSingleton.OnPlayerLeaveScene(this, p) - // for i := 0; i < this.playerNum; i++ { - // if this.seats[i] == p { - // p.pos = -1 - // this.seats[i] = nil - // break - // } - // } - case this.IsCoinScene() || this.IsMatchScene(): - for i := 0; i < this.playerNum; i++ { - if this.seats[i] == p { - p.pos = -1 - this.seats[i] = nil - break + // 排位积分 + ret := RankMgrSingleton.GetPlayerSeason(p.SnId) + if ret != nil && ret.PlayerRankSeason != nil { + msg.RankScore = make(map[int32]int64) + for k, v := range ret.RankType { + if v != nil { + msg.RankScore[k] = v.Score } } } - - if p.IsRob { - this.robotNum-- - name := this.GetSceneName() - logger.Logger.Tracef("(this *Scene) PlayerLeave(%v) robot(%v) robotlimit(%v)", name, this.robotNum, this.robotLimit) + if p.IsRobot() { + msg.RankScore = make(map[int32]int64) + rankScore := this.dbGameFree.GetRankScoreParams() + if len(rankScore) == 2 { + switch { + case this.dbGameFree.GameDif == common.GameDifTienlen: + msg.RankScore[tienlen.RankType] = int64(common.RandInt(int(rankScore[0]), int(rankScore[1]))) + } + } } - //from gameserver, so don't need send msg + this.SendToGame(int(serverproto.SSPacketID_PACKET_WG_PLAYERENTER), msg) + logger.Logger.Tracef("SSPacketID_PACKET_WG_PLAYERENTER Scene:%v ;PlayerEnter(%v, %v)", this.sceneId, p.SnId, pos) + + p.scene = this + p.takeCoin = takeCoin + p.sceneCoin = takeCoin + p.enterts = time.Now() + this.players[p.SnId] = p + if !p.IsRob { //保存下进入时的环境 + this.gameCtx[p.SnId] = &PlayerGameCtx{ + takeCoin: p.takeCoin, + enterTs: p.enterts.Unix(), + } + this.lastTime = time.Now() + } + this.gameSess.AddPlayer(p) + FirePlayerEnterScene(p, this) + this.sp.OnPlayerEnter(this, p) return true } func (this *Scene) AudienceEnter(p *Player, ischangeroom bool) bool { logger.Logger.Infof("(this *Scene:%v) AudienceEnter(%v) ", this.sceneId, p.SnId) p.scene = this + takeCoin := p.Coin + p.takeCoin = takeCoin this.audiences[p.SnId] = p this.gameSess.AddPlayer(p) - if this.IsHundredScene() { - HundredSceneMgrSington.OnPlayerEnter(p, this.paramsEx[0]) + + data, err := p.MarshalData() + if err != nil { + return false } - //todo:send add msg to gamesrv - data, err := p.MarshalData(this.gameId) - if err == nil { - var gateSid int64 - if p.gateSess != nil { - if srvInfo, ok := p.gateSess.GetAttribute(srvlib.SessionAttributeServerInfo).(*srvlibproto.SSSrvRegiste); ok && srvInfo != nil { - sessionId := srvlib.NewSessionIdEx(srvInfo.GetAreaId(), srvInfo.GetType(), srvInfo.GetId(), 0) - gateSid = sessionId.Get() - } - } - isQuMin := false - //if !p.IsRob { - // pt := PlatformMgrSingleton.GetPackageTag(p.PackageID) - // if pt != nil && pt.SpreadTag == 1 { - // isQuMin = true - // } - //} - msg := &serverproto.WGPlayerEnter{ - Sid: proto.Int64(p.sid), - SnId: proto.Int32(p.SnId), - GateSid: proto.Int64(gateSid), - SceneId: proto.Int(this.sceneId), - PlayerData: data, - IsLoaded: proto.Bool(ischangeroom), - IsQM: proto.Bool(isQuMin), - IParams: p.MarshalIParam(), - SParams: p.MarshalSParam(), - CParams: p.MarshalCParam(), - } - if !p.IsRob { //保存下进入时的环境 - this.gameCtx[p.SnId] = &PlayerGameCtx{ - takeCoin: p.takeCoin, - enterTs: p.enterts.Unix(), - totalConvertibleFlow: p.TotalConvertibleFlow, - } - this.lastTime = time.Now() + var gateSid int64 + if p.gateSess != nil { + if srvInfo, ok := p.gateSess.GetAttribute(srvlib.SessionAttributeServerInfo).(*srvlibproto.SSSrvRegiste); ok && srvInfo != nil { + sessionId := srvlib.NewSessionIdEx(srvInfo.GetAreaId(), srvInfo.GetType(), srvInfo.GetId(), 0) + gateSid = sessionId.Get() } + } - takeCoin := p.Coin - p.takeCoin = takeCoin - msg.TakeCoin = proto.Int64(takeCoin) - proto.SetDefaults(msg) - this.SendToGame(int(serverproto.SSPacketID_PACKET_WG_AUDIENCEENTER), msg) + msg := &serverproto.WGPlayerEnter{ + Sid: proto.Int64(p.sid), + SnId: proto.Int32(p.SnId), + GateSid: proto.Int64(gateSid), + SceneId: proto.Int(this.sceneId), + PlayerData: data, + TakeCoin: takeCoin, + IsLoaded: proto.Bool(ischangeroom), + IParams: p.MarshalIParam(), + SParams: p.MarshalSParam(), + CParams: p.MarshalCParam(), + } + + if !p.IsRob { //保存下进入时的环境 p.enterts = time.Now() - return true + this.gameCtx[p.SnId] = &PlayerGameCtx{ + takeCoin: p.takeCoin, + enterTs: p.enterts.Unix(), + } + this.lastTime = time.Now() } - - return false + this.SendToGame(int(serverproto.SSPacketID_PACKET_WG_AUDIENCEENTER), msg) + return true } +func (this *Scene) lastScene(p *Player) { + // 记录玩家在每个游戏场次最后进入的房间号 + // 只记录金币场 + if this.IsCoinScene() { + const MINHOLD = 10 + const MAXHOLD = 20 + holdCnt := MINHOLD + if this.csp != nil { + holdCnt = this.csp.GetHasTruePlayerSceneCnt() + 2 + if holdCnt < MINHOLD { + holdCnt = MINHOLD + } + if holdCnt > MAXHOLD { + holdCnt = MAXHOLD + } + } + if p.lastSceneId == nil { + p.lastSceneId = make(map[int32][]int32) + } + id := this.dbGameFree.GetId() + if sceneIds, exist := p.lastSceneId[id]; exist { + if !common.InSliceInt32(sceneIds, int32(this.sceneId)) { + sceneIds = append(sceneIds, int32(this.sceneId)) + cnt := len(sceneIds) + if cnt > holdCnt { + sceneIds = sceneIds[cnt-holdCnt:] + } + p.lastSceneId[id] = sceneIds + } + } else { + p.lastSceneId[id] = []int32{int32(this.sceneId)} + } + } +} + +func (this *Scene) DelPlayer(p *Player) bool { + FirePlayerLeaveScene(p, this) + this.sp.OnPlayerLeave(this, p) + if p.scene != this { + roomId := 0 + if p.scene != nil { + roomId = p.scene.sceneId + } + logger.Logger.Errorf("DelPlayer found player:%v in room:%v but room:%v", p.SnId, roomId, this.sceneId) + } + + if this.gameSess != nil { + this.gameSess.DelPlayer(p) + } + // 玩家离开游戏 + if _, ok := this.players[p.SnId]; ok { + delete(this.players, p.SnId) + if p.IsRobot() { + this.robotNum-- + } + // 记录玩家最近玩游戏的房间 + this.lastScene(p) + // 玩家最后所在游戏 + p.LastGameId = int(this.dbGameFree.GetGameId()) + } + // 观众离开游戏 + if _, ok := this.audiences[p.SnId]; ok { + delete(this.audiences, p.SnId) + } + for k, v := range this.seats { + if v != nil && v.SnId == p.SnId { + p.pos = -1 + this.seats[k] = nil + break + } + } + if !p.IsRob { + delete(this.gameCtx, p.SnId) + } + p.scene = nil + if !p.IsRob { + this.lastTime = time.Now() + } + return true +} + +// PlayerLeave 玩家离开 +func (this *Scene) PlayerLeave(p *Player, reason int) { + logger.Logger.Infof("(this *Scene:%v) PlayerLeave(%v, %v) ", this.sceneId, p.SnId, reason) + pack := &hallproto.SCQuitGame{ + Id: this.dbGameFree.Id, + Reason: proto.Int(reason), + } + pack.OpCode = hallproto.OpResultCode_Game_OPRC_Sucess_Game + p.SendToClient(int(hallproto.GameHallPacketID_PACKET_SC_QUITGAME), pack) + logger.Logger.Tracef("SCQuitGame: %v, %v", p.SnId, pack) + this.DelPlayer(p) +} + +// AudienceLeave 观众离开 func (this *Scene) AudienceLeave(p *Player, reason int) { logger.Logger.Infof("(this *Scene:%v) AudienceLeave(%v, %v) ", this.sceneId, p.SnId, reason) pack := &hallproto.SCLeaveRoom{ @@ -726,100 +581,25 @@ func (this *Scene) AudienceLeave(p *Player, reason int) { Mode: proto.Int(0), RoomId: proto.Int(this.sceneId), } - proto.SetDefaults(pack) p.SendToClient(int(hallproto.GameHallPacketID_PACKET_SC_LEAVEROOM), pack) - //观众直接从房间退出来 - this.DelAudience(p) - if !p.IsRob { - this.lastTime = time.Now() - } + logger.Logger.Tracef("AudienceLeave SCLeaveRoom: %v, %v", p.SnId, pack) + this.DelPlayer(p) } -func (this *Scene) DelAudience(p *Player) bool { - logger.Logger.Infof("(this *Scene:%v) DelAudience(%v) ", this.sceneId, p.SnId) - if p.scene != this { - return false - } - if this.gameSess != nil { - this.gameSess.DelPlayer(p) - } - delete(this.audiences, p.SnId) - if !p.IsRob { - delete(this.gameCtx, p.SnId) - } - p.scene = nil - SceneMgrSingleton.OnPlayerLeaveScene(this, p) - if this.IsHundredScene() { - HundredSceneMgrSington.OnPlayerLeave(p) - } - //from gameserver, so don't need send msg - return true -} - -//观众坐下 -//func (this *Scene) AudienceSit(p *Player, pos int) bool { -// logger.Logger.Infof("(this *Scene:%v) AudienceSit(%v, %v, %v) ", this.sceneId, p.SnId, pos) -// if _, exist := this.audiences[p.SnId]; exist { -// if pos == -1 && !this.IsHundredScene() { //自动匹配;百人场没座位概念 -// for i := 0; i < this.playerNum; i++ { -// if this.seats[i] == nil { -// pos = i -// break -// } -// } -// } -// if pos != -1 || this.IsHundredScene() { -// if !this.IsHundredScene() { -// if this.seats[pos] != nil { -// return false -// } -// p.pos = pos -// p.applyPos = -1 -// this.seats[pos] = p -// } -// delete(this.audiences, p.SnId) -// } -// -// p.scene = this -// this.players[p.SnId] = p -// -// NpcServerAgentSington.OnPlayerEnterScene(this, p) -// if this.IsCoinScene() { -// CoinSceneMgrSingleton.OnPlayerEnter(p, int32(this.sceneId)) -// } else if this.IsHallScene() { -// PlatformMgrSingleton.OnPlayerEnterScene(this, p) -// } -// -// msg := &protocol.WGAudienceSit{ -// SnId: proto.Int32(p.SnId), -// SceneId: proto.Int(this.sceneId), -// Pos: proto.Int(pos), -// } -// p.takeCoin = p.Coin -// msg.TakeCoin = proto.Int64(p.Coin) -// proto.SetDefaults(msg) -// this.SendToGame(int(protocol.MmoPacketID_PACKET_WG_AUDIENCESIT), msg) -// this.lastTime = time.Now() -// return true -// } -// return false -//} - +// AudienceSit 观众坐下 func (this *Scene) AudienceSit(p *Player, pos int) bool { logger.Logger.Infof("(this *Scene:%v) AudienceSit(%v, %v, %v) ", this.sceneId, p.SnId, pos, this.dbGameFree.GetId()) if _, exist := this.audiences[p.SnId]; exist { delete(this.audiences, p.SnId) p.scene = this - this.players[p.SnId] = p - - msg := &serverproto.WGAudienceSit{ - SnId: proto.Int32(p.SnId), - SceneId: proto.Int(this.sceneId), - Pos: proto.Int(pos), - } p.takeCoin = p.Coin - msg.TakeCoin = proto.Int64(p.Coin) - proto.SetDefaults(msg) + this.players[p.SnId] = p + msg := &serverproto.WGAudienceSit{ + SnId: proto.Int32(p.SnId), + TakeCoin: p.Coin, + SceneId: proto.Int(this.sceneId), + Pos: proto.Int(pos), + } this.SendToGame(int(serverproto.SSPacketID_PACKET_WG_AUDIENCESIT), msg) if !p.IsRob { this.lastTime = time.Now() @@ -877,7 +657,12 @@ func (this *Scene) GetAudienceCnt() int { return len(this.audiences) } +// IsFull 是否满人 +// 不包含观众 func (this *Scene) IsFull() bool { + if this.playerNum == 0 { + return false + } return this.GetPlayerCnt() >= this.playerNum } @@ -889,23 +674,24 @@ func (this *Scene) AllIsRobot() bool { return len(this.players) == this.robotNum } +// OnClose 房间销毁 func (this *Scene) OnClose() { scDestroyRoom := &hallproto.SCDestroyRoom{ RoomId: proto.Int(this.sceneId), OpRetCode: hallproto.OpResultCode_Game_OPRC_Sucess_Game, IsForce: proto.Int(1), } - proto.SetDefaults(scDestroyRoom) this.Broadcast(int(hallproto.GameHallPacketID_PACKET_SC_DESTROYROOM), scDestroyRoom, 0) + this.deleting = true this.closed = true this.sp.OnStop(this) - //NpcServerAgentSington.OnSceneClose(this) + for _, p := range this.players { this.DelPlayer(p) } for _, p := range this.audiences { - this.DelAudience(p) + this.DelPlayer(p) } this.players = nil this.audiences = nil @@ -919,20 +705,8 @@ func (this *Scene) SendToGame(packetId int, pack interface{}) bool { } return false } -func (this *Scene) SendToClient(packetid int, rawpack interface{}, excludeId int32) { - for snid, value := range this.players { - if snid == excludeId { - continue - } - value.SendToClient(packetid, rawpack) - } -} -func (this *Scene) BilledRoomCard(snid []int32) { - if this.sp != nil { - this.sp.BilledRoomCard(this, snid) - } -} +// IsLongTimeInactive 房间是否长时间没有活动 func (this *Scene) IsLongTimeInactive() bool { tNow := time.Now() // 房间没有真人,没有观众,长时间没有真人进出房间 @@ -942,7 +716,7 @@ func (this *Scene) IsLongTimeInactive() bool { return false } -func (this *Scene) DoDelete(isGrace bool) { +func (this *Scene) SendGameDestroy(isGrace bool) { if !isGrace { this.deleting = true this.force = true @@ -955,46 +729,40 @@ func (this *Scene) DoDelete(isGrace bool) { logger.Logger.Tracef("WG_DESTROYSCENE: %v", pack) } -func (this *Scene) Shutdown() { - if this.hadCost && this.sp != nil { - this.sp.OnShutdown(this) - } -} - -// 小游戏场 -func (this *Scene) IsMiniGameScene() bool { - return this.sceneId >= common.MiniGameSceneStartId && this.sceneId < common.MiniGameSceneMaxId -} - -// 比赛场 +// IsMatchScene 比赛场 func (this *Scene) IsMatchScene() bool { return this.sceneId >= common.MatchSceneStartId && this.sceneId < common.MatchSceneMaxId } -// 大厅场 -func (this *Scene) IsHallScene() bool { - return this.sceneId >= common.HallSceneStartId && this.sceneId < common.HallSceneMaxId -} - -// 金币场 +// IsCoinScene 金币场 func (this *Scene) IsCoinScene() bool { return this.sceneId >= common.CoinSceneStartId && this.sceneId < common.CoinSceneMaxId } -// 百人场 +// IsHundredScene 百人场 func (this *Scene) IsHundredScene() bool { return this.sceneId >= common.HundredSceneStartId && this.sceneId < common.HundredSceneMaxId } -// 私人房间 +// IsPrivateScene 私人房间 func (this *Scene) IsPrivateScene() bool { - return this.sceneId >= common.PrivateSceneStartId && this.sceneId < common.PrivateSceneMaxId || this.sceneMode == common.SceneMode_Private + return this.sceneId >= common.PrivateSceneStartId && this.sceneId < common.PrivateSceneMaxId } +// IsCustom 房卡场房间 +func (this *Scene) IsCustom() bool { + if this.dbGameFree == nil { + return false + } + return this.dbGameFree.IsCustom > 0 +} + +// IsSceneMode 房间模式 func (this *Scene) IsSceneMode(mode int) bool { return this.sceneMode == mode } +// IsRankMatch 排位赛 func (this *Scene) IsRankMatch() bool { if this.dbGameFree == nil { return false @@ -1002,55 +770,22 @@ func (this *Scene) IsRankMatch() bool { return this.dbGameFree.RankType > 0 } +// IsTestScene 试玩场 func (this *Scene) IsTestScene() bool { if this.dbGameFree != nil { return this.dbGameFree.GetSceneType() == -1 } - if len(this.paramsEx) > 0 { - dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(this.paramsEx[0]) - if dbGameFree != nil { - return dbGameFree.GetSceneType() == -1 - } - } return false } func (this *Scene) GetSceneName() string { - if len(this.paramsEx) > 0 { - dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(this.paramsEx[0]) - if dbGameFree != nil { - return dbGameFree.GetName() + dbGameFree.GetTitle() - } + if this.dbGameFree != nil { + return this.dbGameFree.GetName() + this.dbGameFree.GetTitle() } return "[unknow scene name]" } -func (this *Scene) RandRobotCnt() { - if len(this.paramsEx) > 0 { - gps := PlatformMgrSingleton.GetGameFree(this.limitPlatform.IdStr, this.paramsEx[0]) - if gps != nil { - dbGameFree := gps.DbGameFree - if gps.GroupId != 0 { - pgg := PlatformGameGroupMgrSington.GetGameGroup(gps.GroupId) - if pgg != nil { - dbGameFree = pgg.DbGameFree - } - } - numrng := dbGameFree.GetRobotNumRng() - if len(numrng) >= 2 { - if numrng[1] == numrng[0] { - this.robotLimit = int(numrng[0]) - } else { - if numrng[1] < numrng[0] { - numrng[1], numrng[0] = numrng[0], numrng[1] - } - this.robotLimit = int(numrng[1]) //int(numrng[0] + rand.Int31n(numrng[1]-numrng[0]) + 1) - } - } - } - } -} -func (this *Scene) isPlatform(platform string) bool { +func (this *Scene) IsPlatform(platform string) bool { if platform == "0" || platform == this.limitPlatform.IdStr { return true } @@ -1111,31 +846,7 @@ func (this *Scene) GetTruePlayerCnt() int { return len(this.players) - this.robotNum } -func (this *Scene) GetPlayerType(gameid, gamefreeid int32) (types []int32) { - for _, p := range this.players { - t := int32(0) - if p.IsRob { - t = common.PlayerType_Rob - } else if p.WBLevel < 0 { - t = common.PlayerType_Black - } else if p.WBLevel > 0 { - t = common.PlayerType_White - } else { - pt := p.CheckType(gameid, gamefreeid) - if pt != nil { - t = pt.GetId() - } else { - t = common.PlayerType_Undefine - } - } - if !common.InSliceInt32(types, t) { - types = append(types, t) - } - } - return -} - -func (this *Scene) Broadcast(packetid int, msg rawproto.Message, excludeSid int64) { +func (this *Scene) Broadcast(packetId int, msg rawproto.Message, excludeSid int64) { mgs := make(map[*netlib.Session][]*srvlibproto.MCSessionUnion) for _, p := range this.players { if p != nil { @@ -1164,7 +875,7 @@ func (this *Scene) Broadcast(packetid int, msg rawproto.Message, excludeSid int6 for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetid, msg, v...) + pack, err := common.CreateMulticastPacket(packetId, msg, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvlibproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -1176,12 +887,11 @@ func (this *Scene) Broadcast(packetid int, msg rawproto.Message, excludeSid int6 func (this *Scene) HasSameIp(ip string) bool { for _, p := range this.players { if !p.IsRob { - if p.GMLevel == 0 && p.Ip == ip { + if p.Ip == ip { return true } } } - return false } @@ -1189,71 +899,17 @@ func (this *Scene) IsPreCreateScene() bool { return this.dbGameFree.GetCreateRoomNum() > 0 } -func (this *Scene) PlayerTryChange() { - var member []*Player - var player *Player - for _, value := range this.players { - if !value.IsRob { - member = append(member, value) - player = value - } - } - if len(member) <= 1 { - return - } - gameFreeId := this.dbGameFree.GetId() - gameConfig := PlatformMgrSingleton.GetGameFree(player.Platform, gameFreeId) - if gameConfig != nil && gameConfig.DbGameFree.GetMatchMode() == 1 { - return - } - for i := 0; i < len(member)-1; i++ { - p := member[i] - other := member[i+1:] - if this.dbGameFree.GetSamePlaceLimit() > 0 && sceneLimitMgr.LimitSamePlaceBySnid(other, p, - this.dbGameFree.GetGameId(), this.dbGameFree.GetSamePlaceLimit()) { - if p.scene.IsPrivateScene() { - //if ClubSceneMgrSington.PlayerInChanging(p) { - // continue - //} - //ClubSceneMgrSington.PlayerTryChange(p, gameFreeId, []int32{int32(this.sceneId)}, false) - } else { - if CoinSceneMgrSingleton.PlayerInChanging(p) { - continue - } - excludeSceneIds := p.lastSceneId[gameFreeId] - CoinSceneMgrSingleton.PlayerTryChange(p, gameFreeId, excludeSceneIds, false) - } - } - - } -} - -func (this *Scene) GetParamEx(idx int) int32 { - if idx < 0 || idx > len(this.paramsEx) { - return -1 - } - - return this.paramsEx[idx] -} - -func (this *Scene) SetParamEx(idx int, val int32) { - cnt := len(this.paramsEx) - if idx >= 0 && idx < cnt { - this.paramsEx[idx] = val - } -} - -func (this *Scene) TryForceDelectMatchInfo() { +func (this *Scene) TryForceDeleteMatchInfo() { if !this.IsMatchScene() { return } if len(this.players) == 0 { return } - if this.matchId == 0 { + if this.MatchSortId == 0 { return } - if players, exist := TournamentMgr.players[this.matchId]; exist { + if players, exist := TournamentMgr.players[this.MatchSortId]; exist { for _, player := range this.players { if player != nil && !player.IsRob { if TournamentMgr.IsMatching(player.SnId) { @@ -1263,3 +919,61 @@ func (this *Scene) TryForceDelectMatchInfo() { } } } + +// CanAudience 是否允许观战 +func (this *Scene) CanAudience() bool { + switch { + case this.GetMatchSortId() > 0: // 比赛场 + tm := TournamentMgr.GetTm(this.GetMatchSortId()) + if tm != nil { + return tm.gmd.GetAudienceSwitch() == 1 + } + return false + default: + return true + } +} + +func (this *Scene) ProtoPrivateRoom() *gamehall.PrivateRoomInfo { + if !this.IsCustom() { + return nil + } + needPassword := int32(0) + if this.GetPassword() != "" { + needPassword = int32(1) + } + ret := &gamehall.PrivateRoomInfo{ + GameFreeId: this.dbGameFree.GetId(), + GameId: int32(this.gameId), + RoomTypeId: this.RoomTypeId, + RoomConfigId: this.RoomConfigId, + RoomId: int32(this.sceneId), + NeedPassword: needPassword, + CurrRound: this.currRound, + MaxRound: this.totalRound, + CurrNum: int32(this.GetPlayerCnt()), + MaxPlayer: int32(this.playerNum), + CreateTs: this.createTime.Unix(), + State: this.SceneState, + } + for _, v := range this.players { + ret.Players = append(ret.Players, &gamehall.PrivatePlayerInfo{ + SnId: v.SnId, + Name: v.Name, + UseRoleId: v.GetRoleId(), + }) + } + return ret +} + +// NotifyPrivateRoom 通知私人房列表变更 +func (this *Scene) NotifyPrivateRoom(tp common.ListOpType) { + if this.IsCustom() { + pack := &gamehall.SCGetPrivateRoomList{ + Tp: int32(tp), + Datas: []*gamehall.PrivateRoomInfo{this.ProtoPrivateRoom()}, + } + PlayerNotifySingle.SendToClient(common.NotifyPrivateRoomList, int(gamehall.GameHallPacketID_PACKET_SC_GETPRIVATEROOMLIST), pack) + logger.Logger.Tracef("NotifyPrivateRoom: %v", pack) + } +} diff --git a/worldsrv/scenemgr.go b/worldsrv/scenemgr.go index bed66fe..42c33e6 100644 --- a/worldsrv/scenemgr.go +++ b/worldsrv/scenemgr.go @@ -2,7 +2,9 @@ package main import ( "math" + "slices" "sort" + "strconv" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/srvlib" @@ -10,12 +12,12 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" serverproto "mongo.games.com/game/protocol/server" - webapi2 "mongo.games.com/game/protocol/webapi" + webapiproto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/webapi" ) func init() { - ClockMgrSington.RegisteSinker(SceneMgrSingleton) + common.ClockMgrSingleton.RegisterSinker(SceneMgrSingleton) } var SceneMgrSingleton = &SceneMgr{ @@ -24,17 +26,19 @@ var SceneMgrSingleton = &SceneMgr{ matchAutoId: common.MatchSceneStartId, coinSceneAutoId: common.CoinSceneStartId, hundredSceneAutoId: common.HundredSceneStartId, + password: make(map[string]struct{}), } // SceneMgr 房间管理器 type SceneMgr struct { - BaseClockSinker // 驱动时间事件 + common.BaseClockSinker // 驱动时间事件 + scenes map[int]*Scene // 房间id: Scene - scenes map[int]*Scene // 房间id: Scene - privateAutoId int // 私人房房间号 - matchAutoId int // 比赛场房间号 - coinSceneAutoId int // 金币场房间号 - hundredSceneAutoId int // 百人场房间号 + privateAutoId int // 私人房房间号 + matchAutoId int // 比赛场房间号 + coinSceneAutoId int // 金币场房间号 + hundredSceneAutoId int // 百人场房间号 + password map[string]struct{} // 密码 } // AllocReplayCode 获取回访码 @@ -79,6 +83,37 @@ func (m *SceneMgr) GenOneMatchSceneId() int { return m.matchAutoId } +func (m *SceneMgr) GenPassword() string { + for i := 0; i < 100; i++ { + s := strconv.Itoa(common.RandInt(100000, 1000000)) + if _, ok := m.password[s]; !ok { + m.password[s] = struct{}{} + return s + } + } + return "" +} + +func (m *SceneMgr) GenPasswordInt32() int32 { + for i := 0; i < 100; i++ { + s := strconv.Itoa(common.RandInt(10000, 100000)) + if _, ok := m.password[s]; !ok { + m.password[s] = struct{}{} + n, _ := strconv.Atoi(s) + return int32(n) + } + } + return 0 +} + +func (m *SceneMgr) GetPlatformBySceneId(sceneId int) string { + s := m.GetScene(sceneId) + if s != nil && s.limitPlatform != nil { + return s.limitPlatform.IdStr + } + return "" +} + // GetScene 获取房间对象 func (m *SceneMgr) GetScene(sceneId int) *Scene { if s, exist := m.scenes[sceneId]; exist && !s.deleting { @@ -115,13 +150,29 @@ func (m *SceneMgr) GetScenesByGameFreeId(gameFreeId int32) []*Scene { return scenes } +// GetMatchRoom 获取比赛房间 +// sortId 比赛id +func (m *SceneMgr) GetMatchRoom(sortId int64) []*Scene { + var scenes []*Scene + for _, value := range m.scenes { + if value.GetMatchSortId() == sortId { + s := m.GetScene(value.sceneId) + if s != nil { + scenes = append(scenes, value) + } + } + } + return scenes +} + // MarshalAllRoom 获取房间列表 +// 返回 房间列表,总页数,总条数 func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode, clubId, sceneMode, sceneId int, - gameFreeId, snId int32, start, end, pageSize int32) ([]*webapi2.RoomInfo, int32, int32) { - roomInfo := make([]*webapi2.RoomInfo, 0, len(m.scenes)) + gameFreeId, snId int32, isCustom bool, roomConfigId int32, start, end, pageSize int32) ([]*webapiproto.RoomInfo, int32, int32) { + roomInfo := make([]*webapiproto.RoomInfo, 0, len(m.scenes)) var isNeedFindAll = false if model.GameParamData.IsFindRoomByGroup && platform != "" && snId != 0 && gameId == 0 && - gameMode == 0 && sceneId == -1 && groupId == 0 && clubId == 0 && sceneMode == 0 { + gameMode == 0 && sceneId == -1 && groupId == 0 && sceneMode == 0 { p := PlayerMgrSington.GetPlayerBySnId(snId) if p != nil && p.Platform == platform { isNeedFindAll = true @@ -131,14 +182,16 @@ func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode if (((s.limitPlatform != nil && s.limitPlatform.IdStr == platform) || platform == "") && ((s.gameId == gameId && s.gameMode == gameMode) || gameId == 0) && (s.sceneId == sceneId || sceneId == 0) && (s.groupId == int32(groupId) || groupId == 0) && - (s.ClubId == int32(clubId) || clubId == 0) && (s.dbGameFree.GetId() == gameFreeId || gameFreeId == 0) && - (s.sceneMode == sceneMode || sceneMode == -1)) || isNeedFindAll { + (s.dbGameFree.GetId() == gameFreeId || gameFreeId == 0) && + (s.sceneMode == sceneMode || sceneMode == -1)) || isNeedFindAll && + ((s.IsCustom() && isCustom) || !isCustom) && + (s.GetRoomConfigId() == roomConfigId || roomConfigId == 0) { var platformName string if s.limitPlatform != nil { platformName = s.limitPlatform.IdStr } - si := &webapi2.RoomInfo{ + si := &webapiproto.RoomInfo{ Platform: platformName, SceneId: int32(s.sceneId), GameId: int32(s.gameId), @@ -146,19 +199,18 @@ func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode SceneMode: int32(s.sceneMode), GroupId: s.groupId, Creator: s.creator, - Agentor: s.agentor, ReplayCode: s.replayCode, Params: common.CopySliceInt64ToInt32(s.params), PlayerCnt: int32(len(s.players) - s.robotNum), RobotCnt: int32(s.robotNum), CreateTime: s.createTime.Unix(), BaseScore: s.dbGameFree.BaseScore, - } - if common.IsLocalGame(s.gameId) { - si.BaseScore = s.BaseScore - } - if s.paramsEx != nil && len(s.paramsEx) > 0 { - si.GameFreeId = s.paramsEx[0] + GameFreeId: s.dbGameFree.GetId(), + MaxRound: s.totalRound, + Password: s.GetPassword(), + CostType: s.GetCostType(), + Voice: s.GetVoice(), + CurrRound: s.currRound, } if s.starting { si.Start = 1 @@ -178,7 +230,7 @@ func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode isContinue := false if snId != 0 { for _, p := range s.players { - if p.SnId == int32(snId) { + if p.SnId == snId { isContinue = true break } @@ -240,52 +292,137 @@ func (m *SceneMgr) MarshalAllRoom(platform string, groupId, gameId int, gameMode return nil, 0, int32(roomSum) } -// CreateScene 创建房间 -func (m *SceneMgr) CreateScene(agentor, creator int32, sceneId, gameId, gameMode, sceneMode int, clycleTimes int32, - numOfGames int32, params []int64, gs *GameSession, limitPlatform *Platform, groupId int32, dbGameFree *serverproto.DB_GameFree, - paramsEx ...int32) *Scene { - logger.Logger.Trace("(this *SceneMgr) CreateScene ") - s := NewScene(agentor, creator, sceneId, gameId, gameMode, sceneMode, clycleTimes, numOfGames, params, gs, limitPlatform, groupId, - dbGameFree, paramsEx...) - if s == nil { - return nil - } - - m.scenes[sceneId] = s - if !s.IsMatchScene() && dbGameFree != nil && limitPlatform != nil { - //平台水池设置 - gs.DetectCoinPoolSetting(limitPlatform.IdStr, dbGameFree.GetId(), s.groupId) - } - - gs.AddScene(s) - var platformName string - if limitPlatform != nil { - platformName = limitPlatform.IdStr - } - logger.Logger.Infof("(this *SceneMgr) CreateScene (gameId=%v, mode=%v), SceneId=%v groupid=%v platform=%v", - gameId, gameMode, sceneId, groupId, platformName) - return s +type FindRoomParam struct { + Platform string + GameId []int + GameMode []int + SceneMode []int + RoomId int32 + IsCustom int32 // 房卡场 + IsFree int32 // 自由桌 + GameFreeId []int32 // 场次id + SnId int32 // 玩家id + IsMatch bool // 比赛场 + IsRankMatch bool // 排位赛 + Channel []string // 渠道 } -// CreateLocalGameScene 创建本地游戏房间 -func (m *SceneMgr) CreateLocalGameScene(creator int32, sceneId, gameId, gameSite, sceneMode int, clycleTimes int32, params []int64, - gs *GameSession, limitPlatform *Platform, playerNum int, dbGameFree *serverproto.DB_GameFree, baseScore, groupId int32, - paramsEx ...int32) *Scene { - logger.Logger.Trace("(this *SceneMgr) CreateLocalGameScene gameSite: ", gameSite, " sceneMode: ", sceneMode) - s := NewLocalGameScene(creator, sceneId, gameId, gameSite, sceneMode, clycleTimes, params, gs, limitPlatform, playerNum, dbGameFree, - baseScore, groupId, paramsEx...) - if s == nil { +func (m *SceneMgr) FindRoomList(args *FindRoomParam) []*Scene { + ret := make([]*Scene, 0) + for _, v := range m.scenes { + if args.Platform != "" && v.limitPlatform.IdStr != args.Platform { + continue + } + if len(args.GameId) > 0 { + if !slices.Contains(args.GameId, int(v.dbGameFree.GetGameId())) { + continue + } + } + if len(args.GameMode) > 0 { + if !slices.Contains(args.GameMode, int(v.dbGameFree.GetGameMode())) { + continue + } + } + if len(args.SceneMode) > 0 { + if !slices.Contains(args.SceneMode, v.sceneMode) { + continue + } + } + if args.RoomId > 0 && v.sceneId != int(args.RoomId) { + continue + } + if args.IsCustom == 1 && v.dbGameFree.GetIsCustom() != args.IsCustom { + continue + } + if args.IsFree == 1 && v.dbGameFree.GetFreeMode() != args.IsFree { + continue + } + if len(args.GameFreeId) > 0 { + if !slices.Contains(args.GameFreeId, v.dbGameFree.GetId()) { + continue + } + } + if args.SnId > 0 && v.GetPlayer(args.SnId) == nil { + continue + } + if args.IsMatch && !v.IsMatchScene() { + continue + } + if args.IsRankMatch && !v.IsRankMatch() { + continue + } + if len(args.Channel) > 0 { + has := false + for _, vv := range args.Channel { + if slices.Contains(v.Channel, vv) { + has = true + break + } + } + if !has { + continue + } + } + + if v.deleting || v.closed || v.force { + continue + } + + ret = append(ret, v) + } + return ret +} + +type CreateSceneParam struct { + CreateId int32 // 创建者id + RoomId int // 房间id + SceneMode int // 公共,私人,赛事 + CycleTimes int // 循环次数 + TotalRound int // 总轮数 + Params []int64 // 房间参数 + GS *GameSession // 游戏服务 + Platform *Platform // 所在平台 + GF *serverproto.DB_GameFree // 场次配置 + PlayerNum int32 // 玩家最大数量 + BaseScore int32 // 底分 + Channel []string // 客户端类型,允许查看的客户端类型 + *serverproto.CustomParam // 房卡场参数 + *serverproto.MatchParam // 比赛场参数 +} + +// CreateScene 创建房间 +func (m *SceneMgr) CreateScene(args *CreateSceneParam) *Scene { + logger.Logger.Tracef("SceneMgr NewScene %v", args) + if args.GF == nil { + return nil + } + if args.Platform == nil { + return nil + } + if args.GS == nil { + args.GS = GameSessMgrSington.GetMinLoadSess(int(args.GF.GetGameId())) + } + if args.GS == nil { return nil } - m.scenes[sceneId] = s - gs.AddScene(s) - - var platformName string - if limitPlatform != nil { - platformName = limitPlatform.IdStr + // 创建房间 + s := NewScene(args) + if s == nil { + return nil + } + m.scenes[args.RoomId] = s + // 添加到游戏服记录中 + args.GS.AddScene(&AddSceneParam{ + S: s, + }) + logger.Logger.Infof("SceneMgr NewScene Platform:%v %+v", args.Platform.IdStr, args) + + // 创建水池 + if !s.IsMatchScene() && s.dbGameFree != nil && s.limitPlatform != nil { + //平台水池设置 + args.GS.DetectCoinPoolSetting(s.limitPlatform.IdStr, s.dbGameFree.GetId(), s.groupId) } - logger.Logger.Infof("(this *SceneMgr) CreateScene (gameId=%v), SceneId=%v platform=%v", gameId, sceneId, platformName) return s } @@ -303,7 +440,7 @@ func (m *SceneMgr) DestroyScene(sceneId int, isCompleted bool) { CoinSceneMgrSingleton.OnDestroyScene(s.sceneId) case s.IsHundredScene(): - HundredSceneMgrSington.OnDestroyScene(s.sceneId) + HundredSceneMgrSingleton.OnDestroyScene(s.sceneId) case s.IsMatchScene(): MatchSceneMgrSingleton.OnDestroyScene(s.sceneId) @@ -312,47 +449,11 @@ func (m *SceneMgr) DestroyScene(sceneId int, isCompleted bool) { s.gameSess.DelScene(s) s.OnClose() delete(m.scenes, s.sceneId) + delete(m.password, s.GetPassword()) logger.Logger.Infof("(this *SceneMgr) DestroyScene, SceneId=%v", sceneId) } -func (m *SceneMgr) OnPlayerLeaveScene(s *Scene, p *Player) { - logger.Logger.Trace("(this *SceneMgr) OnPlayerLeaveScene", p.SnId) - - // 记录玩家在每个游戏场次最后进入的房间号 - // 只记录金币场 - if s.IsCoinScene() { - const MINHOLD = 10 - const MAXHOLD = 20 - holdCnt := MINHOLD - if s.csp != nil { - holdCnt = s.csp.GetHasTruePlayerSceneCnt() + 2 - if holdCnt < MINHOLD { - holdCnt = MINHOLD - } - if holdCnt > MAXHOLD { - holdCnt = MAXHOLD - } - } - if p.lastSceneId == nil { - p.lastSceneId = make(map[int32][]int32) - } - id := s.dbGameFree.GetId() - if sceneIds, exist := p.lastSceneId[id]; exist { - if !common.InSliceInt32(sceneIds, int32(s.sceneId)) { - sceneIds = append(sceneIds, int32(s.sceneId)) - cnt := len(sceneIds) - if cnt > holdCnt { - sceneIds = sceneIds[cnt-holdCnt:] - } - p.lastSceneId[id] = sceneIds - } - } else { - p.lastSceneId[id] = []int32{int32(s.sceneId)} - } - } -} - -func (m *SceneMgr) DoDelete(sceneId []int, isGrace bool) { +func (m *SceneMgr) SendGameDestroy(sceneId []int, isGrace bool) { if len(sceneId) == 0 { return } @@ -372,36 +473,11 @@ func (m *SceneMgr) DoDelete(sceneId []int, isGrace bool) { srvlib.ServerSessionMgrSington.Broadcast(int(serverproto.SSPacketID_PACKET_WG_DESTROYSCENE), pack, common.GetSelfAreaId(), srvlib.GameServerType) } -// GetThirdScene 获取三方游戏房间 -//func (m *SceneMgr) GetThirdScene(i webapi.IThirdPlatform) *Scene { -// if i == nil { -// return nil -// } -// sceneId := i.GetPlatformBase().SceneId -// scene := m.scenes[sceneId] -// if scene != nil { -// return scene -// } -// -// gs := GameSessMgrSington.GetMinLoadSess(i.GetPlatformBase().BaseGameID) -// if gs != nil { -// limitPlatform := PlatformMgrSingleton.GetPlatform(DefaultPlatform) -// var gameMode = common.SceneMode_Thr -// dbGameFree := srvdata.PBDB_GameFreeMgr.GetData(i.GetPlatformBase().VultGameID) -// scene := SceneMgrSingleton.CreateScene(0, 0, sceneId, i.GetPlatformBase().BaseGameID, gameMode, int(common.SceneMode_Thr), 1, -1, -// []int64{}, gs, limitPlatform, 0, dbGameFree, i.GetPlatformBase().VultGameID) -// return scene -// } else { -// logger.Logger.Errorf("Get %v game min session failed.", i.GetPlatformBase().BaseGameID) -// return nil -// } -//} - //=========================ClockSinker=============================== // InterestClockEvent 接收所有时间事件 func (m *SceneMgr) InterestClockEvent() int { - return 1 << CLOCK_EVENT_MINUTE + return 1 << common.ClockEventMinute } func (m *SceneMgr) OnMiniTimer() { @@ -414,18 +490,18 @@ func (m *SceneMgr) OnMiniTimer() { case s.IsCoinScene(): if s.IsLongTimeInactive() { if s.dbGameFree.GetCreateRoomNum() == 0 { - logger.Logger.Warnf("SceneMgr.DeleteLongTimeInactive CoinScene DoDelete scene:%v IsLongTimeInactive", s.sceneId) - s.DoDelete(false) + logger.Logger.Warnf("SceneMgr.DeleteLongTimeInactive CoinScene SendGameDestroy scene:%v IsLongTimeInactive", s.sceneId) + s.SendGameDestroy(false) } - if s.dbGameFree.GetCreateRoomNum() > 0 && s.csp != nil && s.csp.GetRoomNum() > int(s.dbGameFree.GetCreateRoomNum()) { - logger.Logger.Warnf("SceneMgr.DeleteLongTimeInactive CoinScene DoDelete scene:%v IsLongTimeInactive", s.sceneId) - s.DoDelete(false) + if s.dbGameFree.GetCreateRoomNum() > 0 && s.csp != nil && s.csp.GetRoomNum(common.SceneMode_Public) > int(s.dbGameFree.GetCreateRoomNum()) { + logger.Logger.Warnf("SceneMgr.DeleteLongTimeInactive CoinScene SendGameDestroy scene:%v IsLongTimeInactive", s.sceneId) + s.SendGameDestroy(false) } } case s.IsPrivateScene(): if s.IsLongTimeInactive() { - logger.Logger.Warnf("SceneMgr.DeleteLongTimeInactive PrivateScene DoDelete scene:%v IsLongTimeInactive", s.sceneId) - s.DoDelete(false) + logger.Logger.Warnf("SceneMgr.DeleteLongTimeInactive PrivateScene SendGameDestroy scene:%v IsLongTimeInactive", s.sceneId) + s.SendGameDestroy(false) } } } diff --git a/worldsrv/scenepolicy.go b/worldsrv/scenepolicy.go index b475651..38d7630 100644 --- a/worldsrv/scenepolicy.go +++ b/worldsrv/scenepolicy.go @@ -1,50 +1,45 @@ package main -import "mongo.games.com/goserver/core/logger" +import "mongo.games.com/game/protocol/webapi" -// 根据不同的房间模式,选择不同的房间业务策略 -var ScenePolicyPool map[int]map[int]ScenePolicy = make(map[int]map[int]ScenePolicy) +// ScenePolicyPool 根据不同的房间模式,选择不同的房间业务策略 +var ScenePolicyPool = make(map[int]map[int]ScenePolicy) type ScenePolicy interface { - //场景开启事件 + // OnStart 场景开启事件 OnStart(s *Scene) - //场景关闭事件 + // OnStop 场景关闭事件 OnStop(s *Scene) - //场景心跳事件 + // OnTick 场景心跳事件 OnTick(s *Scene) - //玩家进入事件 + // OnPlayerEnter 玩家进入事件 OnPlayerEnter(s *Scene, p *Player) - //玩家离开事件 + // OnPlayerLeave 玩家离开事件 OnPlayerLeave(s *Scene, p *Player) - //系统维护关闭事件 + // OnShutdown 系统维护关闭事件 OnShutdown(s *Scene) - //获得场景的匹配因子(值越大越优先选择) - GetFitFactor(s *Scene, p *Player) int - //能否创建 - CanCreate(s *Scene, p *Player, mode, sceneType int, params []int32, isAgent bool) (bool, []int32) - //能否进入 + // OnSceneState 房间状态变更 + OnSceneState(s *Scene, state int) + // OnGameState 游戏状态变更 + OnGameState(s *Scene, state int) + + // CanEnter 能否进入 CanEnter(s *Scene, p *Player) int - //房间座位是否已满 - IsFull(s *Scene, p *Player, num int32) bool - //是否可以强制开始 - IsCanForceStart(s *Scene) bool - //结算房卡 - BilledRoomCard(s *Scene, snid []int32) - //需要几张房卡 - GetNeedRoomCardCnt(s *Scene) int32 - //房费模式 - GetRoomFeeMode(s *Scene) int32 - //游戏人数 - GetPlayerNum(s *Scene) int32 - //游戏底分 - GetBaseCoin(s *Scene) int - //游戏总局数 - GetTotalOfGames(s *Scene) int32 - // - GetNeedRoomCardCntDependentPlayerCnt(s *Scene) int32 - // + // GetBetState 获取下注状态 GetBetState() int32 - GetViewLogLen() int32 + // GetPlayerNum 获取玩家数量 + GetPlayerNum() int + // GetBaseScore 获取底分 + GetBaseScore() int + + // CostEnough 房费是否足够 + // costType 付费方式 + // playerNum 玩家数量 + // roomConfig 房间配置 + CostEnough(costType, playerNum int, roomConfig *webapi.RoomConfig, p *Player) bool + + // CostPayment 房费支付 + CostPayment(s *Scene, p *Player) bool } func GetScenePolicy(gameId, mode int) ScenePolicy { @@ -56,7 +51,7 @@ func GetScenePolicy(gameId, mode int) ScenePolicy { return nil } -func RegisteScenePolicy(gameId, mode int, sp ScenePolicy) { +func RegisterScenePolicy(gameId, mode int, sp ScenePolicy) { pool := ScenePolicyPool[gameId] if pool == nil { pool = make(map[int]ScenePolicy) @@ -66,21 +61,3 @@ func RegisteScenePolicy(gameId, mode int, sp ScenePolicy) { pool[mode] = sp } } - -func CheckGameConfigVer(ver int32, gameid int32, modeid int32) bool { - v := GetGameConfigVer(gameid, modeid) - logger.Logger.Info("Old game config ver:", v) - return ver == v -} - -func GetGameConfigVer(gameid int32, modeid int32) int32 { - sp := GetScenePolicy(int(gameid), int(modeid)) - if sp == nil { - return 0 - } - spd, ok := sp.(*ScenePolicyData) - if !ok { - return 0 - } - return spd.ConfigVer -} diff --git a/worldsrv/scenepolicydata.go b/worldsrv/scenepolicydata.go index 4fd458b..2aa2754 100644 --- a/worldsrv/scenepolicydata.go +++ b/worldsrv/scenepolicydata.go @@ -1,165 +1,40 @@ package main import ( - "time" + "math" + "mongo.games.com/goserver/core/logger" "mongo.games.com/game/common" - hall_proto "mongo.games.com/game/protocol/gamehall" - "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/model" + hallproto "mongo.games.com/game/protocol/gamehall" + "mongo.games.com/game/protocol/webapi" ) -const ( - SPDPCustomIndex_GamesOfCard int = iota //局数选项 - SPDPCustomIndex_PlayerNum //人数选项 - SPDPCustomIndex_RoomFeeMode //房费模式选项 - SPDPCustomIndex_LimitOption //新手限制选项 - SPDPCustomIndex_DoorOption //中途不可进选项 - SPDPCustomIndex_SameIPForbid //同IP不可进 - SPDPCustomIndex_BaseCoin //房间底分 -) - -// 创建房间选项 -const ( - CreateRoomParam_NumOfGames int = iota //局数选项 - CreateRoomParam_DoorOption //中途允许加入选项 - CreateRoomParam_SameIPForbid //同IP不可进 - CreateRoomParam_Max -) - -type ScenePolicyDataParam struct { - Name string - AliasName string - Desc string - Min int32 - Max int32 - Default int32 - Value []int32 - Value2 []int32 - CustomIndex int32 - index int -} - type ScenePolicyData struct { - GameName string - GameId int32 - GameMode []int32 - CanForceStart bool - MinPlayerCnt int32 - DefaultPlayerCnt int32 - MaxIndex int32 - TimeFreeStart int32 - TimeFreeEnd int32 - DependentPlayerCnt bool - EnterAfterStart bool - ConfigVer int32 - PerGameTakeCard int32 - ViewLogCnt int32 - BetState int32 - Params []ScenePolicyDataParam - nameMap map[string]*ScenePolicyDataParam - aliasNameMap map[string]*ScenePolicyDataParam - customIndexParams []*ScenePolicyDataParam -} - -func alignto(val, align int32) int32 { - return (val + align - 1) / align + GameName string + GameId int32 + GameMode []int32 + DefaultPlayerCnt int32 + EnterAfterStart bool + BetState int32 + BaseScore int } func (spd *ScenePolicyData) Init() bool { - spd.nameMap = make(map[string]*ScenePolicyDataParam) - spd.aliasNameMap = make(map[string]*ScenePolicyDataParam) - if spd.MaxIndex > 0 { - spd.customIndexParams = make([]*ScenePolicyDataParam, spd.MaxIndex) - } - for i := 0; i < len(spd.Params); i++ { - spd.nameMap[spd.Params[i].Name] = &spd.Params[i] - spd.Params[i].index = i - spd.aliasNameMap[spd.Params[i].AliasName] = &spd.Params[i] - if spd.Params[i].CustomIndex >= 0 && spd.MaxIndex > 0 { - spd.customIndexParams[spd.Params[i].CustomIndex] = &spd.Params[i] - } - } return true } -func (spd *ScenePolicyData) GetParam(idx int) *ScenePolicyDataParam { - if idx >= 0 && idx < len(spd.Params) { - return &spd.Params[idx] - } - return nil -} - -func (spd *ScenePolicyData) GetParamByIndex(idx int) *ScenePolicyDataParam { - if idx >= 0 && idx < len(spd.customIndexParams) { - return spd.customIndexParams[idx] - } - return nil -} - -func (spd *ScenePolicyData) GetParamByName(name string) *ScenePolicyDataParam { - if spdp, exist := spd.nameMap[name]; exist { - return spdp - } - return nil -} - -func (spd *ScenePolicyData) GetParamByAliasName(name string) *ScenePolicyDataParam { - if spdp, exist := spd.aliasNameMap[name]; exist { - return spdp - } - return nil -} - -func (spd *ScenePolicyData) IsTimeFree(mode int) bool { - //是否限时免费 - ts := int32(time.Now().Unix()) - if ts >= spd.TimeFreeStart && ts < spd.TimeFreeEnd { - return true - } - return false -} - -func (spd *ScenePolicyData) IsEnoughRoomCardCnt(s *Scene, p *Player, roomFeeParam, needCardCnt, playerNum int32, isAgent bool) bool { - return true -} - -func (spd *ScenePolicyData) CostRoomCard(s *Scene, roomFeeParam, needCardCnt, playerNum int32, snid []int32) { -} - -func (spd *ScenePolicyData) UpRoomCard(s *Scene, roomFeeParam, needCardCnt, playerNum int32) { -} - -//ScenePolicy interface - -// 能否进入 -func (spd *ScenePolicyData) CanCreate(s *Scene, p *Player, mode, sceneType int, params []int32, isAgent bool) (bool, []int32) { - //参数容错处理 - if len(params) < len(spd.Params) { - logger.Logger.Infof("ScenePolicyData.CanCreate param count not enough, need:%v get:%v", len(spd.Params), len(params)) - for i := len(params); i < len(spd.Params); i++ { - params = append(params, spd.Params[i].Default) - } - } - - //确保参数正确 - for i := 0; i < len(params); i++ { - if params[i] < spd.Params[i].Min || params[i] > spd.Params[i].Max { - params[i] = spd.Params[i].Default - } - } - - return true, params -} - func (spd *ScenePolicyData) OnStart(s *Scene) { - -} - -func (spd *ScenePolicyData) ReturnRoomCard(s *Scene, roomFeeParam, needCardCnt, playerNum int32) { + s.NotifyPrivateRoom(common.ListAdd) } // 场景关闭事件 func (spd *ScenePolicyData) OnStop(s *Scene) { + s.NotifyPrivateRoom(common.ListDel) + // 房主付费,房间没有玩就解散了,返还房主建房费用 + if s.IsCustom() && s.GetCostType() == 1 && s.currRound == 0 { + spd.GiveCostPayment(s, s.creator) + } } // 场景心跳事件 @@ -169,12 +44,12 @@ func (spd *ScenePolicyData) OnTick(s *Scene) { // 玩家进入事件 func (spd *ScenePolicyData) OnPlayerEnter(s *Scene, p *Player) { - + s.NotifyPrivateRoom(common.ListModify) } // 玩家离开事件 func (spd *ScenePolicyData) OnPlayerLeave(s *Scene, p *Player) { - + s.NotifyPrivateRoom(common.ListModify) } // 系统维护关闭事件 @@ -182,162 +57,157 @@ func (spd *ScenePolicyData) OnShutdown(s *Scene) { } -// 获得场景的匹配因子(值越大越优先选择) -func (spd *ScenePolicyData) GetFitFactor(s *Scene, p *Player) int { - return len(s.players) -} +func (spd *ScenePolicyData) OnSceneState(s *Scene, state int) { + s.SceneState = int32(state) + switch state { + case common.SceneStateWaite: + s.NotifyPrivateRoom(common.ListModify) + + case common.SceneStateStart: + s.NotifyPrivateRoom(common.ListModify) + if s.IsCustom() { + if s.GetCostType() == 2 { + for _, v := range s.players { + spd.CostPayment(s, v) + } + } + } + + case common.SceneStateEnd: + s.NotifyPrivateRoom(common.ListModify) -// 是否满座了 -func (spd *ScenePolicyData) IsFull(s *Scene, p *Player, num int32) bool { - if s.HasPlayer(p) { - return false } - return s.GetPlayerCnt() >= int(num) } -// 是否可以强制开始 -func (spd *ScenePolicyData) IsCanForceStart(s *Scene) bool { - return spd.CanForceStart && s.GetPlayerCnt() >= int(spd.MinPlayerCnt) -} +func (spd *ScenePolicyData) OnGameState(s *Scene, state int) { -// 结算房卡 -func (spd *ScenePolicyData) BilledRoomCard(s *Scene, snid []int32) { - //spd.CostRoomCard(s, spd.GetRoomFeeMode(s), spd.GetNeedRoomCardCnt(s), int32(len(s.players)), snid) -} - -func (spd *ScenePolicyData) getNeedRoomCardCnt(params []int32) int32 { - return 0 -} - -// 需求房卡数量 -func (spd *ScenePolicyData) GetNeedRoomCardCnt(s *Scene) int32 { - return 0 -} - -//func (spd *ScenePolicyData) getRoomFeeMode(params []int32) int32 { -// //if len(params) > 0 { -// // param := spd.GetParamByIndex(SPDPCustomIndex_RoomFeeMode) -// // if param != nil && param.index >= 0 && param.index < len(params) { -// // return params[param.index] -// // } -// //} -// return common.RoomFee_Owner -//} - -// 收费方式(AA|房主付费) -func (spd *ScenePolicyData) GetRoomFeeMode(s *Scene) int32 { - //if s != nil { - // return spd.getRoomFeeMode(s.params) - //} - return 0 -} - -func (spd *ScenePolicyData) GetNeedRoomCardCntDependentPlayerCnt(s *Scene) int32 { - return 0 } // 能否进入 func (spd *ScenePolicyData) CanEnter(s *Scene, p *Player) int { - param := spd.GetParamByIndex(SPDPCustomIndex_SameIPForbid) - if param != nil && len(s.params) <= param.index { - logger.Logger.Errorf("game param len too long %v", s.gameId) - } - - if param != nil && len(s.params) > param.index && s.params[param.index] != 0 { - ip := p.GetIP() - for i := 0; i < s.playerNum; i++ { - pp := s.seats[i] - if pp != nil && pp.GetIP() == ip { - return int(hall_proto.OpResultCode_Game_OPRC_SameIpForbid_Game) - } - } - } - if !spd.EnterAfterStart { if s.starting { - return int(hall_proto.OpResultCode_Game_OPRC_GameStarting_Game) - } - } - - if spd.EnterAfterStart { - if s.starting { - param := spd.GetParamByIndex(SPDPCustomIndex_DoorOption) - if param != nil && s.params[param.index] != 0 { - return int(hall_proto.OpResultCode_Game_OPRC_GameStarting_Game) - //} else { - // return int(hall_proto.OpResultCode_OPRC_SceneEnterForWatcher) - } + return int(hallproto.OpResultCode_Game_OPRC_GameStarting_Game) } } return 0 } -// 人数 -func (spd *ScenePolicyData) getPlayerNum(params []int32) int32 { - if len(params) > 0 { - param := spd.GetParamByIndex(SPDPCustomIndex_PlayerNum) - if param != nil { - idx := int(params[param.index]) - if idx >= 0 && idx < len(param.Value) { - val := param.Value[idx] - return val +func (spd *ScenePolicyData) costEnough(costType, playerNum int, roomConfig *webapi.RoomConfig, snid int32, f func(items []*model.Item)) bool { + isEnough := true + var items []*model.Item + if costType == 1 { + // 房主 + for _, v := range roomConfig.GetCost() { + if item := BagMgrSingleton.GetItem(snid, v.GetItemId()); item == nil || item.ItemNum < v.GetItemNum() { + isEnough = false + break + } else { + items = append(items, &model.Item{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + }) + } + } + } else { + // AA + for _, v := range roomConfig.GetCost() { + n := int64(math.Ceil(float64(v.GetItemNum()) / float64(playerNum))) + if item := BagMgrSingleton.GetItem(snid, v.GetItemId()); item == nil || item.ItemNum < n { + isEnough = false + break + } else { + items = append(items, &model.Item{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + }) } } } - return spd.DefaultPlayerCnt -} - -func (spd *ScenePolicyData) GetPlayerNum(s *Scene) int32 { - if s != nil { - return spd.getPlayerNum(common.CopySliceInt64ToInt32(s.params)) + if isEnough { + f(items) } - return spd.DefaultPlayerCnt + return isEnough } -func (spd *ScenePolicyData) getBaseCoin(params []int32) int { - if len(params) > 0 { - param := spd.GetParamByIndex(SPDPCustomIndex_BaseCoin) - if param != nil { - idx := int(params[param.index]) - if idx >= 0 && idx < len(param.Value) { - val := param.Value[idx] - return int(val) - } +func (spd *ScenePolicyData) CostEnough(costType, playerNum int, roomConfig *webapi.RoomConfig, p *Player) bool { + if roomConfig == nil { + return false + } + return spd.costEnough(costType, playerNum, roomConfig, p.SnId, func(items []*model.Item) {}) +} + +func (spd *ScenePolicyData) CostPayment(s *Scene, p *Player) bool { + roomConfig := PlatformMgrSingleton.GetConfig(p.Platform).RoomConfig[s.GetRoomConfigId()] + if roomConfig == nil { + return false + } + return spd.costEnough(int(roomConfig.GetCostType()), s.playerNum, roomConfig, p.SnId, func(items []*model.Item) { + for _, v := range items { + v.ItemNum = -v.ItemNum } - } - return 0 + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: items, + GainWay: common.GainWayRoomCost, + Operator: "system", + Remark: "竞技馆进房费用", + GameId: int64(s.gameId), + GameFreeId: int64(s.dbGameFree.GetId()), + RoomConfigId: roomConfig.GetId(), + }) + }) } -func (spd *ScenePolicyData) GetBaseCoin(s *Scene) int { - if s != nil { - return spd.getBaseCoin(common.CopySliceInt64ToInt32(s.params)) +// GiveCostPayment 退房费 +func (spd *ScenePolicyData) GiveCostPayment(s *Scene, snid int32) bool { + roomConfig := PlatformMgrSingleton.GetConfig(s.limitPlatform.IdStr).RoomConfig[s.GetRoomConfigId()] + if roomConfig == nil { + return false } - return 0 -} -// 局数 -func (spd *ScenePolicyData) GetTotalOfGames(s *Scene) int32 { - //if len(s.params) > 0 { - // param := spd.GetParamByIndex(SPDPCustomIndex_GamesOfCard) - // if param != nil { - // cardCostIdx := int(s.params[param.index]) - // if cardCostIdx >= 0 && cardCostIdx < len(param.Value) { - // costCardNum := param.Value[cardCostIdx] - // return costCardNum - // } else if int32(cardCostIdx) >= common.CUSTOM_PER_GAME_INDEX_BEG { //自定义局数 - // totalOfGames := int32(cardCostIdx) - common.CUSTOM_PER_GAME_INDEX_BEG + 1 - // return totalOfGames - // } - // } - //} - //return 4 - return s.totalRound + if roomConfig.GetCostType() != 1 { // 只有房主付费才有返还 + return false + } + + var items []*model.Item + for _, v := range roomConfig.GetCost() { + items = append(items, &model.Item{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + }) + } + + p := PlayerMgrSington.GetPlayerBySnId(snid) + if p != nil { + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: items, + GainWay: common.GainWayRoomCost, + Operator: "system", + Remark: "竞技场房间费用返还", + GameId: int64(s.gameId), + GameFreeId: int64(s.dbGameFree.GetId()), + NoLog: false, + RoomConfigId: roomConfig.GetId(), + }) + } else { + BagMgrSingleton.AddItemsOffline(s.limitPlatform.IdStr, snid, items, common.GainWayRoomCost, "system", + "竞技场费用返还", int64(s.gameId), int64(s.dbGameFree.GetId()), false, func(err error) { + logger.Logger.Errorf("竞技场房间费用返还失败, err: %v", err) + }) + } + return false } func (spd *ScenePolicyData) GetBetState() int32 { return spd.BetState } -func (spd *ScenePolicyData) GetViewLogLen() int32 { - return spd.ViewLogCnt +func (spd *ScenePolicyData) GetPlayerNum() int { + return int(spd.DefaultPlayerCnt) +} + +func (spd *ScenePolicyData) GetBaseScore() int { + return int(spd.BaseScore) } diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index a66e524..a296bee 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -63,6 +63,8 @@ const ( ShopTypeCoin = iota + 1 // 金币 ShopTypeDiamond // 钻石 ShopTypeItem // 道具 + ShopTypeFangKa // 房卡 + ShopTypeMax ) // 兑换商品状态 @@ -539,10 +541,10 @@ func (this *ShopMgr) shopAddItem(p *Player, shopInfo *model.ShopInfo, vipShopId // createOrder 保存购买记录 func (this *ShopMgr) createOrder(p *Player, shopInfo *model.ShopInfo, costNum int64, amount [3]int32) { - if shopInfo.Type < ShopTypeCoin && shopInfo.Type > ShopTypeItem { - logger.Logger.Errorf("createOrder err: type = %v", shopInfo.Type) - return - } + //if shopInfo.Type < ShopTypeCoin && shopInfo.Type >= ShopTypeMax { + // logger.Logger.Errorf("createOrder err: type = %v", shopInfo.Type) + // return + //} task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { dbShop := model.NewDbShop(p.Platform, shopInfo.Page, amount[:], "sys", 0, shopInfo.ConstType, int32(costNum), @@ -811,6 +813,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen cdata := this.GetExchangeData(p.Platform, goodsId) pack := &shop.SCShopExchange{ RetCode: shop.OpResultCode_OPRC_VCoinNotEnough, + GoodsId: goodsId, } if cdata == nil { pack.RetCode = shop.OpResultCode_OPRC_ExchangeSoldOut @@ -913,6 +916,7 @@ func (this *ShopMgr) Exchange(p *Player, goodsId int32, username, mobile, commen }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { pack := &shop.SCShopExchange{ RetCode: shop.OpResultCode_OPRC_Error, + GoodsId: goodsId, } as := data.(*webapi_proto.SACreateExchangeOrder) // 必不为空 @@ -1226,17 +1230,15 @@ func (this *ShopMgr) SendAPICreateOrder(p *Player, ConfigPayId int32, data any, amount[ShopTypeDiamond-1] = int32(addTotal) var itemInfo []model.ItemInfo var webItemInfo []*webapi_proto.ItemInfo - if shopInfo.AddItemInfo != nil { - for _, info := range shopInfo.AddItemInfo { - itemInfo = append(itemInfo, model.ItemInfo{ - ItemId: info.ItemId, - ItemNum: int64(info.ItemNum), - }) - webItemInfo = append(webItemInfo, &webapi_proto.ItemInfo{ - ItemId: info.ItemId, - ItemNum: info.ItemNum, - }) - } + 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, shopInfo.Page, amount[:], ShopConsumeMoney, costNum, diff --git a/worldsrv/tmmatch.go b/worldsrv/tmmatch.go index 3c2d6a2..bc23dc5 100644 --- a/worldsrv/tmmatch.go +++ b/worldsrv/tmmatch.go @@ -19,6 +19,10 @@ import ( "mongo.games.com/game/srvdata" ) +func getSortId() int64 { + return time.Now().UnixMilli() +} + type TmPlayer struct { SnId int32 seq int // 报名序号(第几个报名的) @@ -30,6 +34,7 @@ type TmGradeInfo struct { copyLv int32 copyRoleId int32 CopySkinId int32 + rank int32 } type TmMatch struct { @@ -48,7 +53,7 @@ type TmMatch struct { func NewTmMatch(platform string, match *webapi_proto.GameMatchDate, players map[int32]*TmPlayer) *TmMatch { ret := &TmMatch{ - SortId: time.Now().UnixNano(), + SortId: getSortId(), TMId: match.Id, TmPlayer: make(map[int32]*TmPlayer), Platform: platform, @@ -74,6 +79,8 @@ func (tm *TmMatch) Start() { tm.BroadcastMessage(int(tournament.TOURNAMENTID_PACKET_TM_SCTMStart), pack) logger.Logger.Trace("SCTMStart ", pack) + tm.RobotGradesDecline(1) + //创建房间 timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { MatchSceneMgrSingleton.MatchStart(tm) @@ -87,6 +94,10 @@ func (tm *TmMatch) Stop() { logger.Logger.Trace("(this *TmMatch) Stop()") } +func (tm *TmMatch) GetTotalRound() int32 { + return int32(len(tm.gmd.GetMatchPromotion()) - 1) +} + func (tm *TmMatch) BroadcastMessage(packetId int, rawPack interface{}) { mgs := make(map[*netlib.Session][]*srvproto.MCSessionUnion) for _, tmp := range tm.TmPlayer { @@ -101,7 +112,7 @@ func (tm *TmMatch) BroadcastMessage(packetId int, rawPack interface{}) { } for gateSess, v := range mgs { if gateSess != nil && len(v) != 0 { - pack, err := MulticastMaker.CreateMulticastPacket(packetId, rawPack, v...) + pack, err := common.CreateMulticastPacket(packetId, rawPack, v...) if err == nil { proto.SetDefaults(pack) gateSess.Send(int(srvproto.SrvlibPacketID_PACKET_SS_MULTICAST), pack) @@ -301,6 +312,7 @@ func (tm *TmMatch) RobotGradesDecline(round int) { copyLv: info.copyLv, copyRoleId: info.copyRoleId, CopySkinId: info.CopySkinId, + rank: info.rank, } tm.robotGrades[lastRound][i] = gradeInfo if info.copySnid != 0 { diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index 66755db..ad3eee2 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -24,13 +24,8 @@ import ( "mongo.games.com/game/webapi" ) -func init() { - module.RegisteModule(TournamentMgr, time.Second, 0) - ClockMgrSington.RegisteSinker(TournamentMgr) -} - +// 如果这里比赛类型没有,默认是锦标赛 const ( - // 如果这里比赛类型没有,默认是锦标赛 MatchTypeNormal = iota + 1 // 锦标赛 MatchTypeChampion // 冠军赛/实物赛 MatchTypeVIP // vip比赛 @@ -54,6 +49,11 @@ const ( DaiDing = 2 // 待定 ) +func init() { + module.RegisteModule(TournamentMgr, time.Second, 0) + common.ClockMgrSingleton.RegisterSinker(TournamentMgr) +} + var TournamentMgr = NewTournament() type PerRankInfo struct { @@ -78,12 +78,12 @@ type SignupInfo struct { type PlayerRoundInfo struct { players []*PlayerMatchContext // 本轮结算信息 - ranks []*PlayerMatchContext // 本来排名 - num int // 本来完成人数 + ranks []*PlayerMatchContext // 本轮排名 + num int // 本轮完成人数 } type Tournament struct { - BaseClockSinker + common.BaseClockSinker TypeList map[string]*webapiproto.GameMatchType // 比赛类型列表 平台id:比赛类型列表 GameMatchDateList map[string]map[int32]*webapiproto.GameMatchDate // 比赛配置,platform:比赛场配置id:比赛配置 singleSignupPlayers map[int32]*SignupInfo // 开启机器人时,报名的玩家,玩家Id:报名信息 @@ -91,7 +91,7 @@ type Tournament struct { playerWaitStart map[int32]int64 // 等待时间 玩家Id:等待时长秒 matches map[int32]map[int64]*TmMatch // 开始比赛的数据,比赛配置Id:比赛顺序序号:一场开始的比赛数据 players map[int64]map[int32]*PlayerMatchContext // 比赛中玩家 比赛顺序序号:玩家id:玩家信息 - roundPlayers map[int64]map[int32]*PlayerRoundInfo // 每轮比赛数据 比赛顺序序号:第几轮 + roundPlayers map[int64]map[int32]*PlayerRoundInfo // 每轮比赛数据备份 比赛顺序序号:第几轮 finalPerRank map[int64][]*PerRankInfo // 本场比赛排名,每淘汰一位记录一位,最后记录决赛玩家 比赛顺序序号 MatchAwardNum map[string]map[int32]int32 // 比赛配置Id:比赛奖励次數 } @@ -146,6 +146,7 @@ func (this *Tournament) checkData(cfg *webapiproto.GameMatchDate) bool { return true } +// 记录淘汰人员 func (this *Tournament) addFinalPlayer(sortId int64, p *PerRankInfo) { if this.finalPerRank[sortId] == nil { this.finalPerRank[sortId] = []*PerRankInfo{} @@ -153,7 +154,8 @@ func (this *Tournament) addFinalPlayer(sortId int64, p *PerRankInfo) { this.finalPerRank[sortId] = append(this.finalPerRank[sortId], p) } -func (this *Tournament) getRoundPlayer(sortId int64, round int32) *PlayerRoundInfo { +// GetRoundPlayer 查询一场比赛某轮的历史数据 +func (this *Tournament) GetRoundPlayer(sortId int64, round int32) *PlayerRoundInfo { _, ok := this.roundPlayers[sortId] if !ok { return nil @@ -168,6 +170,111 @@ func (this *Tournament) getRoundPlayer(sortId int64, round int32) *PlayerRoundIn return v } +// GetRemainNum 剩余比赛人数 +func (this *Tournament) GetRemainNum(sortId int64) int32 { + tm := this.GetTm(sortId) + if tm == nil { + return 0 + } + + round := this.GetRound(sortId) + l := tm.gmd.GetMatchPromotion() + if round <= int32(len(l)) { + return l[round-1] + } + return 0 +} + +type MatchPlayerInfo struct { + SnId int32 + RoleId int32 + SkinId int32 + Rank int32 + Grade int32 +} + +// GetRemainPlayer 未淘汰的人 +func (this *Tournament) GetRemainPlayer(sortId int64) []*MatchPlayerInfo { + tm := this.GetTm(sortId) + if tm == nil { + return nil + } + round := this.GetRound(sortId) + useRobot := this.IsRobotOn(tm.gmd) + + var ret []*MatchPlayerInfo + + realPlayer := func() { + for _, v := range tm.TmPlayer { + p := PlayerMgrSington.GetPlayerBySnId(v.SnId) + if p != nil { + ret = append(ret, &MatchPlayerInfo{ + SnId: v.SnId, + RoleId: p.GetRoleId(), + SkinId: p.Skin.ModId, + Grade: 1000, + }) + } + } + } + + robotPlayer := func(n int) { + for _, v := range tm.robotGrades[n] { + if v.copySnid == 0 { + for _, vv := range tm.TmPlayer { + p := PlayerMgrSington.GetPlayerBySnId(vv.SnId) + if p != nil { + ret = append(ret, &MatchPlayerInfo{ + SnId: vv.SnId, + RoleId: p.GetRoleId(), + SkinId: p.Skin.ModId, + Grade: v.grade, + }) + } + break + } + continue + } + ret = append(ret, &MatchPlayerInfo{ + SnId: v.copySnid, + RoleId: v.copyRoleId, + SkinId: v.CopySkinId, + Grade: v.grade, + }) + } + } + + if round <= 1 { + if useRobot { + robotPlayer(0) + realPlayer() + } else { + realPlayer() + } + } else { + if useRobot { + robotPlayer(int(round - 1)) + } else { + if this.roundPlayers[sortId] != nil { + d := this.roundPlayers[sortId][round-1] + if d != nil { + for _, v := range d.ranks { + ret = append(ret, &MatchPlayerInfo{ + SnId: v.copySnid, + RoleId: v.copyRoleId, + SkinId: v.copySkinId, + Grade: v.grade, + }) + } + } + } + } + } + return ret +} + +// GetSignUpPlayers 获取报名人员 +// id 比赛配置id func (this *Tournament) GetSignUpPlayers(platform string, id int32) map[int32]*TmPlayer { v, ok := this.signupPlayers[platform] if !ok { @@ -194,7 +301,7 @@ func (this *Tournament) UpdateData(init bool, data *webapiproto.GameMatchDateLis this.FixMatchTimeStamp(v) configs[v.Id] = v } else { - logger.Logger.Error("GameMatchDate error: ", v) + logger.Logger.Errorf("GameMatchDate check error: %v", v) } } @@ -239,14 +346,6 @@ func (this *Tournament) UpdateData(init bool, data *webapiproto.GameMatchDateLis } } this.GameMatchDateList[data.Platform] = configs - //拉取数据 - if this.MatchAwardNum == nil { - ret, err := model.GetMatchAwardLog(data.Platform) - logger.Logger.Tracef("ret = %v,err = %v", ret, err) - if err == nil { - this.MatchAwardNum = ret.AwardNum - } - } // 通知平台玩家数据更新 if !init { //todo 优化 @@ -796,6 +895,7 @@ func (this *Tournament) CreatePlayerMatchContext(p *Player, m *TmMatch, seq int) return nil } +// 是否淘汰 func (this *Tournament) isOut(sortId int64, snid int32) bool { if this.finalPerRank[sortId] != nil { for _, info := range this.finalPerRank[sortId] { @@ -823,6 +923,78 @@ func (this *Tournament) getRank(sortId int64, round, snid int32, isFinals bool) return 0 } +// GetRank 获取排名 +func (this *Tournament) GetRank(sortId int64, snid int32) int32 { + tm := this.GetTm(sortId) + if tm == nil { + return 0 + } + round := this.GetRound(sortId) + useRobot := this.IsRobotOn(tm.gmd) + + robotRankFunc := func(n int, snid int32) int32 { + rank := int32(0) + for _, v := range tm.robotGrades[n] { + if v.copySnid == snid { + return v.rank + } + if v.copySnid == 0 { + rank = v.rank + } + } + return rank + } + + playerRankFunc := func(n int, snid int32) int32 { + d := this.GetRoundPlayer(sortId, int32(n)) + if d != nil { + for _, v := range d.players { + if v.p.SnId == snid { + return v.rank + } + } + } + d = this.GetRoundPlayer(sortId, int32(n-1)) + if d != nil { + for _, v := range d.players { + if v.p.SnId == snid { + return v.rank + } + } + } + return 0 + } + + if round <= 1 { + d := tm.TmPlayer[snid] + if d != nil { + return int32(d.seq) + } + if useRobot { + n := 0 + for _, v := range tm.TmPlayer { + n = v.seq - 1 + break + } + for k, v := range tm.robotGrades[0] { + if v.copySnid == snid { + if k < n { + return int32(k) + } + return int32(k + 2) + } + } + } + return 0 + } else { + if useRobot { + return robotRankFunc(int(round-1), snid) + } else { + return playerRankFunc(int(round-1), snid) + } + } +} + // UpdateMatchInfo 玩家比赛结束 更新积分 func (this *Tournament) UpdateMatchInfo(p *Player, sortId int64, grade, isWin int32, matchRobotGrades map[int32]int32) { logger.Logger.Tracef("UpdateMatchInfo: sortId:%v, grade:%v, isWin: %v, matchRobotGrades:%v", sortId, grade, isWin, matchRobotGrades) @@ -899,7 +1071,7 @@ func (this *Tournament) stopMatch(matchId int32, sortId int64) (isOver bool) { // 开启机器人时使用 func (this *Tournament) NextRoundStartSingle(sortId int64, playerCtx *PlayerMatchContext, matchRobotGrades map[int32]int32) { logger.Logger.Tracef("NextRoundStartSingle 当前第 %v 轮", playerCtx.round) - info := this.getRoundPlayer(sortId, playerCtx.round) + info := this.GetRoundPlayer(sortId, playerCtx.round) if info == nil { return } @@ -942,11 +1114,24 @@ func (this *Tournament) NextRoundStartSingle(sortId int64, playerCtx *PlayerMatc } sort.Slice(arr, func(i, j int) bool { + if arr[i].grade == arr[j].grade { // 真人在前 + if arr[i].copySnid == 0 { + return true + } + if arr[j].copySnid == 0 { + return false + } + } return arr[i].grade > arr[j].grade }) + for k, v := range arr { + v.rank = int32(k + 1) + } + playerCtx.tm.robotGrades[int(round)] = arr for _, info := range arr { - logger.Logger.Tracef("NextRoundStart_Single 本轮积分排名 Snid:%v Grade:%v copyLv:%v copyRoleId:%v", info.copySnid, info.grade, info.copyLv, info.copyRoleId) + logger.Logger.Tracef("NextRoundStart_Single 本轮积分排名 round:%v Snid:%v Grade:%v copyLv:%v copyRoleId:%v rank:%v", + playerCtx.round, info.copySnid, info.grade, info.copyLv, info.copyRoleId, info.rank) } // 获取排名 @@ -1017,7 +1202,7 @@ func (this *Tournament) NextRoundStartSingle(sortId int64, playerCtx *PlayerMatc // 关闭机器时使用 func (this *Tournament) NextRoundStart(sortId int64, playerCtx *PlayerMatchContext) { logger.Logger.Tracef("NextRoundStart 当前第 %v 轮", playerCtx.round) - info := this.getRoundPlayer(sortId, playerCtx.round) + info := this.GetRoundPlayer(sortId, playerCtx.round) if info == nil { return } @@ -1058,7 +1243,7 @@ func (this *Tournament) NextRoundStart(sortId int64, playerCtx *PlayerMatchConte info.players = info.players[len(ps):] willOut := false - if promotionNum1 == this.getRoundPlayer(sortId, playerCtx.round-1).num { + if promotionNum1 == this.GetRoundPlayer(sortId, playerCtx.round-1).num { // 最后一个人打完了,确定要淘汰的人 willOut = true } else { @@ -1516,6 +1701,72 @@ func (this *Tournament) GetSCTMInfosPack(platform, channelName string) *tourname return pack } +// GetTmMatch 查询比赛中的比赛 +func (this *Tournament) GetTmMatch(plt string, matchId int32, channelName string, audience bool, sortId int64) []*TmMatch { + matches := this.GetAllMatchInfo(plt) + if matches == nil { + return nil + } + + var ids []int32 + for id, info := range matches { + if info == nil || info.MatchSwitch != 1 { + continue + } + if matchId > 0 && id != matchId { + continue + } + if channelName != "" && !common.InMatchChannel(info.OnChannelName, channelName) { + continue + } + if info.GetAudienceSwitch() == 1 != audience { + continue + } + ids = append(ids, id) + } + + var ret []*TmMatch + if sortId > 0 { + for _, v := range ids { + d := this.matches[v] + if d != nil { + r, ok := d[sortId] + if ok && r != nil { + return []*TmMatch{r} + } + } + } + return ret + } + + for _, v := range ids { + for _, vv := range this.matches[v] { + ret = append(ret, vv) + } + } + + return ret +} + +func (this *Tournament) GetTmRoom(plt string, matchId int32, channelName string, audience bool, sortId int64) []*Scene { + tm := this.GetTmMatch(plt, matchId, channelName, audience, sortId) + + sort.Slice(tm, func(i, j int) bool { + return tm[i].SortId < tm[j].SortId + }) + + var ret []*Scene + for _, v := range tm { + d := SceneMgrSingleton.GetMatchRoom(v.SortId) + sort.Slice(d, func(i, j int) bool { + return d[i].createTime.Before(d[j].createTime) + }) + ret = append(ret, d...) + } + + return ret +} + func (this *Tournament) MakeMatchLog(platform string, tmId int32, sortId int64) *model.MatchLog { gameMatchDate := this.GetMatchInfo(platform, tmId, sortId) if gameMatchDate == nil { @@ -1608,6 +1859,20 @@ func (this *Tournament) ModuleName() string { func (this *Tournament) Init() { logger.Logger.Trace("Tournament Init") + for _, v := range PlatformMgrSingleton.GetPlatforms() { + if v == nil || v.IdStr == "0" { + continue + } + ret, err := model.GetMatchAward(v.IdStr) + if err != nil { + logger.Logger.Warnf("GetMatchAward error %v", err) + continue + } + if this.MatchAwardNum == nil { + this.MatchAwardNum = make(map[string]map[int32]int32) + } + this.MatchAwardNum[v.IdStr] = ret.Award + } } func (this *Tournament) Update() { @@ -1650,35 +1915,42 @@ func (this *Tournament) Update() { } } } + func (this *Tournament) OnDayTimer() { - this.MatchAwardNum = make(map[string]map[int32]int32) - this.Save() - logger.Logger.Trace("比赛场每日库存清理!!!") + for k := range this.MatchAwardNum { + this.MatchAwardNum[k] = make(map[int32]int32) + } + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + this.SaveMatchAward() + return nil + }), nil, "save_match_award_times").Start() } + func (this *Tournament) Shutdown() { - // 保存数据 - this.Save() + this.SaveMatchAward() + module.UnregisteModule(this) } -func (this *Tournament) Save() { - logger.Logger.Info("保存比赛场每日奖励数据!!!!", this.MatchAwardNum) + +func (this *Tournament) SaveMatchAward() { if this.MatchAwardNum == nil { return } - for platform, _ := range this.MatchAwardNum { - matchAwardLog := model.NewMatchAwardLog() - matchAwardLog.AwardNum = this.MatchAwardNum - matchAwardLog.Platform = platform - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - err := model.InsertOrUpdateMatchAwardLog(matchAwardLog) - if err != nil { - logger.Logger.Error("saveMatchAwardLog error %v", err) - return err - } - return nil - }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { - })).StartByFixExecutor("saveMatchAwardLogTask") + logger.Logger.Tracef("保存比赛场奖励领取次数") + for platform, v := range this.MatchAwardNum { + d := &model.MatchAward{ + Platform: platform, + Award: make(map[int32]int32), + } + for k, vv := range v { + d.Award[k] = vv + } + err := model.UpsertMatchAward(d) + if err != nil { + logger.Logger.Errorf("SaveMatchAward error %v", err) + } } } + func (this *Tournament) getWeekDay() int { getWeekNum := func(t time.Time) int { strWeek := []string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} @@ -1711,7 +1983,7 @@ func (this *Tournament) FixMatchTimeStamp(d *webapiproto.GameMatchDate) { week := this.getWeekDay() st := time.Unix(d.MatchTimeStamp[0], 0).In(l) et := time.Unix(d.MatchTimeStamp[1], 0).In(l) - logger.Logger.Tracef("FixMatchTimeStamp 1 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et) + //logger.Logger.Tracef("FixMatchTimeStamp 1 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et) // 重复时间段比赛时间 for _, v := range d.MatchTimeWeek { if v == int32(week) { @@ -1723,8 +1995,7 @@ func (this *Tournament) FixMatchTimeStamp(d *webapiproto.GameMatchDate) { st = time.Unix(d.MatchTimeStamp[0], 0).In(l) et = time.Unix(d.MatchTimeStamp[1], 0).In(l) - logger.Logger.Tracef("FixMatchTimeStamp 2 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et) - + //logger.Logger.Tracef("FixMatchTimeStamp 2 id:%v now:%v week:%v start:%v end:%v", d.Id, bTs, bTs.Weekday(), st, et) break } } @@ -1738,6 +2009,8 @@ func (this *Tournament) OnHourTimer() { } } +// GetMatchAwardNum 剩余奖励数量 +// id 比赛配置id func (this *Tournament) GetMatchAwardNum(platform string, id int32) int32 { var num int32 if this.MatchAwardNum != nil && this.MatchAwardNum[platform] != nil { @@ -1761,3 +2034,11 @@ func (this *Tournament) GetMatchAwardNum(platform string, id int32) int32 { } return num } + +func (this *Tournament) GetRound(sortId int64) int32 { + d, ok := this.roundPlayers[sortId] + if !ok || d == nil { + return 1 + } + return int32(len(d)) +} diff --git a/worldsrv/transact_daytimechange.go b/worldsrv/transact_daytimechange.go index 8500ca0..92563a6 100644 --- a/worldsrv/transact_daytimechange.go +++ b/worldsrv/transact_daytimechange.go @@ -17,7 +17,7 @@ type DayTimeChangeTransactHandler struct { func (this *DayTimeChangeTransactHandler) OnExcute(tNode *transact.TransNode, ud interface{}) transact.TransExeResult { //logger.Logger.Trace("DayTimeChangeTransactHandler.OnExcute ") - ClockMgrSington.Notifying = true + common.ClockMgrSingleton.Notifying = true for sid, _ := range GameSessMgrSington.servers { tnp := &transact.TransNodeParam{ Tt: common.TransType_DayTimeChange, @@ -27,7 +27,7 @@ func (this *DayTimeChangeTransactHandler) OnExcute(tNode *transact.TransNode, ud Tct: transact.TransactCommitPolicy_SelfDecide, } //logger.Logger.Tracef("TransNode=%v", *tnp) - _, wgDayTimeChangePack.LastMin, wgDayTimeChangePack.LastHour, wgDayTimeChangePack.LastDay, wgDayTimeChangePack.LastWeek, wgDayTimeChangePack.LastMonth = ClockMgrSington.GetLast() + _, wgDayTimeChangePack.LastMin, wgDayTimeChangePack.LastHour, wgDayTimeChangePack.LastDay, wgDayTimeChangePack.LastWeek, wgDayTimeChangePack.LastMonth = common.ClockMgrSingleton.GetLast() tNode.StartChildTrans(tnp, wgDayTimeChangePack, DayTimeChangeTimeOut) } @@ -36,13 +36,13 @@ func (this *DayTimeChangeTransactHandler) OnExcute(tNode *transact.TransNode, ud func (this *DayTimeChangeTransactHandler) OnCommit(tNode *transact.TransNode) transact.TransExeResult { //logger.Logger.Trace("DayTimeChangeTransactHandler.OnCommit ") - ClockMgrSington.Notifying = false + common.ClockMgrSingleton.Notifying = false return transact.TransExeResult_Success } func (this *DayTimeChangeTransactHandler) OnRollBack(tNode *transact.TransNode) transact.TransExeResult { //logger.Logger.Trace("DayTimeChangeTransactHandler.OnRollBack ") - ClockMgrSington.Notifying = false + common.ClockMgrSingleton.Notifying = false return transact.TransExeResult_Success } @@ -53,7 +53,7 @@ func (this *DayTimeChangeTransactHandler) OnChildTransRep(tNode *transact.TransN } type DayTimeChangeTransactSinker struct { - BaseClockSinker + common.BaseClockSinker } func (this *DayTimeChangeTransactSinker) OnMiniTimer() { @@ -70,6 +70,6 @@ func (this *DayTimeChangeTransactSinker) OnMiniTimer() { } func init() { - ClockMgrSington.RegisteSinker(&DayTimeChangeTransactSinker{}) + common.ClockMgrSingleton.RegisterSinker(&DayTimeChangeTransactSinker{}) transact.RegisteHandler(common.TransType_DayTimeChange, &DayTimeChangeTransactHandler{}) } diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index a882271..454fedd 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -662,7 +662,7 @@ func init() { //gameid := 112 switch int(historyModel) { - case PlayerHistoryModel: // 历史记录 + case common.PlayerHistoryModel: // 历史记录 task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { var genPlayerHistoryInfo = func(logid string, gameid int32, spinID, username string, isFree bool, createdTime, totalBetValue, totalPriceValue, totalBonusValue, multiple int64, player *qpapi.PlayerHistoryInfo) { player.SpinID = proto.String(spinID) @@ -728,7 +728,7 @@ func init() { } }), "CSGetPlayerHistoryHandlerWorld").Start() return common.ResponseTag_TransactYield, pack - case GameHistoryModel: + case common.GameHistoryModel: task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { var genGameHistoryInfo = func(gameNumber string, createdTime, multiple int64, hash string, gamehistory *qpapi.GameHistoryInfo) { @@ -1636,6 +1636,10 @@ func init() { pack.Msg = "no found" return common.ResponseTag_NoData, pack } else { + gameFreeId := int32(0) + if s.dbGameFree != nil { + gameFreeId = s.dbGameFree.GetId() + } si := &webapiproto.RoomInfo{ Platform: s.limitPlatform.Name, SceneId: int32(s.sceneId), @@ -1643,9 +1647,8 @@ func init() { GameMode: int32(s.gameMode), SceneMode: int32(s.sceneMode), GroupId: s.groupId, - GameFreeId: s.paramsEx[0], + GameFreeId: gameFreeId, Creator: s.creator, - Agentor: s.agentor, ReplayCode: s.replayCode, Params: common.CopySliceInt64ToInt32(s.params), PlayerCnt: int32(len(s.players) - s.robotNum), @@ -1717,7 +1720,8 @@ func init() { start := (pageNo - 1) * pageSize end := pageNo * pageSize roomList, count, roomSum := SceneMgrSingleton.MarshalAllRoom(msg.GetPlatform(), int(msg.GetGroupId()), int(msg.GetGameId()), - int(msg.GetGameMode()), int(msg.GetClubId()), int(msg.GetRoomType()), int(msg.GetSceneId()), msg.GamefreeId, msg.GetSnId(), start, end, pageSize) + int(msg.GetGameMode()), int(msg.GetClubId()), int(msg.GetRoomType()), int(msg.GetSceneId()), + msg.GamefreeId, msg.GetSnId(), msg.GetIsCustom() == 1, msg.GetRoomConfigId(), start, end, pageSize) if count < pageNo { pageNo = 1 } @@ -1747,24 +1751,24 @@ func init() { switch msg.DestroyType { case 1: //删除所有空房间 for _, s := range SceneMgrSingleton.scenes { - if !s.isPlatform(platform) { + if !s.IsPlatform(platform) { continue } if s != nil && !s.deleting && len(s.players) == 0 { logger.Logger.Warnf("WebService SpecailEmptySceneId destroyroom scene:%v", s.sceneId) - s.TryForceDelectMatchInfo() - s.DoDelete(false) + s.TryForceDeleteMatchInfo() + s.SendGameDestroy(false) } } case 2: //删除所有未开始的房间 for _, s := range SceneMgrSingleton.scenes { - if !s.isPlatform(platform) { + if !s.IsPlatform(platform) { continue } if s != nil && !s.deleting && !s.starting && !s.IsHundredScene() { logger.Logger.Warnf("WebService SpecailUnstartSceneId destroyroom scene:%v", s.sceneId) - s.TryForceDelectMatchInfo() - s.DoDelete(false) + s.TryForceDeleteMatchInfo() + s.SendGameDestroy(false) } } default: //删除指定房间 @@ -1780,14 +1784,14 @@ func init() { pack.Msg = "the sceneid is nil" return common.ResponseTag_NoFindRoom, pack } - if !s.isPlatform(platform) { + if !s.IsPlatform(platform) { pack.Tag = webapiproto.TagCode_FAILED pack.Msg = "the sceneid is not ower platform" return common.ResponseTag_NoFindRoom, pack } logger.Logger.Warnf("WebService destroyroom scene:%v", s.sceneId) - s.TryForceDelectMatchInfo() - s.DoDelete(false) + s.TryForceDeleteMatchInfo() + s.SendGameDestroy(false) } } return common.ResponseTag_Ok, pack @@ -1964,6 +1968,65 @@ func init() { pack.Msg = "no any data" return common.ResponseTag_Ok, pack } + + f := func(plt string, snid int32) { + var alipayAcc, alipayAccName, bankAccount, bankAccName, channelId string + if val, ok := playerMap["AlipayAccount"]; ok { + if str, ok := val.(string); ok { + alipayAcc = str + } + } + if val, ok := playerMap["AlipayAccName"]; ok { + if str, ok := val.(string); ok { + alipayAccName = str + } + } + if val, ok := playerMap["BankAccount"]; ok { + if str, ok := val.(string); ok { + bankAccount = str + } + } + if val, ok := playerMap["BankAccName"]; ok { + if str, ok := val.(string); ok { + bankAccName = str + } + } + if val, ok := playerMap["ChannelId"]; ok { + if str, ok := val.(string); ok { + channelId = str + } + } + + if alipayAcc != "" || alipayAccName != "" { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Ali, + alipayAccName, alipayAcc, 2) + return nil + }), nil, "NewBankBindLog").Start() + } + if bankAccount != "" || bankAccName != "" { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Bank, + bankAccName, bankAccount, 2) + return nil + }), nil, "NewBankBindLog").Start() + } + if channelId != "" { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + a, err := model.GetAccountBySnid(plt, snid) + if err != nil { + logger.Logger.Errorf("GetAccountBySnid error: %v", err) + return nil + } + a.ChannelId = channelId + if err = model.UpdateAccount(a); err != nil { + logger.Logger.Errorf("UpdateAccount error: %v", err) + } + return nil + }), nil).StartByExecutor("UpdateChannelId") + } + } + pack.Tag = webapiproto.TagCode_SUCCESS player := PlayerMgrSington.GetPlayerBySnId(msg.SnId) if player != nil { @@ -1985,7 +2048,7 @@ func init() { if v.FieldByName(k).CanInterface() { switch f.Type.Kind() { case reflect.Int64, reflect.Int32: - a, _ := strconv.ParseInt((fmt.Sprintf("%v", n)), 10, 64) + a, _ := strconv.ParseInt(fmt.Sprintf("%v", n), 10, 64) s.FieldByName(k).SetInt(a) case reflect.Bool: s.FieldByName(k).SetBool(n.(bool)) @@ -2002,42 +2065,8 @@ func init() { pd = SetInfo(pd, *pd, playerMap) player.dirty = true player.SendDiffData() - var alipayAcc, alipayAccName, bankAccount, bankAccName string - if val, ok := playerMap["AlipayAccount"]; ok { - if str, ok := val.(string); ok { - alipayAcc = str - } - } - if val, ok := playerMap["AlipayAccName"]; ok { - if str, ok := val.(string); ok { - alipayAccName = str - } - } - if val, ok := playerMap["BankAccount"]; ok { - if str, ok := val.(string); ok { - bankAccount = str - } - } - if val, ok := playerMap["BankAccName"]; ok { - if str, ok := val.(string); ok { - bankAccName = str - } - } - if alipayAcc != "" || alipayAccName != "" { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Ali, - alipayAccName, alipayAcc, 2) - return nil - }), nil, "NewBankBindLog").Start() - } - if bankAccount != "" || bankAccName != "" { - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Bank, - bankAccName, bankAccount, 2) - return nil - }), nil, "NewBankBindLog").Start() - } pack.Msg = "success" + f(pd.Platform, pd.SnId) return common.ResponseTag_Ok, pack } } else { @@ -2053,35 +2082,7 @@ func init() { //直接操作数据库 err := model.UpdatePlayerElement(msg.Platform, msg.SnId, playerMap) if err == nil { - var alipayAcc, alipayAccName, bankAccount, bankAccName string - if val, ok := playerMap["AlipayAccount"]; ok { - if str, ok := val.(string); ok { - alipayAcc = str - } - } - if val, ok := playerMap["AlipayAccName"]; ok { - if str, ok := val.(string); ok { - alipayAccName = str - } - } - if val, ok := playerMap["BankAccount"]; ok { - if str, ok := val.(string); ok { - bankAccount = str - } - } - if val, ok := playerMap["BankAccName"]; ok { - if str, ok := val.(string); ok { - bankAccName = str - } - } - if alipayAcc != "" || alipayAccName != "" { - model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Ali, - alipayAccName, alipayAcc, 2) - } - if bankAccount != "" || bankAccName != "" { - model.NewBankBindLog(msg.SnId, msg.Platform, model.BankBindLogType_Bank, - bankAccName, bankAccount, 2) - } + f(msg.Platform, msg.SnId) } else if err != nil { logger.Logger.Error("UpdatePlayerElement task marshal data error:", err) } @@ -3374,19 +3375,25 @@ func init() { } addvcoin := msg.NeedNum jPrice := msg.JPrice - var items []*Item + var items []*model.Item //V卡 if addvcoin > 0 { - items = append(items, &Item{ItemId: common.ItemIDVCard, ItemNum: int64(addvcoin)}) + items = append(items, &model.Item{ItemId: common.ItemIDVCard, ItemNum: int64(addvcoin)}) } //金券 if jPrice > 0 { - items = append(items, &Item{ItemId: common.ItemIDJCard, ItemNum: int64(jPrice)}) + items = append(items, &model.Item{ItemId: common.ItemIDJCard, ItemNum: int64(jPrice)}) } remark := fmt.Sprintf("兑换撤单 %v-%v", msg.GoodsId, msg.Name) if player != nil { // 在线 - if _, code, _ := BagMgrSingleton.AddItems(player, items, 0, common.GainWay_Exchange, "system", remark, 0, 0, false); code != bag.OpResultCode_OPRC_Sucess { // 领取失败 + if _, code, _ := BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: player.PlayerData, + Change: items, + GainWay: common.GainWay_Exchange, + Operator: "system", + Remark: remark, + }); code != bag.OpResultCode_OPRC_Sucess { // 领取失败 logger.Logger.Errorf("UpExchangeStatus AddItems err", code) pack.Msg = "AddItems err" return common.ResponseTag_ParamError, pack @@ -3447,7 +3454,7 @@ func init() { player.MoneyTotal += int64(info.ConsumeTypeNum) player.dirty = true player.SendDiffData() - info.Amount[2] = player.GetVIPExpByPay(info.ConsumeNum) + info.Amount[2] = int32(player.GetVIPExpByPay(int64(info.ConsumeNum))) var itemInfo []*playerproto.PayItem var items []*Item @@ -3730,6 +3737,7 @@ func init() { })).StartByExecutor(fmt.Sprint(msg.GetSnid())) return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/player/AddItem", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAAddItemById{} @@ -3742,9 +3750,9 @@ func init() { pack.Msg = "参数错误" return common.ResponseTag_ParamError, pack } - var items []*Item + var items []*model.Item for _, info := range msg.ItemInfo { - items = append(items, &Item{ + items = append(items, &model.Item{ ItemId: info.ItemId, // 物品id ItemNum: info.ItemNum, // 数量 ObtainTime: time.Now().Unix(), @@ -3753,7 +3761,13 @@ func init() { p := PlayerMgrSington.GetPlayerBySnId(msg.GetSnid()) if p != nil { //获取道具Id - BagMgrSingleton.AddItems(p, items, 0, msg.GetTypeId(), "system", msg.GetRemark(), 0, 0, false) + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, + Change: items, + GainWay: msg.GetTypeId(), + Operator: "system", + Remark: msg.GetRemark(), + }) pack.Tag = webapiproto.TagCode_SUCCESS pack.Msg = "AddItem success" return common.ResponseTag_Ok, pack diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 1f92ae5..ae526d8 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -27,7 +27,7 @@ var WelfareMgrSington = &WelfareMgr{ } type WelfareMgr struct { - BaseClockSinker + common.BaseClockSinker *model.ConfigMgr } @@ -849,7 +849,7 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) { } typeId := addUpDate2Type[0].Id addUpDate2Num := addUpDate2Type[0].Num - var cost []*model.ItemInfo + var cost []*model.Item if typeId == 1 { Num += 1 //看广告任务 @@ -865,7 +865,7 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) { p.AddDiamond(int64(-addUpDate2Num), 0, common.GainWaySign7Con, "system", "累计签到进阶奖励钻石消耗") logger.Logger.Trace("累计签到进阶奖励,扣除钻石uid = ", p.SnId) EndTime = -1 - cost = append(cost, &model.ItemInfo{ + cost = append(cost, &model.Item{ ItemId: common.ItemIDDiamond, ItemNum: int64(addUpDate2Num), }) @@ -877,27 +877,27 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) { } if EndTime == -1 { //发奖 - var items []*Item + var items []*model.Item for _, d2 := range addUpDate2 { for _, value := range d2.AddUpDate { - item := &Item{ + item := &model.Item{ ItemId: value.Item_Id, ItemNum: int64(value.Grade), } items = append(items, item) } } - BagMgrSingleton.AddItemsV2(&ItemParam{ - P: p, + BagMgrSingleton.AddItemsV2(&model.AddItemParam{ + P: p.PlayerData, Change: items, Cost: cost, Add: 0, GainWay: common.GainWaySign7Add, Operator: "system", Remark: "累计签到进阶奖励获得", - gameId: 0, - gameFreeId: 0, - noLog: false, + GameId: 0, + GameFreeId: 0, + NoLog: false, }) } //通知客户端 @@ -2010,10 +2010,10 @@ func (this *WelfareMgr) OnDayTimer() { } func (this *WelfareMgr) InterestClockEvent() int { - return (1 << CLOCK_EVENT_MAX) - 1 + return (1 << common.ClockEventMax) - 1 } func init() { module.RegisteModule(WelfareMgrSington, time.Second, 0) - ClockMgrSington.RegisteSinker(WelfareMgrSington) + common.ClockMgrSingleton.RegisterSinker(WelfareMgrSington) } diff --git a/xlsx/DB_GameFree.xlsx b/xlsx/DB_GameFree.xlsx index 2c50b06..f1116a6 100644 Binary files a/xlsx/DB_GameFree.xlsx and b/xlsx/DB_GameFree.xlsx differ diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index 189c548..c4fd104 100644 Binary files a/xlsx/DB_GameItem.xlsx and b/xlsx/DB_GameItem.xlsx differ diff --git a/xlsx/DB_GameRule.xlsx b/xlsx/DB_GameRule.xlsx index eddc77e..8e4b993 100644 Binary files a/xlsx/DB_GameRule.xlsx and b/xlsx/DB_GameRule.xlsx differ diff --git a/xlsx/DB_Skin.xlsx b/xlsx/DB_Skin.xlsx index bf74d4c..c9e7169 100644 Binary files a/xlsx/DB_Skin.xlsx and b/xlsx/DB_Skin.xlsx differ diff --git a/xlsx/DB_VIP.xlsx b/xlsx/DB_VIP.xlsx index 0060af6..91fd887 100644 Binary files a/xlsx/DB_VIP.xlsx and b/xlsx/DB_VIP.xlsx differ diff --git a/xlsx/DB_VIPShow.xlsx b/xlsx/DB_VIPShow.xlsx index 96e9c67..5e3be2e 100644 Binary files a/xlsx/DB_VIPShow.xlsx and b/xlsx/DB_VIPShow.xlsx differ