diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8e2e145..8abbdab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,5 @@ stages: - - lock - build - - unlock variables: GOPROXY: "https://goproxy.cn,direct" @@ -20,19 +18,6 @@ cache: - ${GOPATH}/pkg/mod - ${GOPATH}/bin -# 锁定作业,防止并发流水线执行 -lock_job: - stage: lock - script: - - | - if [ -f /tmp/ci_lock_$CI_COMMIT_REF_NAME ]; then - echo "流水线($CI_COMMIT_REF_NAME)已在运行,等待..." - exit 1 - else - touch /tmp/ci_lock_$CI_COMMIT_REF_NAME - echo "获得锁定,开始流水线($CI_COMMIT_REF_NAME)。" - fi - build-job: stage: build only: @@ -40,10 +25,12 @@ build-job: - release script: # 拉取代码 + - echo "拉取代码" - git checkout $CI_COMMIT_REF_NAME - git pull origin $CI_COMMIT_REF_NAME # 替换 go.mod 中的 ../goserver + - echo "替换 go.mod 中的 ../goserver" - sed -i "s|mongo.games.com/goserver => .*|mongo.games.com/goserver => $GOPATH/src/$GoServerSrcPath|" go.mod - if [ ! -z "$(git status --porcelain go.mod go.sum)" ]; then @@ -51,7 +38,7 @@ build-job: fi # 编译 - - echo '编译' + - echo "编译" - if [ "$GOMODTIDY" == 1 ]; then go mod tidy; fi @@ -65,14 +52,14 @@ build-job: done < ./programs.txt # 拷贝文件 - - echo '拷贝文件' + - echo "拷贝文件" - rm -rf ./temp - mkdir ./temp - mkdir ./temp/data - cp -rfp ./data/* ./temp/data # 删除自定义配置 - - echo '删除自定义配置' + - echo "删除自定义配置" - | while IFS= read -r line || [[ -n $line ]] do @@ -81,15 +68,16 @@ build-job: done < ./exclude.txt # 拷贝可执行程序 - - echo '拷贝可执行程序' + - echo "拷贝可执行程序" - | while IFS= read -r line || [[ -n $line ]] do echo "拷贝 $line" mv ./$line/$line ./temp/$line done < ./programs.txt - + # 获取部署环境信息 + - echo "获取部署环境信息" - if [ "$CI_COMMIT_BRANCH" == "develop" ]; then SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVELOP"; REMOTE_HOST="$REMOTE_HOST_DEVELOP"; @@ -120,12 +108,5 @@ build-job: - rsync -rvz --delete ./temp/ $REMOTE_USER@$REMOTE_HOST:$BinPath # 触发部署 - - "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline" - -# 解锁作业,释放锁定 -unlock_job: - stage: unlock - script: - - rm -f /tmp/ci_lock_$CI_COMMIT_REF_NAME - - echo "释放锁定,流水线结束(/$CI_COMMIT_REF_NAME)。" - when: always \ No newline at end of file + - echo "触发部署" + - "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline" \ No newline at end of file diff --git a/clienttest/action_login.go b/clienttest/action_login.go new file mode 100644 index 0000000..5d09847 --- /dev/null +++ b/clienttest/action_login.go @@ -0,0 +1,105 @@ +package main + +import ( + "encoding/json" + "fmt" + "math/rand" + "mongo.games.com/game/protocol/activity" + "mongo.games.com/goserver/core/timer" + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/model" + "mongo.games.com/game/proto" + loginproto "mongo.games.com/game/protocol/login" + playerproto "mongo.games.com/game/protocol/player" +) + +func init() { + // 心跳 + netlib.Register(int(loginproto.GatePacketID_PACKET_SC_PONG), loginproto.SCPong{}, SCPong) + // 登录 + netlib.Register(int(loginproto.LoginPacketID_PACKET_SC_LOGIN), loginproto.SCLogin{}, SCLogin) + // 玩家信息 + netlib.Register(int(playerproto.PlayerPacketID_PACKET_SC_PLAYERDATA), playerproto.SCPlayerData{}, SCPlayerData) + + netlib.Register(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), activity.SCPushCoinInfo{}, SCPrint) +} + +func SCPong(s *netlib.Session, packetid int, data interface{}) error { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Tracef("SCPong username:%v %v", accountID, data) + return nil +} + +func SCLogin(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCLogin ", data) + + msg, ok := data.(*loginproto.SCLogin) + if !ok { + return nil + } + + if msg.GetOpRetCode() != loginproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Error("登录失败 ", accountID) + s.Close() + return nil + } + + csPlayerData := &playerproto.CSPlayerData{ + AccId: msg.GetAccId(), + } + pp := &model.PlayerParams{ + Platform: 1, + Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)), + City: "北京", + Logininmodel: "app", + } + d, err := json.Marshal(pp) + if err == nil { + csPlayerData.Params = proto.String(string(d)) + } + + s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PLAYERDATA), csPlayerData) + logger.Logger.Info("登录成功 ", msg.GetAccId()) + return nil +} + +func SCPlayerData(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCPlayerData ", data) + msg, ok := data.(*playerproto.SCPlayerData) + if !ok { + return nil + } + + if msg.GetOpRetCode() != playerproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Errorf("获取玩家信息失败 %v", accountID) + s.Close() + return nil + } + + s.SetAttribute(SessionAttributeUser, msg) + + StartSessionPingTimer(s, timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { + if !s.IsConned() { + StopSessionPingTimer(s) + return false + } + pack := &loginproto.CSPing{} + s.Send(int(loginproto.GatePacketID_PACKET_CS_PING), pack) + return true + }), nil, time.Second*time.Duration(60+rand.Int31n(100)), -1) + + s.Send(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), &activity.CSPushCoinInfo{}) + + return nil +} + +func SCPrint(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Info("SCPrint ", data) + return nil +} diff --git a/clienttest/config.go b/clienttest/config.go new file mode 100644 index 0000000..a90ad75 --- /dev/null +++ b/clienttest/config.go @@ -0,0 +1,35 @@ +package main + +import ( + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" +) + +var Config = &Configuration{} + +type Configuration struct { + Count int // 机器人总数 + AppId string // appID + Connects netlib.SessionConfig // 网络连接配置 +} + +func (this *Configuration) Name() string { + return "benchmark" +} + +func (this *Configuration) Init() error { + logger.Logger.Tracef("%+v", *this) + if this.Count == 0 { + this.Count = 20 + } + return nil +} + +func (this *Configuration) Close() error { + return nil +} + +func init() { + core.RegistePackage(Config) +} diff --git a/clienttest/config.yaml b/clienttest/config.yaml new file mode 100644 index 0000000..00eb74a --- /dev/null +++ b/clienttest/config.yaml @@ -0,0 +1,67 @@ +netlib: + SrvInfo: + Name: BenchmarkServer + Type: 9 + Id: 902 + AreaID: 1 + Banner: + - ================= + - benchmark server + - ================= + IoServices: [] +module: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +executor: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 + Worker: + WorkerCnt: 8 + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 +timer: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +signal: + SupportSignal: true +cmdline: + SupportCmdline: true +benchmark: + Count: 1 + AppId: 5c56d1644966f078bfb90c71 + Connects: + Id: 402 + Type: 4 + AreaId: 1 + Name: ClientService + Ip: 127.0.0.1 + Port: 11001 + Protocol: tcp + Path: / + MaxDone: 200 + MaxPend: 200 + MaxPacket: 65535 + MaxConn: 2000 + RcvBuff: 4096 + SndBuff: 4096 + WriteTimeout: 3600 + ReadTimeout: 3600 + SoLinger: 10 + IsInnerLink: true + NoDelay: true + SupportFragment: true + AuthKey: www.jxjy.games.cn + IsClient: true + AllowMultiConn: true + FilterChain: + - session-filter-auth + HandlerChain: + - handler-gate-session diff --git a/clienttest/connect.go b/clienttest/connect.go new file mode 100644 index 0000000..a580173 --- /dev/null +++ b/clienttest/connect.go @@ -0,0 +1,69 @@ +package main + +import ( + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + "mongo.games.com/goserver/core/netlib" +) + +const ( + // RobotSessionStartId 机器人session开始id + RobotSessionStartId = 100000000 +) + +var ( + BenchMarkModule = &BenchMark{} + WaitConnectSessions []*netlib.SessionConfig +) + +// NewSession 新建session +// id 连接id, 默认自动分配 +func NewSession(id ...int) { + cfg := Config.Connects + if len(id) > 0 && id[0] > 0 { + cfg.Id = id[0] + } else { + BenchMarkModule.idx++ + cfg.Id = BenchMarkModule.idx + } + cfg.Init() + logger.Logger.Info("waite connect session id=", cfg.Id) + WaitConnectSessions = append(WaitConnectSessions, &cfg) +} + +type BenchMark struct { + idx int +} + +func (m *BenchMark) ModuleName() string { + return "benchmark-module" +} + +func (m *BenchMark) Init() { + m.idx = RobotSessionStartId + for i := 0; i < Config.Count; i++ { + NewSession() + } +} + +// Update 机器开始连接游戏服务器 +func (m *BenchMark) Update() { + n := len(WaitConnectSessions) + if n > 0 { + config := WaitConnectSessions[n-1] + WaitConnectSessions = WaitConnectSessions[:n-1] + if err := netlib.Connect(config); err != nil { + logger.Logger.Error("netlib.Connect error", err) + } + } +} + +func (m *BenchMark) Shutdown() { + module.UnregisteModule(m) +} + +func init() { + module.RegisteModule(BenchMarkModule, time.Millisecond, 1) +} diff --git a/clienttest/constants.go b/clienttest/constants.go new file mode 100644 index 0000000..8a87971 --- /dev/null +++ b/clienttest/constants.go @@ -0,0 +1,31 @@ +package main + +import ( + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/timer" + "time" +) + +const ( + SessionAttributeClientAccountId int = iota // 账号 + SessionAttributeUser + SessionAttributePingTimer +) + +func StartSessionPingTimer(s *netlib.Session, act timer.TimerAction, ud interface{}, interval time.Duration, times int) bool { + StopSessionPingTimer(s) + if hTimer, ok := timer.StartTimer(act, ud, interval, times); ok { + s.SetAttribute(SessionAttributePingTimer, hTimer) + return true + } + return false +} + +func StopSessionPingTimer(s *netlib.Session) { + if h, ok := s.GetAttribute(SessionAttributePingTimer).(timer.TimerHandle); ok { + if h != timer.TimerHandle(0) { + timer.StopTimer(h) + s.RemoveAttribute(SessionAttributePingTimer) + } + } +} diff --git a/clienttest/gatesessionhandler.go b/clienttest/gatesessionhandler.go new file mode 100644 index 0000000..e6b06d7 --- /dev/null +++ b/clienttest/gatesessionhandler.go @@ -0,0 +1,97 @@ +package main + +import ( + "crypto/md5" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "math/rand" + "mongo.games.com/game/common" + "mongo.games.com/game/model" + loginproto "mongo.games.com/game/protocol/login" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "strconv" + "sync/atomic" + "time" +) + +/* + 添加到客户端管理器,管理器负责登录 + 当连接断开时,从管理器中移除,判断是否需要重连 +*/ + +const ( + GateSessionHandlerName = "handler-gate-session" +) + +type GateSessionHandler struct { + netlib.BasicSessionHandler +} + +func (g *GateSessionHandler) GetName() string { + return GateSessionHandlerName +} + +func (g *GateSessionHandler) GetInterestOps() uint { + return 1< + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/clienttest/main.go b/clienttest/main.go new file mode 100644 index 0000000..ae524ed --- /dev/null +++ b/clienttest/main.go @@ -0,0 +1,24 @@ +package main + +import ( + _ "mongo.games.com/game" + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/module" +) + +func main() { + defer core.ClosePackages() + core.LoadPackages("config.yaml") + // core hook + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + + return nil + }) + core.RegisteHook(core.HOOK_AFTER_STOP, func() error { + + return nil + }) + // module模块 + waiter := module.Start() + waiter.Wait("main()") +} diff --git a/common/constant.go b/common/constant.go index d024ab8..6c6970c 100644 --- a/common/constant.go +++ b/common/constant.go @@ -99,6 +99,7 @@ const ( GameId_AngerUncle = 606 // 愤怒大叔 GameId_SmallRoket = 607 // 小火箭 GameId_Clawdoll = 608 // 娃娃机 + GameId_PushCoin = 609 // 推币机 __GameId_ThrGame_Min__ = 700 //################三方类################ GameId_Thr_Dg = 701 //DG Game GameId_Thr_XHJ = 901 ///DG Game @@ -118,6 +119,7 @@ const ( GameDifFruits = "306" // 水果机 GameDifRichblessed = "307" // 多彩多福 GameDifClawdoll = "608" // 娃娃机 + GameDifPushCoin = "609" // 推币机 ) // IsTienLenYuLe TienLen娱乐 @@ -211,123 +213,142 @@ const ( ) const ( - GainWay_NewPlayer int32 = 0 //新建角色 - GainWay_Pay = 1 //后台增加(主要是充值) - GainWay_ByPMCmd = 2 //pm命令 - GainWay_MatchBreakBack = 3 //退赛退还 - GainWay_MatchSystemSupply = 4 //比赛奖励 - GainWay_Exchange = 5 //兑换 - GainWay_ServiceFee = 6 //桌费 - GainWay_CoinSceneWin = 7 //金豆场赢取 - GainWay_CoinSceneLost = 8 //金豆场输 - GainWay_CoinSceneEnter = 9 //进入金币场预扣 - GainWay_ShopBuy = 10 //商城购买或者兑换 - GainWay_CoinSceneLeave = 11 //金豆场回兑 - GainWay_HundredSceneWin = 12 //万人场赢取 - GainWay_HundredSceneLost = 13 //万人场输 - GainWay_MessageAttach = 14 //邮件 - GainWay_SafeBoxSave = 15 //保险箱存入 - GainWay_SafeBoxTakeOut = 16 //保险箱取出 - GainWay_Fishing = 17 //捕鱼 - GainWay_CoinSceneExchange = 18 //金豆场兑换 - GainWay_UpgradeAccount = 19 //升级账号 - GainWay_API_AddCoin = 20 //API操作钱包 - GainWay_GoldCome = 21 //财神降临 - GainWay_Transfer_System2Thrid = 22 //系统平台转入到第三方平台的金币 - GainWay_Transfer_Thrid2System = 23 //第三方平台转入到系统平台的金币 - GainWay_RebateTask = 24 //返利获取 - GainWay_IOSINSTALLSTABLE = 25 //ios安装奖励 - GainWay_VirtualChange = 26 //德州虚拟账变 - GainWay_CreatePrivateScene = 27 //创建私有房间 - GainWay_PrivateSceneReturn = 28 //解散私有房间返还 - GainWay_OnlineRandCoin = 29 //红包雨 - GainWay_Expire = 30 //到期清理 - GainWay_PromoterBind = 31 //手动绑定推广员 - GainWay_GradeShopReturn = 32 //积分商城撤单退还积分 - GainWay_Api_In = 33 //转移金币 - GainWay_Api_Out = 34 //转移金币 - GainWay_Shop_Buy = 35 //购买记录 - GainWay_MAIL_MTEM = 36 //邮件领取道具 - GainWay_Item_Sale = 37 //道具出售 - GainWay_ReliefFund = 38 //领取救济金 - GainWay_Shop_Revoke = 39 //撤单 - GainWay_ActSign = 40 // - GainWay_MatchSignup = 41 //比赛报名费用 - GainWay_MatchSeason = 42 //比赛赛季奖励 - GainWay_ActSignNew = 43 //新签到 - GainWay_ActTurnplate = 44 //轮盘 - GainWay_ActBlindBox = 45 //盲盒 - GainWay_ActFirstPay = 46 //首充 - GainWay_VIPGift = 47 //vip礼包 - GainWay_ActContinuousPay = 48 //连续充值 - GainWay_ActJybAward = 49 //礼包码兑换 - GainWay_LeaveDeduct = 50 //离开扣分 - GainWay_LeaveCombat = 51 //离开补偿 - GainWay_RankMatch = 52 //排位赛段位奖励 - GainWay_AddBag = 53 //增加背包接口调用 - GainWay_SmallRocket = 54 //小火箭收入 - GainWay_BindTel = 55 //绑定手机号 - GainWay_ReliefFund2 = 56 //救济金看视频双倍领取 - GainWay_ActTurnplate2 = 57 //轮盘看视频双倍领取 - GainWay_ActSignNew2 = 58 //签到看视频双倍领取 - GainWay_ItemUse = 59 //道具使用 - GainWay_PhoneScore = 60 //手机积分活动 - GainWay_RankReward = 61 //排位奖励 - GainWay_TaskReward = 62 //任务奖励 - GainWay_Interact = 63 //房间内互动效果 - GainWayItemCollectExchange = 64 //集卡活动兑换 - GainWay_WeekCardAward = 65 //周卡奖励 - GainWay_PigrankTakeCoin = 66 //存钱罐领取耗费钻石 - GainWay_PigrankGainCoin = 67 //存钱罐打开获取金币 - GainWay_ItemMove = 68 //道具赠送 - GainWay_RoleUpgrade = 69 //角色升级 - GainWay_PetUpgrade = 70 //宠物升级 - GainWay_Game = 71 //游戏掉落 - GainWayItemCollectLogin = 73 //集卡活动登录 - GainWay_Collect = 74 //集卡活动 - GainWayItemPhoneScoreExchange = 75 //抽手机活动兑换 - GainWayItemTaskInvite = 78 //邀请任务 - GainWayItemTaskNewPlayer = 79 //新手任务 - GainWayItemTaskAchievement = 80 //成就任务 - GainWayItemTaskEveryDay = 81 //每日任务 - GainWayItemWeekActive = 82 //周活跃奖励 - GainWayContinueSign = 83 //累计签到 - GainWayBackend = 84 // 后台操作 - GainWayBuyCoin = 85 // 商城购买金币 - GainWayBuyItem = 86 // 商城购买道具 - GainWayBuyWeekCard = 87 // 商城购买周卡 - GainWayVipBuyCoin = 88 // vip商城购买金币 - GainWaySign7Con = 89 // 累计签到进阶奖励消耗 - GainWay_PigrankGainDiamond = 90 //存钱罐打开获取钻石 - GainWaySign7Add = 91 // 累计签到进阶奖励获得 - GainWayItemChange = 92 //背包内使用道具兑换话费 - GainWayPetSkillLevelUp = 93 //宠物技能升级 - GainWayPermitAward = 94 // 赛季通行证等级奖励 - GainWayItemPermitRank = 95 // 赛季通行证排行奖励 - GainWayPermitExchangeCost = 96 // 赛季通行证兑换消耗 - GainWayPermitExchangeGain = 97 // 赛季通行证兑换获得 - GainWayItemTaskPermit = 98 // 赛季通行证任务 - GainWayDiamondLottery = 99 //钻石抽奖 - GainWaySkinUnLock = 100 // 皮肤解锁消耗 - GainWaySkinUpGrade = 101 // 皮肤升级消耗 - GainWayItemFen = 102 // 道具分解消耗 - GainWayItemFenGain = 103 // 道具分解获得 - GainWayGuide = 104 //新手引导奖励 - GainWayVipGift9 = 105 //vip等级礼包 - GainWayRoomCost = 106 //房费消耗 - GainWayRoomGain = 107 //房卡场获得 - GainWayItemShop = 108 // 交易市场道具交易 - GainWayClawdollCostItem = 109 // 娃娃机上分扣道具 - GainWayItemShopChangeDoll = 110 // 商城兑换娃娃 - GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃 - GainWayClawdollCatch = 112 // 娃娃机抓取到娃娃获取卡 - GainWayItemBagChangeDollRevocation = 113 //娃娃兑换后台撤销 - GainWayPermitReset = 114 //赛季通行证积分重置 - GainWayClientUpgrade = 115 //客户端升级奖励 - GainWayLottery = 116 //开奖码抽奖 - GainWayGuide2 = 117 // 竞技馆引导奖励 - GainWayCompound = 118 // 道具合成消耗 - GainWayCompoundGain = 119 // 道具合成获得 + GainWay_NewPlayer int32 = 0 //新建角色 + GainWay_Pay = 1 //后台增加(主要是充值) + GainWay_ByPMCmd = 2 //pm命令 + GainWay_MatchBreakBack = 3 //退赛退还 + GainWay_MatchSystemSupply = 4 //比赛奖励 + GainWay_Exchange = 5 //兑换 + GainWay_ServiceFee = 6 //桌费 + GainWay_CoinSceneWin = 7 //金豆场赢取 + GainWay_CoinSceneLost = 8 //金豆场输 + GainWay_CoinSceneEnter = 9 //进入金币场预扣 + GainWay_ShopBuy = 10 //商城购买或者兑换 + GainWay_CoinSceneLeave = 11 //金豆场回兑 + GainWay_HundredSceneWin = 12 //万人场赢取 + GainWay_HundredSceneLost = 13 //万人场输 + GainWay_MessageAttach = 14 //邮件 + GainWay_SafeBoxSave = 15 //保险箱存入 + GainWay_SafeBoxTakeOut = 16 //保险箱取出 + GainWay_Fishing = 17 //捕鱼 + GainWay_CoinSceneExchange = 18 //金豆场兑换 + GainWay_UpgradeAccount = 19 //升级账号 + GainWay_API_AddCoin = 20 //API操作钱包 + GainWay_GoldCome = 21 //财神降临 + GainWay_Transfer_System2Thrid = 22 //系统平台转入到第三方平台的金币 + GainWay_Transfer_Thrid2System = 23 //第三方平台转入到系统平台的金币 + GainWay_RebateTask = 24 //返利获取 + GainWay_IOSINSTALLSTABLE = 25 //ios安装奖励 + GainWay_VirtualChange = 26 //德州虚拟账变 + GainWay_CreatePrivateScene = 27 //创建私有房间 + GainWay_PrivateSceneReturn = 28 //解散私有房间返还 + GainWay_OnlineRandCoin = 29 //红包雨 + GainWay_Expire = 30 //到期清理 + GainWay_PromoterBind = 31 //手动绑定推广员 + GainWay_GradeShopReturn = 32 //积分商城撤单退还积分 + GainWay_Api_In = 33 //转移金币 + GainWay_Api_Out = 34 //转移金币 + GainWay_Shop_Buy = 35 //购买记录 + GainWay_MAIL_MTEM = 36 //邮件领取道具 + GainWay_Item_Sale = 37 //道具出售 + GainWay_ReliefFund = 38 //领取救济金 + GainWay_Shop_Revoke = 39 //撤单 + GainWay_ActSign = 40 // + GainWay_MatchSignup = 41 //比赛报名费用 + GainWay_MatchSeason = 42 //比赛赛季奖励 + GainWay_ActSignNew = 43 //新签到 + GainWay_ActTurnplate = 44 //轮盘 + GainWay_ActBlindBox = 45 //盲盒 + GainWay_ActFirstPay = 46 //首充 + GainWay_VIPGift = 47 //vip礼包 + GainWay_ActContinuousPay = 48 //连续充值 + GainWay_ActJybAward = 49 //礼包码兑换 + GainWay_LeaveDeduct = 50 //离开扣分 + GainWay_LeaveCombat = 51 //离开补偿 + GainWay_RankMatch = 52 //排位赛段位奖励 + GainWay_AddBag = 53 //增加背包接口调用 + GainWay_SmallRocket = 54 //小火箭收入 + GainWay_BindTel = 55 //绑定手机号 + GainWay_ReliefFund2 = 56 //救济金看视频双倍领取 + GainWay_ActTurnplate2 = 57 //轮盘看视频双倍领取 + GainWay_ActSignNew2 = 58 //签到看视频双倍领取 + GainWay_ItemUse = 59 //道具使用 + GainWay_PhoneScore = 60 //手机积分活动 + GainWay_RankReward = 61 //排位奖励 + GainWay_TaskReward = 62 //任务奖励 + GainWay_Interact = 63 //房间内互动效果 + GainWayItemCollectExchange = 64 //集卡活动兑换 + GainWay_WeekCardAward = 65 //周卡奖励 + GainWay_PigrankTakeCoin = 66 //存钱罐领取耗费钻石 + GainWay_PigrankGainCoin = 67 //存钱罐打开获取金币 + GainWay_ItemMove = 68 //道具赠送 + GainWay_RoleUpgrade = 69 //角色升级 + GainWay_PetUpgrade = 70 //宠物升级 + GainWay_Game = 71 //游戏掉落 + GainWayItemCollectLogin = 73 //集卡活动登录 + GainWay_Collect = 74 //集卡活动 + GainWayItemPhoneScoreExchange = 75 //抽手机活动兑换 + GainWayItemTaskInvite = 78 //邀请任务 + GainWayItemTaskNewPlayer = 79 //新手任务 + GainWayItemTaskAchievement = 80 //成就任务 + GainWayItemTaskEveryDay = 81 //每日任务 + GainWayItemWeekActive = 82 //周活跃奖励 + GainWayContinueSign = 83 //累计签到 + GainWayBackend = 84 // 后台操作 + GainWayBuyCoin = 85 // 商城购买金币 + GainWayBuyItem = 86 // 商城购买道具 + GainWayBuyWeekCard = 87 // 商城购买周卡 + GainWayVipBuyCoin = 88 // vip商城购买金币 + GainWaySign7Con = 89 // 累计签到进阶奖励消耗 + GainWay_PigrankGainDiamond = 90 //存钱罐打开获取钻石 + GainWaySign7Add = 91 // 累计签到进阶奖励获得 + GainWayItemChange = 92 //背包内使用道具兑换话费 + GainWayPetSkillLevelUp = 93 //宠物技能升级 + GainWayPermitAward = 94 // 赛季通行证等级奖励 + GainWayItemPermitRank = 95 // 赛季通行证排行奖励 + GainWayPermitExchangeCost = 96 // 赛季通行证兑换消耗 + GainWayPermitExchangeGain = 97 // 赛季通行证兑换获得 + GainWayItemTaskPermit = 98 // 赛季通行证任务 + GainWayDiamondLottery = 99 //钻石抽奖 + GainWaySkinUnLock = 100 // 皮肤解锁消耗 + GainWaySkinUpGrade = 101 // 皮肤升级消耗 + GainWayItemFen = 102 // 道具分解消耗 + GainWayItemFenGain = 103 // 道具分解获得 + GainWayGuide = 104 //新手引导奖励 + GainWayVipGift9 = 105 //vip等级礼包 + GainWayRoomCost = 106 //房费消耗 + GainWayRoomGain = 107 //房卡场获得 + GainWayItemShop = 108 // 交易市场道具交易 + GainWayClawdollCostItem = 109 // 娃娃机上分扣道具 + GainWayItemShopChangeDoll = 110 // 商城兑换娃娃 + GainWayItemBagChangeDoll = 111 // 背包内兑换娃娃 + GainWayClawdollCatch = 112 // 娃娃机抓取到娃娃获取卡 + GainWayItemBagChangeDollRevocation = 113 //娃娃兑换后台撤销 + GainWayPermitReset = 114 //赛季通行证积分重置 + GainWayClientUpgrade = 115 //客户端升级奖励 + GainWayLottery = 116 //开奖码抽奖 + GainWayGuide2 = 117 // 竞技馆引导奖励 + GainWayCompound = 118 // 道具合成消耗 + GainWayCompoundGain = 119 // 道具合成获得 + GainWayItem_PigBankTakeCoin = 120 // 购买金币存钱罐奖励道具 + GainWayItem_PigBankTakeDiamond = 121 // 购买钻石存钱罐奖励道具 + GainWayNianCost = 122 //年兽活动消耗 + GainWayNianGain_Attack_LittleGuarantee = 123 //年兽活动小爆竹攻击年兽获得保底奖励 + GainWayRedPacket = 124 // 红包奖励 + GainWayNianGain_Sign = 125 //年兽活动签到获得 + GainWayNianGain_Change = 126 //年兽活动兑换获得 + GainWayNianGain_BossDie = 127 //年兽活动Boss死亡获得 + GainWayNianGain_BossDieOther = 128 //年兽活动Boss死亡额外获得 + GainWayNianGain_Attack_BigOther = 129 //年兽活动大爆竹攻击年兽获得额外奖励 + GainWayNianGain_Attack_BigGuarantee = 130 //年兽活动大爆竹攻击年兽获得保底奖励 + GainWayNianGain_Attack_Coin = 131 //攻击年兽获得金币奖励 + GainWayNianGain_EveryDayTask = 132 //年兽活动每日任务 + GainWayNianGain_Task = 133 //年兽活动任务 + GainWayConsume = 134 //累消活动获得 + GainWayPushCoinExchangeCost = 135 // 推币机兑换消耗 + GainWatPushCoinExchangeGain = 136 // 推币机兑换获得 + GainWayPushCoinGain = 137 // 推币机掉落获得 + GainWayPushCoinCost = 138 // 推币机消耗 ) // 后台选择 金币变化类型 的充值 类型id号起始 @@ -560,27 +581,35 @@ const ( // 道具ID const ( - ItemIDCoin = 100001 // 金币对应的itemId - ItemIDDiamond = 100002 // 钻石对应的itemId - ItemIDMoneyPond = 100003 // 玩家金币池对应物品Id - ItemIDVipExp = 100005 // VIP经验对应的物品Id - ItemIDPhoneScore = 100006 // 手机抽奖积分 - ItemIDWeekScore = 100004 // 周活跃积分 - ItemIDGiftBox = 50001 // 碎片礼盒 - ItemIDCollectBox = 50002 // 集卡礼盒 - ItemIDLike = 100007 // 点赞 - ItemIDCoffee = 100008 // 咖啡 - ItemIDBucket = 100009 // 水桶 - ItemIDSlippers = 100010 // 拖鞋 - ItemIDPermit = 100011 // 赛季通行证积分 - ItemIDLong = 50013 // 龙币 - ItemIDPetSkill = 11001 //宠物技能升级道具 - ItemIDVCard = 30001 // v卡 - ItemIDJCard = 30002 // 金券 - ItemDiamondScore = 100012 //钻石积分 - ItemIDClawdoll = 40003 // 娃娃卡 - ItemDollCard = 40004 // 娃娃卡积分 - ItemIDRoomCard = 40002 // 房卡 + ItemIDCoin = 100001 // 金币对应的itemId + ItemIDDiamond = 100002 // 钻石对应的itemId + ItemIDMoneyPond = 100003 // 玩家金币池对应物品Id + ItemIDVipExp = 100005 // VIP经验对应的物品Id + ItemIDPhoneScore = 100006 // 手机抽奖积分 + ItemIDWeekScore = 100004 // 周活跃积分 + ItemIDGiftBox = 50001 // 碎片礼盒 + ItemIDCollectBox = 50002 // 集卡礼盒 + ItemIDLike = 100007 // 点赞 + ItemIDCoffee = 100008 // 咖啡 + ItemIDBucket = 100009 // 水桶 + ItemIDSlippers = 100010 // 拖鞋 + ItemIDPermit = 100011 // 赛季通行证积分 + ItemIDLong = 50013 // 龙币 + ItemIDPetSkill = 11001 //宠物技能升级道具 + ItemIDVCard = 30001 // v卡 + ItemIDJCard = 30002 // 金券 + ItemDiamondScore = 100012 //钻石积分 + ItemIDClawdoll = 40003 // 娃娃卡 + ItemDollCard = 40004 // 娃娃卡积分 + ItemIDRoomCard = 40002 // 房卡 + ItemIDLittleGuaranteed = 50014 //小爆竹 + ItemIDBigGuaranteed = 50015 //大爆竹 + ItemIDPlum = 50016 //梅花(推币机) + ItemIDBigCoin = 50017 //大金币 + ItemIDCoin1 = 50018 //金币1 + ItemIDCoin2 = 50019 //金币2 + ItemIDCoin3 = 50020 //金币3 + ItemIDShake = 50021 //震动效果 ) func ToItemId(id int32) int32 { @@ -692,6 +721,10 @@ const ( TaskTypeTienlenWinCoin = 29 // Tienlen赢取金币数量 TaskTypeRankMatchWinTimes = 30 // 排位胜利次数 TaskTypeBuyPermit = 31 // 购买典藏通行证 + TaskTypeBuyRedBag = 32 // 参与红包雨活动 + TaskTypeNianBossKill = 33 // 击杀年兽 + TaskTypeNianBossDamage = 34 // 年兽造成伤害 + TaskTypeNianSign = 35 // 年兽签到 ) const ( @@ -702,13 +735,16 @@ const ( ) const ( - TaskActivityTypeEveryDay = 1 // 每日任务 - TaskActivityTypeWeek = 2 // 每周任务 - TaskActivityTypeNovice = 3 // 新手任务 - TaskActivityTypeInvite = 4 // 邀请任务 - TaskActivityTypeAchieve = 5 // 成就任务 - TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务 - TaskActivityTypePermit = 7 // 赛季通行证任务 + TaskActivityTypeEveryDay = 1 // 每日任务 + TaskActivityTypeWeek = 2 // 每周任务 + TaskActivityTypeNovice = 3 // 新手任务 + TaskActivityTypeInvite = 4 // 邀请任务 + TaskActivityTypeAchieve = 5 // 成就任务 + TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务 + TaskActivityTypePermit = 7 // 赛季通行证任务 + TaskActivityTypeNianEveryDay = 8 // 年兽每日任务 + TaskActivityTypeNian = 9 // 活动期间年兽任务 + TaskActivityTypeConsume = 10 // 累计消耗活动任务 ) const HeadRange = 3 // 机器人头像id范围 @@ -772,11 +808,15 @@ const ( var PetIDs = []int32{PetIDChicken} const ( - ChannelSwitchExchange = 1 // 兑换商城开关 - ChannelSwitchDropItem = 2 // v卡掉落开关 - ChannelSwitchInvite = 3 // 邀请开关 - ChannelSwitchPermit = 4 // 典藏通行证开关 - ChannelSwitchDiamondLottery = 5 // 钻石抽奖开关 + ChannelSwitchExchange = 1 // 兑换商城开关 + ChannelSwitchDropItem = 2 // v卡掉落开关 + ChannelSwitchInvite = 3 // 邀请开关 + ChannelSwitchPermit = 4 // 典藏通行证开关 + ChannelSwitchDiamondLottery = 5 // 钻石抽奖开关 + ChannelSwitchItemRecExpire = 8 // 记牌器开关 + ChannelSwitchPigBankCoin = 13 // 金币存钱罐开关 + ChannelSwitchPigBankDiamond = 14 // 钻石存钱罐开关 + ) // 特殊商品id diff --git a/common/time_test.go b/common/time_test.go index a2a0b77..a21dd83 100644 --- a/common/time_test.go +++ b/common/time_test.go @@ -127,3 +127,11 @@ func TestInSameWeek(t *testing.T) { } } } + +func TestStrTimeToTime(t *testing.T) { + t1 := StrRFC3339TimeToTime("2016-05-17 15:12:15") + if t1.IsZero() { + t.Fatal("StrTimeToTime(2016-05-17 15:12:15) expect result is not zero") + } + t.Log(t1) +} diff --git a/dao/internal/red_packet.go b/dao/internal/red_packet.go new file mode 100644 index 0000000..3cee7c1 --- /dev/null +++ b/dao/internal/red_packet.go @@ -0,0 +1,277 @@ +// -------------------------------------------------------------------------------------------- +// The following code is automatically generated by the mongo-dao-generator tool. +// Please do not modify this code manually to avoid being overwritten in the next generation. +// For more tool details, please click the link to view https://github.com/dobyte/mongo-dao-generator +// -------------------------------------------------------------------------------------------- + +package internal + +import ( + "context" + "errors" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + modelpkg "mongo.games.com/game/model" +) + +type RedPacketFilterFunc func(cols *RedPacketColumns) interface{} +type RedPacketUpdateFunc func(cols *RedPacketColumns) interface{} +type RedPacketPipelineFunc func(cols *RedPacketColumns) interface{} +type RedPacketCountOptionsFunc func(cols *RedPacketColumns) *options.CountOptions +type RedPacketAggregateOptionsFunc func(cols *RedPacketColumns) *options.AggregateOptions +type RedPacketFindOneOptionsFunc func(cols *RedPacketColumns) *options.FindOneOptions +type RedPacketFindManyOptionsFunc func(cols *RedPacketColumns) *options.FindOptions +type RedPacketUpdateOptionsFunc func(cols *RedPacketColumns) *options.UpdateOptions +type RedPacketDeleteOptionsFunc func(cols *RedPacketColumns) *options.DeleteOptions +type RedPacketInsertOneOptionsFunc func(cols *RedPacketColumns) *options.InsertOneOptions +type RedPacketInsertManyOptionsFunc func(cols *RedPacketColumns) *options.InsertManyOptions + +type RedPacket struct { + Columns *RedPacketColumns + Database *mongo.Database + Collection *mongo.Collection +} + +type RedPacketColumns struct { + ID string + Cid string // 红包活动id + Use string // 已发红包 红包奖励数量:已发个数 + Ts string // 更新时间戳 +} + +var redPacketColumns = &RedPacketColumns{ + ID: "_id", + Cid: "cid", // 红包活动id + Use: "use", // 已发红包 红包奖励数量:已发个数 + Ts: "ts", // 更新时间戳 +} + +func NewRedPacket() *RedPacket { + return &RedPacket{ + Columns: redPacketColumns, + } +} + +// Count returns the number of documents in the collection. +func (dao *RedPacket) Count(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketCountOptionsFunc) (int64, error) { + var ( + opts *options.CountOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.CountDocuments(ctx, filter, opts) +} + +// Aggregate executes an aggregate command against the collection and returns a cursor over the resulting documents. +func (dao *RedPacket) Aggregate(ctx context.Context, pipelineFunc RedPacketPipelineFunc, optionsFunc ...RedPacketAggregateOptionsFunc) (*mongo.Cursor, error) { + var ( + opts *options.AggregateOptions + pipeline = pipelineFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.Aggregate(ctx, pipeline, opts) +} + +// InsertOne executes an insert command to insert a single document into the collection. +func (dao *RedPacket) InsertOne(ctx context.Context, model *modelpkg.RedPacket, optionsFunc ...RedPacketInsertOneOptionsFunc) (*mongo.InsertOneResult, error) { + if model == nil { + return nil, errors.New("model is nil") + } + + if err := dao.autofill(ctx, model); err != nil { + return nil, err + } + + var opts *options.InsertOneOptions + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.InsertOne(ctx, model, opts) +} + +// InsertMany executes an insert command to insert multiple documents into the collection. +func (dao *RedPacket) InsertMany(ctx context.Context, models []*modelpkg.RedPacket, optionsFunc ...RedPacketInsertManyOptionsFunc) (*mongo.InsertManyResult, error) { + if len(models) == 0 { + return nil, errors.New("models is empty") + } + + documents := make([]interface{}, 0, len(models)) + for i := range models { + model := models[i] + if err := dao.autofill(ctx, model); err != nil { + return nil, err + } + documents = append(documents, model) + } + + var opts *options.InsertManyOptions + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.InsertMany(ctx, documents, opts) +} + +// UpdateOne executes an update command to update at most one document in the collection. +func (dao *RedPacket) UpdateOne(ctx context.Context, filterFunc RedPacketFilterFunc, updateFunc RedPacketUpdateFunc, optionsFunc ...RedPacketUpdateOptionsFunc) (*mongo.UpdateResult, error) { + var ( + opts *options.UpdateOptions + filter = filterFunc(dao.Columns) + update = updateFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.UpdateOne(ctx, filter, update, opts) +} + +// UpdateOneByID executes an update command to update at most one document in the collection. +func (dao *RedPacket) UpdateOneByID(ctx context.Context, id string, updateFunc RedPacketUpdateFunc, optionsFunc ...RedPacketUpdateOptionsFunc) (*mongo.UpdateResult, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.UpdateOne(ctx, func(cols *RedPacketColumns) interface{} { + return bson.M{"_id": objectID} + }, updateFunc, optionsFunc...) +} + +// UpdateMany executes an update command to update documents in the collection. +func (dao *RedPacket) UpdateMany(ctx context.Context, filterFunc RedPacketFilterFunc, updateFunc RedPacketUpdateFunc, optionsFunc ...RedPacketUpdateOptionsFunc) (*mongo.UpdateResult, error) { + var ( + opts *options.UpdateOptions + filter = filterFunc(dao.Columns) + update = updateFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.UpdateMany(ctx, filter, update, opts) +} + +// FindOne executes a find command and returns a model for one document in the collection. +func (dao *RedPacket) FindOne(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketFindOneOptionsFunc) (*modelpkg.RedPacket, error) { + var ( + opts *options.FindOneOptions + model = &modelpkg.RedPacket{} + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + err := dao.Collection.FindOne(ctx, filter, opts).Decode(model) + if err != nil { + if err == mongo.ErrNoDocuments { + return nil, nil + } + return nil, err + } + + return model, nil +} + +// FindOneByID executes a find command and returns a model for one document in the collection. +func (dao *RedPacket) FindOneByID(ctx context.Context, id string, optionsFunc ...RedPacketFindOneOptionsFunc) (*modelpkg.RedPacket, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.FindOne(ctx, func(cols *RedPacketColumns) interface{} { + return bson.M{"_id": objectID} + }, optionsFunc...) +} + +// FindMany executes a find command and returns many models the matching documents in the collection. +func (dao *RedPacket) FindMany(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketFindManyOptionsFunc) ([]*modelpkg.RedPacket, error) { + var ( + opts *options.FindOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + cur, err := dao.Collection.Find(ctx, filter, opts) + if err != nil { + return nil, err + } + + models := make([]*modelpkg.RedPacket, 0) + + if err = cur.All(ctx, &models); err != nil { + return nil, err + } + + return models, nil +} + +// DeleteOne executes a delete command to delete at most one document from the collection. +func (dao *RedPacket) DeleteOne(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketDeleteOptionsFunc) (*mongo.DeleteResult, error) { + var ( + opts *options.DeleteOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.DeleteOne(ctx, filter, opts) +} + +// DeleteOneByID executes a delete command to delete at most one document from the collection. +func (dao *RedPacket) DeleteOneByID(ctx context.Context, id string, optionsFunc ...RedPacketDeleteOptionsFunc) (*mongo.DeleteResult, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.DeleteOne(ctx, func(cols *RedPacketColumns) interface{} { + return bson.M{"_id": objectID} + }, optionsFunc...) +} + +// DeleteMany executes a delete command to delete documents from the collection. +func (dao *RedPacket) DeleteMany(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketDeleteOptionsFunc) (*mongo.DeleteResult, error) { + var ( + opts *options.DeleteOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.DeleteMany(ctx, filter, opts) +} + +// autofill when inserting data +func (dao *RedPacket) autofill(ctx context.Context, model *modelpkg.RedPacket) error { + if model.ID.IsZero() { + model.ID = primitive.NewObjectID() + } + + return nil +} diff --git a/dao/internal/red_packet_history.go b/dao/internal/red_packet_history.go new file mode 100644 index 0000000..b87040d --- /dev/null +++ b/dao/internal/red_packet_history.go @@ -0,0 +1,283 @@ +// -------------------------------------------------------------------------------------------- +// The following code is automatically generated by the mongo-dao-generator tool. +// Please do not modify this code manually to avoid being overwritten in the next generation. +// For more tool details, please click the link to view https://github.com/dobyte/mongo-dao-generator +// -------------------------------------------------------------------------------------------- + +package internal + +import ( + "context" + "errors" + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + modelpkg "mongo.games.com/game/model" +) + +type RedPacketHistoryFilterFunc func(cols *RedPacketHistoryColumns) interface{} +type RedPacketHistoryUpdateFunc func(cols *RedPacketHistoryColumns) interface{} +type RedPacketHistoryPipelineFunc func(cols *RedPacketHistoryColumns) interface{} +type RedPacketHistoryCountOptionsFunc func(cols *RedPacketHistoryColumns) *options.CountOptions +type RedPacketHistoryAggregateOptionsFunc func(cols *RedPacketHistoryColumns) *options.AggregateOptions +type RedPacketHistoryFindOneOptionsFunc func(cols *RedPacketHistoryColumns) *options.FindOneOptions +type RedPacketHistoryFindManyOptionsFunc func(cols *RedPacketHistoryColumns) *options.FindOptions +type RedPacketHistoryUpdateOptionsFunc func(cols *RedPacketHistoryColumns) *options.UpdateOptions +type RedPacketHistoryDeleteOptionsFunc func(cols *RedPacketHistoryColumns) *options.DeleteOptions +type RedPacketHistoryInsertOneOptionsFunc func(cols *RedPacketHistoryColumns) *options.InsertOneOptions +type RedPacketHistoryInsertManyOptionsFunc func(cols *RedPacketHistoryColumns) *options.InsertManyOptions + +type RedPacketHistory struct { + Columns *RedPacketHistoryColumns + Database *mongo.Database + Collection *mongo.Collection +} + +type RedPacketHistoryColumns struct { + Platform string // 平台 + ID string + Cid string // 红包活动id + Snid string // 玩家id + Ts string // 时间戳 + ItemId string // 道具id + ItemNum string // 道具数量 +} + +var redPacketHistoryColumns = &RedPacketHistoryColumns{ + Platform: "-", // 平台 + ID: "_id", + Cid: "cid", // 红包活动id + Snid: "snid", // 玩家id + Ts: "ts", // 时间戳 + ItemId: "itemid", // 道具id + ItemNum: "itemnum",// 道具数量 +} + +func NewRedPacketHistory() *RedPacketHistory { + return &RedPacketHistory{ + Columns: redPacketHistoryColumns, + } +} + +// Count returns the number of documents in the collection. +func (dao *RedPacketHistory) Count(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryCountOptionsFunc) (int64, error) { + var ( + opts *options.CountOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.CountDocuments(ctx, filter, opts) +} + +// Aggregate executes an aggregate command against the collection and returns a cursor over the resulting documents. +func (dao *RedPacketHistory) Aggregate(ctx context.Context, pipelineFunc RedPacketHistoryPipelineFunc, optionsFunc ...RedPacketHistoryAggregateOptionsFunc) (*mongo.Cursor, error) { + var ( + opts *options.AggregateOptions + pipeline = pipelineFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.Aggregate(ctx, pipeline, opts) +} + +// InsertOne executes an insert command to insert a single document into the collection. +func (dao *RedPacketHistory) InsertOne(ctx context.Context, model *modelpkg.RedPacketHistory, optionsFunc ...RedPacketHistoryInsertOneOptionsFunc) (*mongo.InsertOneResult, error) { + if model == nil { + return nil, errors.New("model is nil") + } + + if err := dao.autofill(ctx, model); err != nil { + return nil, err + } + + var opts *options.InsertOneOptions + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.InsertOne(ctx, model, opts) +} + +// InsertMany executes an insert command to insert multiple documents into the collection. +func (dao *RedPacketHistory) InsertMany(ctx context.Context, models []*modelpkg.RedPacketHistory, optionsFunc ...RedPacketHistoryInsertManyOptionsFunc) (*mongo.InsertManyResult, error) { + if len(models) == 0 { + return nil, errors.New("models is empty") + } + + documents := make([]interface{}, 0, len(models)) + for i := range models { + model := models[i] + if err := dao.autofill(ctx, model); err != nil { + return nil, err + } + documents = append(documents, model) + } + + var opts *options.InsertManyOptions + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.InsertMany(ctx, documents, opts) +} + +// UpdateOne executes an update command to update at most one document in the collection. +func (dao *RedPacketHistory) UpdateOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) { + var ( + opts *options.UpdateOptions + filter = filterFunc(dao.Columns) + update = updateFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.UpdateOne(ctx, filter, update, opts) +} + +// UpdateOneByID executes an update command to update at most one document in the collection. +func (dao *RedPacketHistory) UpdateOneByID(ctx context.Context, id string, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.UpdateOne(ctx, func(cols *RedPacketHistoryColumns) interface{} { + return bson.M{"_id": objectID} + }, updateFunc, optionsFunc...) +} + +// UpdateMany executes an update command to update documents in the collection. +func (dao *RedPacketHistory) UpdateMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) { + var ( + opts *options.UpdateOptions + filter = filterFunc(dao.Columns) + update = updateFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.UpdateMany(ctx, filter, update, opts) +} + +// FindOne executes a find command and returns a model for one document in the collection. +func (dao *RedPacketHistory) FindOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryFindOneOptionsFunc) (*modelpkg.RedPacketHistory, error) { + var ( + opts *options.FindOneOptions + model = &modelpkg.RedPacketHistory{} + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + err := dao.Collection.FindOne(ctx, filter, opts).Decode(model) + if err != nil { + if err == mongo.ErrNoDocuments { + return nil, nil + } + return nil, err + } + + return model, nil +} + +// FindOneByID executes a find command and returns a model for one document in the collection. +func (dao *RedPacketHistory) FindOneByID(ctx context.Context, id string, optionsFunc ...RedPacketHistoryFindOneOptionsFunc) (*modelpkg.RedPacketHistory, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.FindOne(ctx, func(cols *RedPacketHistoryColumns) interface{} { + return bson.M{"_id": objectID} + }, optionsFunc...) +} + +// FindMany executes a find command and returns many models the matching documents in the collection. +func (dao *RedPacketHistory) FindMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryFindManyOptionsFunc) ([]*modelpkg.RedPacketHistory, error) { + var ( + opts *options.FindOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + cur, err := dao.Collection.Find(ctx, filter, opts) + if err != nil { + return nil, err + } + + models := make([]*modelpkg.RedPacketHistory, 0) + + if err = cur.All(ctx, &models); err != nil { + return nil, err + } + + return models, nil +} + +// DeleteOne executes a delete command to delete at most one document from the collection. +func (dao *RedPacketHistory) DeleteOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) { + var ( + opts *options.DeleteOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.DeleteOne(ctx, filter, opts) +} + +// DeleteOneByID executes a delete command to delete at most one document from the collection. +func (dao *RedPacketHistory) DeleteOneByID(ctx context.Context, id string, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) { + objectID, err := primitive.ObjectIDFromHex(id) + if err != nil { + return nil, err + } + + return dao.DeleteOne(ctx, func(cols *RedPacketHistoryColumns) interface{} { + return bson.M{"_id": objectID} + }, optionsFunc...) +} + +// DeleteMany executes a delete command to delete documents from the collection. +func (dao *RedPacketHistory) DeleteMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) { + var ( + opts *options.DeleteOptions + filter = filterFunc(dao.Columns) + ) + + if len(optionsFunc) > 0 { + opts = optionsFunc[0](dao.Columns) + } + + return dao.Collection.DeleteMany(ctx, filter, opts) +} + +// autofill when inserting data +func (dao *RedPacketHistory) autofill(ctx context.Context, model *modelpkg.RedPacketHistory) error { + if model.ID.IsZero() { + model.ID = primitive.NewObjectID() + } + + return nil +} diff --git a/dao/red_packet.go b/dao/red_packet.go new file mode 100644 index 0000000..3753428 --- /dev/null +++ b/dao/red_packet.go @@ -0,0 +1,88 @@ +package dao + +import ( + "context" + "errors" + + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/mongox" + + "mongo.games.com/game/dao/internal" + modelpkg "mongo.games.com/game/model" +) + +var ( + _ = context.Background() + _ = logger.Logger + _ = bson.M{} + _ = mongo.Database{} +) + +type RedPacketColumns = internal.RedPacketColumns + +type RedPacket struct { + *internal.RedPacket +} + +func GetRedPacket(key string) (*RedPacket, error) { + return mongox.GetDao(key, NewRedPacket) +} + +func NewRedPacket(db *mongo.Database, c *mongo.Collection) (*RedPacket, any) { + if db == nil || c == nil { + return &RedPacket{}, &modelpkg.RedPacket{} + } + + v := internal.NewRedPacket() + v.Database = db + v.Collection = c + + // 创建索引 + c.Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{{"cid", 1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }) + c.Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{{"ts", 1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }) + c.Indexes().CreateOne(context.Background(), mongo.IndexModel{ + Keys: bson.D{{"ts", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }) + + return &RedPacket{RedPacket: v}, &modelpkg.RedPacket{} +} + +func (r *RedPacket) GetAll() (res []*modelpkg.RedPacket, err error) { + res, err = r.FindMany(context.Background(), func(cols *RedPacketColumns) interface{} { + return bson.M{} + }) + if err != nil && !errors.Is(err, mongo.ErrNoDocuments) { + return nil, err + } + + return res, nil +} + +func (r *RedPacket) UpdateAll(list []*modelpkg.RedPacket) error { + var operations []mongo.WriteModel + for _, v := range list { + updateDataMap := bson.M{ + "$set": v, + } + delete(updateDataMap["$set"].(bson.M), "_id") // 删除 _id 字段 + operations = append(operations, mongo.NewUpdateOneModel().SetFilter(bson.M{"_id": v.ID}).SetUpdate(bson.M{"$set": v}).SetUpsert(true)) + } + + _, err := r.Collection.BulkWrite(context.Background(), operations) // 批量更新 + if err != nil { + logger.Logger.Errorf("RedPacket.UpdateAll error: %v", err) + return err + } + + return nil +} diff --git a/dao/red_packet_history.go b/dao/red_packet_history.go new file mode 100644 index 0000000..d4aa21d --- /dev/null +++ b/dao/red_packet_history.go @@ -0,0 +1,95 @@ +package dao + +import ( + "context" + + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/mongox" + + "mongo.games.com/game/dao/internal" + modelpkg "mongo.games.com/game/model" +) + +var ( + _ = context.Background() + _ = logger.Logger + _ = bson.M{} + _ = mongo.Database{} +) + +type RedPacketHistoryColumns = internal.RedPacketHistoryColumns + +type RedPacketHistory struct { + *internal.RedPacketHistory +} + +func GetRedPacketHistory(key string) (*RedPacketHistory, error) { + return mongox.GetDao(key, NewRedPacketHistory) +} + +func NewRedPacketHistory(db *mongo.Database, c *mongo.Collection) (*RedPacketHistory, any) { + if db == nil || c == nil { + return &RedPacketHistory{}, &modelpkg.RedPacketHistory{} + } + + v := internal.NewRedPacketHistory() + v.Database = db + v.Collection = c + c.Indexes().CreateMany(context.Background(), []mongo.IndexModel{ + { + Keys: bson.D{{"snid", 1}, {"cid", 1}, {"ts", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"snid", 1}, {"ts", -1}}, + Options: options.Index().SetBackground(true).SetSparse(true), + }, + { + Keys: bson.D{{"cid", 1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"ts", 1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"itemid", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + { + Keys: bson.D{{"itemnum", -1}}, // 1 表示升序,-1 表示降序 + Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引 + }, + }) + + return &RedPacketHistory{RedPacketHistory: v}, &modelpkg.RedPacketHistory{} +} + +func (r *RedPacketHistory) GetHistory(snid int32, cid int64) ([]*modelpkg.RedPacketHistory, error) { + res, err := r.FindMany(context.Background(), func(cols *internal.RedPacketHistoryColumns) interface{} { + if cid > 0 { + return bson.M{cols.Snid: snid, cols.Cid: cid} + } + return bson.M{cols.Snid: snid} + }, func(cols *internal.RedPacketHistoryColumns) *options.FindOptions { + return options.Find().SetSort(bson.D{{cols.Ts, -1}}).SetLimit(30) + }) + if err != nil { + logger.Logger.Error("RedPacketHistory.GetHistory ", err) + return nil, err + } + + return res, err +} + +func (r *RedPacketHistory) Save(history *modelpkg.RedPacketHistory) error { + _, err := r.InsertOne(context.Background(), history) + if err != nil { + logger.Logger.Error("RedPacketHistory.Insert ", err) + return err + } + return nil +} diff --git a/data/DB_ACTPushCoin.dat b/data/DB_ACTPushCoin.dat new file mode 100644 index 0000000..b8d081d --- /dev/null +++ b/data/DB_ACTPushCoin.dat @@ -0,0 +1,11 @@ + +  + + І +  +  N + І +  + І +  + d / \ No newline at end of file diff --git a/data/DB_ACTPushCoin.json b/data/DB_ACTPushCoin.json new file mode 100644 index 0000000..7910aa7 --- /dev/null +++ b/data/DB_ACTPushCoin.json @@ -0,0 +1,76 @@ +{ + "Arr": [ + { + "Id": 1, + "Rate": 4000, + "Gain": { + "50018": 5 + }, + "Value": 25000 + }, + { + "Id": 2, + "Rate": 1000, + "Gain": { + "50018": 10 + }, + "Value": 50000 + }, + { + "Id": 3, + "Rate": 450, + "Gain": { + "50018": 20 + }, + "Value": 100000 + }, + { + "Id": 4, + "Rate": 1500, + "Gain": { + "30001": 1 + }, + "Value": 10000 + }, + { + "Id": 5, + "Rate": 750, + "Gain": { + "30001": 5 + }, + "Value": 50000 + }, + { + "Id": 6, + "Rate": 250, + "Gain": { + "100002": 1 + }, + "Value": 100000 + }, + { + "Id": 7, + "Rate": 1000, + "Gain": { + "50017": 1 + }, + "Value": 50000 + }, + { + "Id": 8, + "Rate": 950, + "Gain": { + "50016": 1 + }, + "Value": 30000 + }, + { + "Id": 9, + "Rate": 100, + "Gain": { + "30011": 1 + }, + "Value": 100000000 + } + ] +} \ No newline at end of file diff --git a/data/DB_GameFree.dat b/data/DB_GameFree.dat index 752e96a..abdae44 100644 Binary files a/data/DB_GameFree.dat and b/data/DB_GameFree.dat differ diff --git a/data/DB_GameFree.json b/data/DB_GameFree.json index b0d59b6..8fd2e2f 100644 --- a/data/DB_GameFree.json +++ b/data/DB_GameFree.json @@ -4520,7 +4520,7 @@ { "Id": 2110001, "Name": "十三张四人", - "Title": "1", + "Title": "新手场", "GameId": 211, "GameRule": 21100, "GameType": 2, @@ -4574,7 +4574,7 @@ { "Id": 2110002, "Name": "十三张四人", - "Title": "2", + "Title": "中级场", "GameId": 211, "GameRule": 21100, "GameType": 2, @@ -4628,7 +4628,7 @@ { "Id": 2110003, "Name": "十三张四人", - "Title": "3", + "Title": "高级场", "GameId": 211, "GameRule": 21100, "GameType": 2, @@ -4682,7 +4682,7 @@ { "Id": 2110004, "Name": "十三张四人", - "Title": "4", + "Title": "富豪场", "GameId": 211, "GameRule": 21100, "GameType": 2, @@ -4736,7 +4736,7 @@ { "Id": 2110005, "Name": "十三张四人", - "Title": "5", + "Title": "至尊场", "GameId": 211, "GameRule": 21100, "GameType": 2, @@ -4790,7 +4790,7 @@ { "Id": 2110006, "Name": "十三张四人", - "Title": "6", + "Title": "大神场", "GameId": 211, "GameRule": 21100, "GameType": 2, @@ -4843,7 +4843,7 @@ { "Id": 2120001, "Name": "十三张八人", - "Title": "1", + "Title": "新手场", "GameId": 212, "GameRule": 21200, "GameType": 2, @@ -4897,7 +4897,7 @@ { "Id": 2120002, "Name": "十三张八人", - "Title": "2", + "Title": "中级场", "GameId": 212, "GameRule": 21200, "GameType": 2, @@ -4951,7 +4951,7 @@ { "Id": 2120003, "Name": "十三张八人", - "Title": "3", + "Title": "高级场", "GameId": 212, "GameRule": 21200, "GameType": 2, @@ -5005,7 +5005,7 @@ { "Id": 2120004, "Name": "十三张八人", - "Title": "4", + "Title": "富豪场", "GameId": 212, "GameRule": 21200, "GameType": 2, @@ -5059,7 +5059,7 @@ { "Id": 2120005, "Name": "十三张八人", - "Title": "5", + "Title": "至尊场", "GameId": 212, "GameRule": 21200, "GameType": 2, @@ -5113,7 +5113,7 @@ { "Id": 2120006, "Name": "十三张八人", - "Title": "6", + "Title": "大神场", "GameId": 212, "GameRule": 21200, "GameType": 2, @@ -7019,6 +7019,41 @@ "PlayerWaterRate": 100, "BetWaterRate": 100, "GameName": "娃娃机" + }, + { + "Id": 6090001, + "Name": "推币机", + "Title": "推币机", + "GameId": 609, + "GameRule": 60900, + "GameType": 5, + "SceneType": 1, + "Desc": "0", + "ShowType": 3, + "ShowId": 60900, + "Turn": 60900, + "BetDec": "0", + "Ai": [ + 0 + ], + "OtherIntParams": [ + 5000, + 10000, + 15000 + ], + "RobotNumRng": [ + 0 + ], + "SameIpLimit": 1, + "GameDif": "609", + "GameClass": 2, + "PlatformName": "越南棋牌", + "MaxBetCoin": [ + 0 + ], + "PlayerWaterRate": 100, + "BetWaterRate": 100, + "GameName": "推币机" } ] } \ No newline at end of file diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 4c96186..6148338 100644 Binary files a/data/DB_GameItem.dat and b/data/DB_GameItem.dat differ diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index c7bfc88..b19ba17 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -7226,6 +7226,302 @@ "CompositionMax": 1, "Location": "0", "Describe": "作用:用于报名特殊钻石赛事;\n产出途径:存钱罐" + }, + { + "Id": 50014, + "Name": "爆竹", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 28, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可在年兽活动中击退年兽,获得奖品" + }, + { + "Id": 50015, + "Name": "火箭爆竹", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 28, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可在年兽活动中击退年兽,获得奖品" + }, + { + "Id": 50016, + "Name": "梅花", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "可在推币机活动兑换道具" + }, + { + "Id": 50017, + "Name": "大金币", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "推币机活动中掉落的3D道具", + "Num": 50000 + }, + { + "Id": 50018, + "Name": "3D金币5K", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "推币机活动中掉落的3D道具", + "Num": 5000 + }, + { + "Id": 50019, + "Name": "3D金币10K", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "推币机活动中掉落的3D道具", + "Num": 10000 + }, + { + "Id": 50020, + "Name": "3D金币15K", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "SaleType": 1, + "SaleGold": 5000, + "Composition": 1, + "CompositionMax": 9999, + "Location": "0", + "Describe": "推币机活动中掉落的3D道具", + "Num": 15000 + }, + { + "Id": 50021, + "Name": "震动效果", + "ShowLocation": [ + 0, + 0, + 0 + ], + "Classify": [ + 0, + 0, + 0 + ], + "Type": 29, + "Effect0": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Effect": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Location": "0", + "Describe": "推币机震动次数" } ] } \ No newline at end of file diff --git a/data/DB_GameRule.dat b/data/DB_GameRule.dat index 5377feb..866c20c 100644 Binary files a/data/DB_GameRule.dat and b/data/DB_GameRule.dat differ diff --git a/data/DB_GameRule.json b/data/DB_GameRule.json index 4860e87..eacbcca 100644 --- a/data/DB_GameRule.json +++ b/data/DB_GameRule.json @@ -267,6 +267,12 @@ "Name": "娃娃机", "GameId": 608, "GameDif": "608" + }, + { + "Id": 60900, + "Name": "推币机", + "GameId": 609, + "GameDif": "609" } ] } \ No newline at end of file diff --git a/data/DB_GiftCard.dat b/data/DB_GiftCard.dat index 1560036..96640b0 100644 Binary files a/data/DB_GiftCard.dat and b/data/DB_GiftCard.dat differ diff --git a/data/DB_NewYearActivity.dat b/data/DB_NewYearActivity.dat new file mode 100644 index 0000000..bf7a14a --- /dev/null +++ b/data/DB_NewYearActivity.dat @@ -0,0 +1,29 @@ + +4 +SignReward50014,10;100001,100000" 签到奖励 +. SignExcReward50015,1"签到额外奖励 +=SignExcRewardMax2"$签到额外奖励赠送次数上限 +9SignExcRewardProp30"签到额外奖励赠送概率 + BossExp6800000" +BOSS血量 +: +BossReward100001,1000000;100002,10"BOSS击杀奖励 +/ LuckyRankNeed10000"幸运榜上榜条件 +/RankNeed7000000"总伤害榜上榜条件 +> LittleHurtGold +8000,12000"小爆竹造成的伤害范围 +> + BigHurtGold 400000,600000"大爆竹造成的伤害范围 +4  +BigHurtExc30001"大爆竹额外掉落道具ID += BigHurtExcNumber3,15"!大爆竹额外掉落数量范围 +5 LittleGuaranteed30"小爆竹保底掉落次数 +ALittleGuaranteedReward100002,5"小爆竹保底掉落物品 +2 BigGuaranteed10"大爆竹保底掉落次数 +>BigGuaranteedReward30001,80"大爆竹保底掉落物品 +. +GiftShopID991001,991002,991003"礼包ID +@ GiftShopLimit3,0,0"&礼包每日限购次数,0为不限购 +4 BossExcLimit30"年兽死亡额外掉落要求 +" BuffCount1"Buff生效次数 +oExchangeDiamond 30,5,1500000"L单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量 \ No newline at end of file diff --git a/data/DB_NewYearActivity.json b/data/DB_NewYearActivity.json new file mode 100644 index 0000000..5005b8a --- /dev/null +++ b/data/DB_NewYearActivity.json @@ -0,0 +1,130 @@ +{ + "Arr": [ + { + "Id": 1, + "PorpName": "SignReward", + "PropValue": "50014,10;100001,100000", + "PropDec": "签到奖励" + }, + { + "Id": 2, + "PorpName": "SignExcReward", + "PropValue": "50015,1", + "PropDec": "签到额外奖励" + }, + { + "Id": 3, + "PorpName": "SignExcRewardMax", + "PropValue": "2", + "PropDec": "签到额外奖励赠送次数上限" + }, + { + "Id": 4, + "PorpName": "SignExcRewardProp", + "PropValue": "30", + "PropDec": "签到额外奖励赠送概率" + }, + { + "Id": 5, + "PorpName": "BossExp", + "PropValue": "6800000", + "PropDec": "BOSS血量" + }, + { + "Id": 6, + "PorpName": "BossReward", + "PropValue": "100001,1000000;100002,10", + "PropDec": "BOSS击杀奖励" + }, + { + "Id": 7, + "PorpName": "LuckyRankNeed", + "PropValue": "10000", + "PropDec": "幸运榜上榜条件" + }, + { + "Id": 8, + "PorpName": "RankNeed", + "PropValue": "7000000", + "PropDec": "总伤害榜上榜条件" + }, + { + "Id": 9, + "PorpName": "LittleHurtGold", + "PropValue": "8000,12000", + "PropDec": "小爆竹造成的伤害范围" + }, + { + "Id": 10, + "PorpName": "BigHurtGold", + "PropValue": "400000,600000", + "PropDec": "大爆竹造成的伤害范围" + }, + { + "Id": 11, + "PorpName": "BigHurtExc", + "PropValue": "30001", + "PropDec": "大爆竹额外掉落道具ID" + }, + { + "Id": 12, + "PorpName": "BigHurtExcNumber", + "PropValue": "3,15", + "PropDec": "大爆竹额外掉落数量范围" + }, + { + "Id": 13, + "PorpName": "LittleGuaranteed", + "PropValue": "30", + "PropDec": "小爆竹保底掉落次数" + }, + { + "Id": 14, + "PorpName": "LittleGuaranteedReward", + "PropValue": "100002,5", + "PropDec": "小爆竹保底掉落物品" + }, + { + "Id": 15, + "PorpName": "BigGuaranteed", + "PropValue": "10", + "PropDec": "大爆竹保底掉落次数" + }, + { + "Id": 16, + "PorpName": "BigGuaranteedReward", + "PropValue": "30001,80", + "PropDec": "大爆竹保底掉落物品" + }, + { + "Id": 17, + "PorpName": "GiftShopID", + "PropValue": "991001,991002,991003", + "PropDec": "礼包ID" + }, + { + "Id": 18, + "PorpName": "GiftShopLimit", + "PropValue": "3,0,0", + "PropDec": "礼包每日限购次数,0为不限购" + }, + { + "Id": 19, + "PorpName": "BossExcLimit", + "PropValue": "30", + "PropDec": "年兽死亡额外掉落要求" + }, + { + "Id": 20, + "PorpName": "BuffCount", + "PropValue": "1", + "PropDec": "Buff生效次数" + }, + { + "Id": 21, + "PorpName": "ExchangeDiamond", + "PropValue": "30,5,1500000", + "PropDec": "单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量" + } + ] +} \ No newline at end of file diff --git a/data/DB_NewYearRankReward.dat b/data/DB_NewYearRankReward.dat new file mode 100644 index 0000000..c03ab32 --- /dev/null +++ b/data/DB_NewYearRankReward.dat @@ -0,0 +1,84 @@ + +"""d +""d" +""d" +""d +""c +""b +""a +""` +  ""_ + + +""^ +  ""] +  "\" +  ""[ +"Z" +""Y +""X +""W +""V +""U +""T +""S +""R +""Q +""P +""O +""N +"M" +"L" +""K +""J +""I +  "H" +!!""G +""""F +##""E +$$""D +%%""C +&&""B +''""A +((""@ +)""d" +*""d" ++""d" +,""d +-""c +.""b +/"a" +0""` +1 "_" +2 +""^ +3 ""] +4 ""\ +5 ""[ +6"Z" +7""Y +8"X" +9""W +:""V +;""U +<""T +=""S +>""R +?"Q" +@""P +A""O +B""N +C""M +D""L +E""K +F""J +G""I +H ""H +I!"G" +J"""F +K#""E +L$""D +M%""C +N&""B +O'""A +P(""@ \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.dat b/data/DB_PigBank_Diamond.dat index 48806c1..318e11f 100644 --- a/data/DB_PigBank_Diamond.dat +++ b/data/DB_PigBank_Diamond.dat @@ -1,4 +1,4 @@ - (08;@dHPc - ((08;@dHP -/ 2(08;@dHP \ No newline at end of file + (8@;PdX`c +< ((2Ÿ28@;JJƸPdX` +?/ 2(2Ÿ28@;JƸJPdX` \ No newline at end of file diff --git a/data/DB_PigBank_Diamond.json b/data/DB_PigBank_Diamond.json index 550f3a4..2151b12 100644 --- a/data/DB_PigBank_Diamond.json +++ b/data/DB_PigBank_Diamond.json @@ -18,8 +18,16 @@ "BuyCountMax": 2, "CostDiamond": 40, "MaxGold": 10000000, + "GoldExc": { + "310003": 1, + "40005": 1 + }, "MaxDiamond": 300, "DiamondId": 980002, + "DiamondExc": { + "310003": 1, + "40006": 1 + }, "CoinPrice": 100, "DiamondPrice": 300, "DiamondNowPrice": 199 @@ -30,8 +38,16 @@ "BuyCountMax": 99999999, "CostDiamond": 50, "MaxGold": 10000000, + "GoldExc": { + "310003": 1, + "40005": 2 + }, "MaxDiamond": 750, "DiamondId": 980003, + "DiamondExc": { + "310003": 1, + "40006": 2 + }, "CoinPrice": 100, "DiamondPrice": 750, "DiamondNowPrice": 499 diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 109f948..5337ad3 100644 Binary files a/data/DB_PropExchange.dat and b/data/DB_PropExchange.dat differ diff --git a/data/DB_PropExchange.json b/data/DB_PropExchange.json index 85e6958..bd7d6e3 100644 --- a/data/DB_PropExchange.json +++ b/data/DB_PropExchange.json @@ -64,12 +64,70 @@ "100002": 500 } }, - {}, - {}, - {}, - {}, - {}, - {}, + { + "Id": 5, + "Group": 2, + "Cost": { + "50016": 30 + }, + "Gain": { + "40002": 1 + }, + "Times": 5 + }, + { + "Id": 6, + "Group": 2, + "Cost": { + "50016": 10 + }, + "Gain": { + "100002": 3 + }, + "Times": 10 + }, + { + "Id": 7, + "Group": 2, + "Cost": { + "50016": 5 + }, + "Gain": { + "30001": 15 + }, + "Times": 15 + }, + { + "Id": 8, + "Group": 2, + "Cost": { + "50016": 1 + }, + "Gain": { + "20003": 1 + }, + "Times": 20 + }, + { + "Id": 9, + "Group": 2, + "Cost": { + "50016": 1 + }, + "Gain": { + "100001": 30000 + } + }, + { + "Id": 10, + "Group": 2, + "Cost": { + "50016": 1 + }, + "Gain": { + "50021": 1 + } + }, {}, {}, {}, diff --git a/data/DB_Task.dat b/data/DB_Task.dat index d5ee83f..6d98145 100644 Binary files a/data/DB_Task.dat and b/data/DB_Task.dat differ diff --git a/data/DB_Task.json b/data/DB_Task.json index 6577f2f..dd05456 100644 --- a/data/DB_Task.json +++ b/data/DB_Task.json @@ -1234,6 +1234,439 @@ "Award": { "100011": 50 } + }, + { + "Id": 13001, + "Order": 1, + "Name": "年兽活动", + "Des": "领取年兽签到奖励", + "ActivityType": 8, + "TaskType": 35, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "50001": 5, + "50014": 1 + } + }, + { + "Id": 13002, + "Order": 2, + "Name": "年兽活动", + "Des": "在线时长60分钟", + "ActivityType": 8, + "TaskType": 21, + "TargetTimes": 3600, + "FinishTimes": 1, + "Award": { + "100001": 100000, + "50014": 10 + } + }, + { + "Id": 13003, + "Order": 3, + "Name": "年兽活动", + "Des": "购买1次任意存钱罐", + "ActivityType": 8, + "TaskType": 22, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "50001": 5, + "50014": 5 + } + }, + { + "Id": 13004, + "Order": 4, + "Name": "年兽活动", + "Des": "游戏Tienlen比赛场5次", + "ActivityType": 8, + "TaskType": 25, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "100002": 5, + "50014": 5 + }, + "GameType": 1 + }, + { + "Id": 13005, + "Order": 5, + "Name": "年兽活动", + "Des": "游戏十三水10次", + "ActivityType": 8, + "TaskType": 5, + "TargetTimes": 10, + "FinishTimes": 1, + "Award": { + "100001": 30000, + "50014": 5 + }, + "GameType": 2 + }, + { + "Id": 13006, + "Order": 6, + "Name": "年兽活动", + "Des": "今日累计赢取1M金币", + "ActivityType": 8, + "TaskType": 8, + "TargetTimes": 1000000, + "FinishTimes": 1, + "Award": { + "50014": 5 + } + }, + { + "Id": 13007, + "Order": 7, + "Name": "年兽活动", + "Des": "今日消耗100钻石", + "ActivityType": 8, + "TaskType": 27, + "TargetTimes": 100, + "FinishTimes": 1, + "Award": { + "50014": 20 + } + }, + { + "Id": 13008, + "Order": 8, + "Name": "年兽活动", + "Des": "今日累计赢取5M金币", + "ActivityType": 8, + "TaskType": 8, + "TargetTimes": 5000000, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13009, + "Order": 9, + "Name": "年兽活动", + "Des": "今日累计赢取10M金币", + "ActivityType": 8, + "TaskType": 8, + "TargetTimes": 10000000, + "FinishTimes": 1, + "Award": { + "50014": 15 + } + }, + { + "Id": 13010, + "Order": 10, + "Name": "年兽活动", + "Des": "今日累计赢取20M金币", + "ActivityType": 8, + "TaskType": 8, + "TargetTimes": 20000000, + "FinishTimes": 1, + "Award": { + "50014": 20 + } + }, + { + "Id": 13011, + "Order": 11, + "Name": "年兽活动", + "Des": "充值任意金额", + "ActivityType": 8, + "TaskType": 7, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "50014": 10 + } + }, + { + "Id": 13012, + "Order": 12, + "Name": "年兽活动", + "Des": "今日消耗500钻石", + "ActivityType": 8, + "TaskType": 27, + "TargetTimes": 500, + "FinishTimes": 1, + "Award": { + "50015": 5 + } + }, + { + "Id": 13013, + "Order": 13, + "Name": "年兽活动", + "Des": "今日充值1.99$", + "ActivityType": 8, + "TaskType": 7, + "TargetTimes": 199, + "FinishTimes": 1, + "Award": { + "50015": 3 + } + }, + { + "Id": 13014, + "Order": 14, + "Name": "年兽活动", + "Des": "参与红包雨活动1次", + "ActivityType": 8, + "TaskType": 32, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "50014": 5 + } + }, + { + "Id": 13015, + "Order": 15, + "Name": "年兽活动", + "Des": "成功对年兽造成伤害1000000点", + "ActivityType": 8, + "TaskType": 34, + "TargetTimes": 1000000, + "FinishTimes": 1, + "Award": { + "100001": 500000 + } + }, + { + "Id": 13016, + "Order": 16, + "Name": "年兽活动", + "Des": "成功对年兽造成伤害10000000点", + "ActivityType": 8, + "TaskType": 34, + "TargetTimes": 10000000, + "FinishTimes": 1, + "Award": { + "100002": 5 + } + }, + { + "Id": 13017, + "Order": 17, + "Name": "年兽活动", + "Des": "累计充值9.99$", + "ActivityType": 9, + "TaskType": 7, + "TargetTimes": 999, + "FinishTimes": 1, + "Award": { + "100001": 1000000, + "50015": 5 + } + }, + { + "Id": 13018, + "Order": 18, + "Name": "年兽活动", + "Des": "累计充值19.99$", + "ActivityType": 9, + "TaskType": 7, + "TargetTimes": 1999, + "FinishTimes": 1, + "Award": { + "100001": 10000000, + "50015": 10 + } + }, + { + "Id": 13019, + "Order": 19, + "Name": "年兽活动", + "Des": "累计充值59.99$", + "ActivityType": 9, + "TaskType": 7, + "TargetTimes": 5999, + "FinishTimes": 1, + "Award": { + "100001": 30000000, + "50015": 20 + } + }, + { + "Id": 13020, + "Order": 20, + "Name": "年兽活动", + "Des": "累计充值99.99$", + "ActivityType": 9, + "TaskType": 7, + "TargetTimes": 9999, + "FinishTimes": 1, + "Award": { + "100001": 50000000, + "50015": 45 + } + }, + { + "Id": 13021, + "Order": 21, + "Name": "年兽活动", + "Des": "成功击杀1只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 1, + "FinishTimes": 1, + "Award": { + "50015": 2 + } + }, + { + "Id": 13022, + "Order": 22, + "Name": "年兽活动", + "Des": "成功击杀3只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 3, + "FinishTimes": 1, + "Award": { + "50015": 5 + } + }, + { + "Id": 13023, + "Order": 23, + "Name": "年兽活动", + "Des": "成功击杀6只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 6, + "FinishTimes": 1, + "Award": { + "50015": 10 + } + }, + { + "Id": 13024, + "Order": 24, + "Name": "年兽活动", + "Des": "成功击杀9只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 9, + "FinishTimes": 1, + "Award": { + "50015": 15 + } + }, + { + "Id": 13025, + "Order": 25, + "Name": "年兽活动", + "Des": "成功击杀12只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 12, + "FinishTimes": 1, + "Award": { + "50015": 20 + } + }, + { + "Id": 13026, + "Order": 26, + "Name": "年兽活动", + "Des": "成功击杀20只年兽", + "ActivityType": 9, + "TaskType": 33, + "TargetTimes": 20, + "FinishTimes": 1, + "Award": { + "50015": 45 + } + }, + { + "Id": 14001, + "Order": 1, + "Name": "累消活动", + "Des": "今日消耗99钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 99, + "FinishTimes": 1, + "Award": { + "100001": 100000, + "50014": 2 + } + }, + { + "Id": 14002, + "Order": 2, + "Name": "累消活动", + "Des": "今日消耗499钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 499, + "FinishTimes": 1, + "Award": { + "100001": 200000, + "50015": 2 + } + }, + { + "Id": 14003, + "Order": 3, + "Name": "累消活动", + "Des": "今日消耗999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 999, + "FinishTimes": 1, + "Award": { + "100001": 300000, + "50015": 5 + } + }, + { + "Id": 14004, + "Order": 4, + "Name": "累消活动", + "Des": "今日消耗1999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 1999, + "FinishTimes": 1, + "Award": { + "100001": 500000, + "50015": 10 + } + }, + { + "Id": 14005, + "Order": 5, + "Name": "累消活动", + "Des": "今日消耗2999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 2999, + "FinishTimes": 1, + "Award": { + "100001": 1000000, + "50015": 15 + } + }, + { + "Id": 14006, + "Order": 6, + "Name": "累消活动", + "Des": "今日消耗4999钻石", + "ActivityType": 10, + "TaskType": 27, + "TargetTimes": 4999, + "FinishTimes": 1, + "Award": { + "100001": 2000000, + "50015": 25 + } } ] } \ No newline at end of file diff --git a/data/gameconfig/pushcoin.json b/data/gameconfig/pushcoin.json new file mode 100644 index 0000000..d296208 --- /dev/null +++ b/data/gameconfig/pushcoin.json @@ -0,0 +1,9 @@ +{ + "GameName":"推币机", + "GameId":609, + "GameMode":[0], + "SceneType":[1], + "CanForceStart":true, + "MinPlayerCnt":1, + "DefaultPlayerCnt":1 +} \ No newline at end of file diff --git a/data/i18n/languages.json b/data/i18n/languages.json index 8a5080c..ce2cd99 100644 --- a/data/i18n/languages.json +++ b/data/i18n/languages.json @@ -14,5 +14,9 @@ "Upgrade": "{\"zh\":\"感谢您更新客户端,更新奖励已发放至附近,请注意查收\",\"vi\":\"Cảm ơn bạn đã cập nhật ứng dụng khách. Phần thưởng cập nhật đã được phân phối gần đó, vui lòng chú ý kiểm tra nhận\",\"en\":\"Thank you for updating the client. The update reward has been distributed to everyone. Please check it carefully.\",\"kh\":\"អរគុណសម្រាប់ការធ្វើបច្ចុប្បន្នភាពហ្គេម។ រង្វាន់នៃការធ្វើបច្ចុប្បន្នភាពត្រូវបានចែកចាយទៅគ្រប់គ្នា។ សូមពិនិត្យអោយបានច្បាស់លាស់។\"}", "LotteryTitle": "{\"zh\":\"玩游戏抽奖品\",\"vi\":\"Chơi game rút thưởng\",\"en\":\"Play games, draw prizes\",\"kh\":\"លេងហ្គេម ចាប់រង្វាន់\"}", "Lottery": "{\"zh\":\"恭喜您在好友房玩游戏抽奖品活动中获得了大奖,奖品随邮件发放,请注意查收\",\"vi\":\"Chúc mừng bạn đã trúng giải thưởng lớn trong hoạt động rút thưởng trò chơi tại phòng bạn bè. Giải thưởng sẽ được gửi qua email, vui lòng kiểm tra cẩn thận.\",\"en\":\"Congratulations on winning the grand prize in the lucky draw activity in the friend room. The prize will be sent via email, please check it carefully.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈ្នះរង្វាន់ធំក្នុងសកម្មភាពចាប់រង្វាន់ក្នុងបន្ទប់មិត្តភ័ក្តិរបស់អ្នក រង្វាន់នឹងត្រូវបានផ្ញើតាមអ៊ីម៉ែល សូមពិនិត្យមើលវាដោយយកចិត្តទុកដាក់។\"}", - "TelCodeTitle": "{\"zh\":\"话费卡兑换码\",\"vi\":\"Mã đổi thẻ điện thoại\",\"en\":\"Phone card redemption code\",\"kh\":\"លេខកូដប្រោសលោះកាតទូរស័ព្ទ\"}" + "TelCodeTitle": "{\"zh\":\"话费卡兑换码\",\"vi\":\"Mã đổi thẻ điện thoại\",\"en\":\"Phone card redemption code\",\"kh\":\"លេខកូដប្រោសលោះកាតទូរស័ព្ទ\"}", + "NianLuckTitle": "{\"zh\":\"幸运榜排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}", + "NianLuckAward": "{\"zh\":\"恭喜您在昨日年兽活动幸运排行中名次达到%v名,排行奖励已发放,请查收\",\"vi\":\"Chúc mừng bạn đã đạt được %v trong bảng xếp hạng vượt qua. Phần thưởng xếp hạng đã được phân phối, vui lòng kiểm tra.\",\"en\":\"Congratulations on reaching %vth place in the pass ranking. Ranking rewards have been issued. Please check.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈានដល់ចំណាត់ថ្នាក់ទី %v ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}", + "NianDamageTitle": "{\"zh\":\"年兽活动排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}", + "NianDamageAward": "{\"zh\":\"恭喜您在本次年兽活动总排行中名次达到%v名,排行奖励已发放,请查收\",\"vi\":\"Chúc mừng bạn đã đạt được %v trong bảng xếp hạng vượt qua. Phần thưởng xếp hạng đã được phân phối, vui lòng kiểm tra.\",\"en\":\"Congratulations on reaching %vth place in the pass ranking. Ranking rewards have been issued. Please check.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈានដល់ចំណាត់ថ្នាក់ទី %v ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}" } \ No newline at end of file diff --git a/dbproxy/mq/c_rank.go b/dbproxy/mq/c_rank.go index ab0af9f..42110c3 100644 --- a/dbproxy/mq/c_rank.go +++ b/dbproxy/mq/c_rank.go @@ -76,4 +76,20 @@ func init() { return }, }) + //年兽排行榜 + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: model.MQRankNian, + Data: &model.NianInfo{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.NianInfo) + if !ok { + return + } + err = svc.RankNianUpsert(log) + if err != nil { + logger.Logger.Errorf("RankNianUpsert err: %v", err) + } + return + }, + }) } diff --git a/dbproxy/mq/c_welfarelog.go b/dbproxy/mq/c_welfarelog.go index 68f30e6..d8c2ea0 100644 --- a/dbproxy/mq/c_welfarelog.go +++ b/dbproxy/mq/c_welfarelog.go @@ -3,6 +3,7 @@ package mq import ( "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/dao" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" @@ -27,4 +28,28 @@ func init() { return }, }) + + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBRedPacket, + Data: &model.RedPacketHistory{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.RedPacketHistory) + if !ok { + return + } + + d, err := dao.GetRedPacketHistory(log.Platform) + if err != nil { + logger.Logger.Errorf("get RedPacketHistory failed: %v", err) + return err + } + + err = d.Save(log) + if err != nil { + logger.Logger.Errorf("Save RedPacketHistory failed: %v", err) + return err + } + return nil + }, + }) } diff --git a/dbproxy/svc/l_friendunread.go b/dbproxy/svc/l_friendunread.go index 1f1b9b4..3823014 100644 --- a/dbproxy/svc/l_friendunread.go +++ b/dbproxy/svc/l_friendunread.go @@ -36,6 +36,9 @@ func (svc *FriendUnreadSvc) UpsertFriendUnread(args *model.FriendUnreadByKey, re if cc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpsertFriendUnread Find is err: ", err) @@ -76,6 +79,9 @@ func (svc *FriendUnreadSvc) UpdateFriendUnread(args *model.FriendUnreadByKey, re if cc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpdateFriendUnread Find is err: ", err) @@ -98,6 +104,9 @@ func (svc *FriendUnreadSvc) QueryFriendUnreadByKey(args *model.FriendUnreadByKey if fc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("QueryFriendUnreadByKey is err: ", err) diff --git a/dbproxy/svc/l_ranknian.go b/dbproxy/svc/l_ranknian.go new file mode 100644 index 0000000..868dc0f --- /dev/null +++ b/dbproxy/svc/l_ranknian.go @@ -0,0 +1,143 @@ +package svc + +import ( + "errors" + "github.com/globalsign/mgo" + "github.com/globalsign/mgo/bson" + "mongo.games.com/game/dbproxy/mongo" + "mongo.games.com/game/model" + "mongo.games.com/goserver/core/logger" + "net/rpc" +) + +var ( + RankNianDBName = "log" + RankNianCollName = "log_ranknian" + RankNianColError = errors.New("RankNian collection open failed") +) + +func RankNianCollection(plt string) *mongo.Collection { + s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, RankNianDBName) + if s != nil { + c, first := s.DB().C(RankNianCollName) + if first { + c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-luck"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-damage"}, Background: true, Sparse: true}) + } + return c + } + return nil +} + +func RankNianUpsert(args *model.NianInfo) error { + cc := RankNianCollection(args.Platform) + if cc == nil { + return RankNianColError + } + update := bson.M{ + "$set": bson.M{ + "platform": args.Platform, + "name": args.Name, + "damage": args.Damage, + "modid": args.ModId, + "ts": args.Ts, + }, + } + if args.Luck != 0 { + update["$set"].(bson.M)["luck"] = args.Luck + } + if args.LuckTime != 0 { + update["$set"].(bson.M)["lucktime"] = args.LuckTime + } + _, err := cc.Upsert( + bson.M{"snid": args.SnId}, + update, + ) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + logger.Logger.Error("RankNianSvc.Upsert is err: ", err) + return err + } + return nil +} + +type RankNianSvc struct { +} + +func (svc *RankNianSvc) Upsert(args *model.NianInfo, ret *bool) error { + err := RankNianUpsert(args) + if err != nil { + return err + } + *ret = true + return nil +} + +// 幸运榜 +func (svc *RankNianSvc) LuckFind(args *model.FindNianListArgs, ret *model.FindNianListReply) error { + fc := RankNianCollection(args.Platform) + if fc == nil { + return RankNianColError + } + + err := fc.Find(bson.M{"luck": bson.M{"$gt": 0}}).Sort("-luck").Limit(40).All(&ret.List) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + logger.Logger.Error("QueryMatchSeason is err: ", err) + return err + } + return nil +} + +// 伤害榜 +func (svc *RankNianSvc) DamageFind(args *model.FindNianListArgs, ret *model.FindNianListReply) error { + fc := RankNianCollection(args.Platform) + if fc == nil { + return RankNianColError + } + + err := fc.Find(bson.M{"damage": bson.M{"$gt": 0}}).Sort("-damage").Limit(40).All(&ret.List) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + logger.Logger.Error("QueryMatchSeason is err: ", err) + return err + } + return nil +} +func (svc *RankNianSvc) UpdateAll(args *model.FindNianListArgs, ret *model.FindNianListReply) error { + fc := RankNianCollection(args.Platform) + if fc == nil { + return RankNianColError + } + + // 根据 args 中的条件构建查询 + query := bson.M{"platform": args.Platform} + + update := bson.M{ + "$set": bson.M{ + "luck": 0, + "lucktime": 0, + }, + } + _, err := fc.UpdateAll(query, update) + if err != nil { + logger.Logger.Error("RankNianSvc.UpdateAll is err: ", err) + return err + } + return nil +} +func (svc *RankNianSvc) DelAll(args *model.FindNianListArgs, ret *model.FindNianListReply) error { + fc := RankNianCollection(args.Platform) + if fc == nil { + return RankNianColError + } + query := bson.M{"platform": args.Platform} + _, err := fc.RemoveAll(query) + if err != nil { + logger.Logger.Error("RankNianSvc.RemoveAll is err: ", err) + return err + } + + return nil +} +func init() { + rpc.Register(new(RankNianSvc)) +} diff --git a/dbproxy/svc/l_redpacket.go b/dbproxy/svc/l_redpacket.go new file mode 100644 index 0000000..a057d9a --- /dev/null +++ b/dbproxy/svc/l_redpacket.go @@ -0,0 +1,71 @@ +package svc + +import ( + "net/rpc" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/mongox" + + "mongo.games.com/game/dao" + "mongo.games.com/game/model" +) + +var RedPacketSvc = new(RedPacketService) + +func init() { + rpc.Register(RedPacketSvc) +} + +type RedPacketService struct { +} + +func (r *RedPacketService) GetAll(plt *string, res *[]*model.RedPacket) error { + d, err := dao.GetRedPacket(*plt) + if err != nil { + return err + } + + list, err := d.GetAll() + if err != nil { + logger.Logger.Errorf("RedPacketService.GetAll error: %v", err) + return err + } + + *res = list + + return nil +} + +func (r *RedPacketService) UpdateAll(req *model.UpdateRedPacketAllReq, res *bool) error { + d, err := mongox.GetDao(req.Plt, dao.NewRedPacket) + if err != nil { + return err + } + + err = d.UpdateAll(req.List) + if err != nil { + logger.Logger.Errorf("RedPacketService.UpdateAll error: %v", err) + return err + } + + *res = true + + return nil +} + +func (r *RedPacketService) GetHistory(req *model.GetRedPacketHistoryReq, res *[]*model.RedPacketHistory) error { + d, err := dao.GetRedPacketHistory(req.Plt) + if err != nil { + return err + } + + list, err := d.GetHistory(req.Snid, req.Cid) + if err != nil { + logger.Logger.Errorf("RedPacketService.GetHistory error: %v", err) + return err + } + + *res = list + + return nil +} diff --git a/dbproxy/svc/u_friend.go b/dbproxy/svc/u_friend.go index ed308e2..7476263 100644 --- a/dbproxy/svc/u_friend.go +++ b/dbproxy/svc/u_friend.go @@ -54,6 +54,10 @@ func (svc *FriendSvc) QueryFriendByKey(args *model.FriendByKey, ret *model.Frien if fc == nil { return FriendColError } + if ret == nil { + ret = &model.FriendRet{} + ret.Fri = &model.Friend{} + } err := fc.Find(bson.M{"platform": args.Platform, "snid": args.SnId}).One(&ret.Fri) if err != nil && !errors.Is(err, mgo.ErrNotFound) { logger.Logger.Error("QueryFriendByKey is err: ", err) diff --git a/dbproxy/svc/u_player.go b/dbproxy/svc/u_player.go index 21efae5..9e3eae0 100644 --- a/dbproxy/svc/u_player.go +++ b/dbproxy/svc/u_player.go @@ -9,6 +9,7 @@ import ( "reflect" "strconv" "strings" + "sync" "time" newMongo "go.mongodb.org/mongo-driver/mongo" @@ -68,6 +69,7 @@ func PlayerDelBackupDataCollection(plt string) *mongo.Collection { } type PlayerDataSvc struct { + mu sync.Mutex // 互斥锁 } func (svc *PlayerDataSvc) InsertPlayerData(args *model.InsertPlayerDataParam, ret *model.PlayerDataRet) (err error) { @@ -323,6 +325,8 @@ func SavePlayerData(pd *model.PlayerData) (err error) { * 保存玩家的全部信息 */ func (svc *PlayerDataSvc) SavePlayerData(pd *model.PlayerData, ret *bool) (err error) { + svc.mu.Lock() + defer svc.mu.Unlock() err = SavePlayerData(pd) *ret = err == nil return diff --git a/etcd/keyconf.go b/etcd/keyconf.go index 4960b7c..f349934 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -30,23 +30,30 @@ const ( ETCDKEY_PLAYERPOOL = "/game/plt/playerpool/" // 个人水池调控配置 ETCDKEY_GAME_CONFIG = "/game/plt/gameconfig/" // 游戏管理/全局配置 ETCDKEY_ACT_PHONELOTTERY = "/game/act_phoneLottery" - ETCDKEY_ChannelSwitch = "/game/channel/switch" // 渠道开关 - ETCDKEY_ACT_Invite = "/game/act_invite" // 邀请活动配置 - ETCDKEY_ACT_Permit = "/game/act_permit" // 赛季通行证配置 - ETCDKEY_DIAMOND_LOTTERY = "/game/diamond_lottery" // 钻石抽奖配置 - ETCDKEY_Item = "/game/item/" // 道具列表 - ETCDKEY_SKin = "/game/skin_config" // 皮肤配置 - ETCDKEY_RANK_TYPE = "/game/RankType" // 排行榜奖励配置 - ETCDKEY_AWARD_CONFIG = "/game/awardlog_config" //获奖记录 - ETCDKEY_GUIDE = "/game/guide_config" //新手引导配置 - ETCDKEY_MACHINE = "/game/machine_config" //娃娃机配置 - ETCDKEY_MatchAudience = "/game/match_audience" //比赛观众 - ETCDKEY_Spirit = "/game/spirit" // 小精灵配置 - ETCDKEY_RoomType = "/game/room_type/" // 房间类型配置 - ETCDKEY_RoomConfig = "/game/room_config/" // 房间配置 - ETCDKEY_RoomConfigSystem = "/game/room_system" // 系统房间配置 - ETCDKEY_ClientUpgrade = "/game/client_upgrade" // 客户端升级奖励配置 - ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置 - ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置 - ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置 + ETCDKEY_ChannelSwitch = "/game/channel/switch" // 渠道开关 + ETCDKEY_ACT_Invite = "/game/act_invite" // 邀请活动配置 + ETCDKEY_ACT_Permit = "/game/act_permit" // 赛季通行证配置 + ETCDKEY_DIAMOND_LOTTERY = "/game/diamond_lottery" // 钻石抽奖配置 + ETCDKEY_Item = "/game/item/" // 道具列表 + ETCDKEY_SKin = "/game/skin_config" // 皮肤配置 + ETCDKEY_RANK_TYPE = "/game/RankType" // 排行榜奖励配置 + ETCDKEY_AWARD_CONFIG = "/game/awardlog_config" //获奖记录 + ETCDKEY_GUIDE = "/game/guide_config" //新手引导配置 + ETCDKEY_MACHINE = "/game/machine_config" //娃娃机配置 + ETCDKEY_MatchAudience = "/game/match_audience" //比赛观众 + ETCDKEY_Spirit = "/game/spirit" // 小精灵配置 + ETCDKEY_RoomType = "/game/room_type/" // 房间类型配置 + ETCDKEY_RoomConfig = "/game/room_config/" // 房间配置 + ETCDKEY_RoomConfigSystem = "/game/room_system" // 系统房间配置 + ETCDKEY_ClientUpgrade = "/game/client_upgrade" // 客户端升级奖励配置 + ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置 + ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置 + ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置 + ETCDKEY_PigBankDiamond = "/game/pigbank_diamond" //存钱罐消耗获得 + ETCDKEY_PigBankProp = "/game/pigbank_prop" //存钱罐属性 + ETCDKEY_NianConfig = "/game/activity_nian" //年兽活动配置 + ETCDKEY_NianRankConfig = "/game/activity_nian_rank" //年兽排行榜配置 + KeyRedPacket = "/game/act_redpacket" //红包配置 + KeyActConsume = "/game/act_consume" //累计消耗活动配置 + KeyActPushCoin = "/game/act_pushcoin" //推金币活动配置 ) diff --git a/gamerule/pushcoin/constant.go b/gamerule/pushcoin/constant.go new file mode 100644 index 0000000..1b69348 --- /dev/null +++ b/gamerule/pushcoin/constant.go @@ -0,0 +1,11 @@ +package pushcoin + +const ( + GameStatePlay = iota + GameStateMax +) + +const ( + PowerMax = 700000 + PowerInit = 400000 +) diff --git a/gamesrv/base/etcd.go b/gamesrv/base/etcd.go index 44233f8..4effbfb 100644 --- a/gamesrv/base/etcd.go +++ b/gamesrv/base/etcd.go @@ -29,6 +29,10 @@ func init() { etcd.Register(etcd.ETCDKEY_SKin, webapi.SkinConfig{}, platformConfigEtcd) // 娃娃机配置 etcd.Register(etcd.ETCDKEY_MACHINE, webapi.MachineConfig{}, platformConfigEtcd) + // 存钱罐消耗获得 + etcd.Register(etcd.ETCDKEY_PigBankDiamond, webapi.GamePigBankDiamondConfig{}, platformConfigEtcd) + // 存钱罐属性值 + etcd.Register(etcd.ETCDKEY_PigBankProp, webapi.GamePigBankPropConfig{}, platformConfigEtcd) } func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -51,6 +55,10 @@ func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev case *webapi.ItemConfig: ConfigMgrInst.GetConfig(d.Platform).ItemConfig = d srvdata.GameItemMgr.SetConfig(d) + case *webapi.GamePigBankDiamondConfig: + ConfigMgrInst.GetConfig(d.Platform).GamePigBankDiamondConfig = d + case *webapi.GamePigBankPropConfig: + ConfigMgrInst.GetConfig(d.Platform).GamePigBankPropConfig = d default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } diff --git a/gamesrv/base/player.go b/gamesrv/base/player.go index 149fc7c..a1d2395 100644 --- a/gamesrv/base/player.go +++ b/gamesrv/base/player.go @@ -1243,12 +1243,18 @@ func (this *Player) UpdatePigBankCoin(gainTexCoin int64) { return } + // 渠道开关 + if !ConfigMgrInst.IsOn(this.Platform, common.ChannelSwitchPigBankCoin, this.LastChannel) { + return + } + if this.PlayerData.WelfData == nil || this.PlayerData.WelfData.PigBank == nil { return } fGetPropValue := func(propName string) int64 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := ConfigMgrInst.GetConfig(this.Platform).GamePigBankPropConfig.PropInfo for _, PropItem := range pool { if PropItem.PorpName == propName { return int64(PropItem.PropValue) @@ -1257,7 +1263,9 @@ func (this *Player) UpdatePigBankCoin(gainTexCoin int64) { return 0 } BankCoinMax := int64(0) - for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { + // pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := ConfigMgrInst.GetConfig(this.Platform).GamePigBankDiamondConfig.DiamondInfo + for _, data := range pool { if this.WelfData.PigBank.DayBuyTimes+1 >= data.BuyCountMin && this.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { BankCoinMax = int64(data.MaxGold) break diff --git a/gamesrv/base/robotagent.go b/gamesrv/base/robotagent.go index 5ea4833..300df16 100644 --- a/gamesrv/base/robotagent.go +++ b/gamesrv/base/robotagent.go @@ -62,6 +62,14 @@ func (nsa *NpcServerAgent) SyncDBGameFree(roomId int, DBGameFree *server.DB_Game } } +func (nsa *NpcServerAgent) DestroyScene(sceneId int) { + pack := &server.GRDestroyScene{ + SceneId: proto.Int(sceneId), + } + nsa.sendPacket(int(server.SSPacketID_PACKET_GR_DESTROYSCENE), pack) + +} + // Invite 邀请机器人 func (nsa *NpcServerAgent) Invite(roomId, cnt int, gameFreeId int32) bool { //logger.Logger.Trace("(nsa *NpcServerAgent) Invite", roomId, cnt, isAgent, gameFreeId) diff --git a/gamesrv/base/scene.go b/gamesrv/base/scene.go index 4f49ec0..fd69683 100644 --- a/gamesrv/base/scene.go +++ b/gamesrv/base/scene.go @@ -908,6 +908,9 @@ func (this *Scene) Destroy(force bool) { } proto.SetDefaults(pack) this.SendToWorld(int(server.SSPacketID_PACKET_GW_DESTROYSCENE), pack) + + NpcServerAgentSingleton.DestroyScene(int(this.SceneId)) + logger.Logger.Trace("(this *Scene) Destroy(force bool) isCompleted", isCompleted) } @@ -2094,11 +2097,6 @@ func (this *Scene) Statistics(param *StaticParam) { logger.Logger.Tracef("Statistics gameId:%v wbLevel:%v gain:%v addGain:%v", this.GameId, wbLevel, param.Gain, addGain) - // 比赛场,私人房不统计 - if this.IsMatchScene() || this.IsPrivateScene() { - return - } - var totalIn int64 var totalOut int64 now := time.Now() @@ -2181,6 +2179,40 @@ func (this *Scene) Statistics(param *StaticParam) { statics = append(statics, &data.Statics) } + f := func(list []*model.PlayerGameStatics) { + for _, data := range list { + if data != nil { + if !this.IsMatchScene() && !this.IsPrivateScene() { // 比赛场,私人房不统计 + data.TotalIn += totalIn + data.TotalOut += totalOut + data.Tax += param.GainTax + } + if param.IsAddTimes { + data.GameTimes++ + if param.Gain > 0 { + data.WinGameTimes++ + data.WinGameTimesNum++ + data.LoseGameTimesNum = 0 + } else if param.Gain < 0 { + data.LoseGameTimes++ + data.LoseGameTimesNum++ + data.WinGameTimesNum = 0 + } else { + data.DrawGameTimes++ + data.WinGameTimesNum = 0 + data.LoseGameTimesNum = 0 + } + } + } + } + } + f(statics) + statics = statics[:0] + + if this.IsMatchScene() || this.IsPrivateScene() { + return + } + // 新手输赢统计 if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, int(this.GameId)) && isControl && wbLevel == 0 && isNovice { keyNoviceGameId := common.GetKeyNoviceGameId(int(this.GameId)) @@ -2249,29 +2281,8 @@ func (this *Scene) Statistics(param *StaticParam) { logger.Logger.Tracef("Statistics PlayerPool gameId:%v wbLevel:%v gain:%v addGain:%v", this.GameId, wbLevel, param.Gain, addGain) } - for _, data := range statics { - if data != nil { - data.TotalIn += totalIn - data.TotalOut += totalOut - data.Tax += param.GainTax - if param.IsAddTimes { - data.GameTimes++ - if param.Gain > 0 { - data.WinGameTimes++ - data.WinGameTimesNum++ - data.LoseGameTimesNum = 0 - } else if param.Gain < 0 { - data.LoseGameTimes++ - data.LoseGameTimesNum++ - data.WinGameTimesNum = 0 - } else { - data.DrawGameTimes++ - data.WinGameTimesNum = 0 - data.LoseGameTimesNum = 0 - } - } - } - } + f(statics) + statics = statics[:0] // 玩家身上元数据 if param.IsAddTimes { diff --git a/gamesrv/base/scene_policy.go b/gamesrv/base/scene_policy.go index 3c36f38..6c548b3 100644 --- a/gamesrv/base/scene_policy.go +++ b/gamesrv/base/scene_policy.go @@ -46,13 +46,6 @@ type ScenePolicy interface { CanAddCoin(s *Scene, p *Player, val int64) bool //当前状态能否换桌 CanChangeCoinScene(s *Scene, p *Player) bool - //创建场景扩展数据 - CreateSceneExData(s *Scene) interface{} - //创建玩家扩展数据 - CreatePlayerExData(s *Scene, p *Player) interface{} - // - PacketGameData(s *Scene) interface{} - InterventionGame(s *Scene, data interface{}) interface{} //通知分场状态 NotifyGameState(s *Scene) @@ -237,18 +230,14 @@ func (bsp *BaseScenePolicy) OnAudienceDropLine(s *Scene, p *Player) { } } } -func (bsp *BaseScenePolicy) GetSceneState(s *Scene, stateid int) SceneState { return G_BaseSceneState } -func (bsp *BaseScenePolicy) IsCompleted(s *Scene) bool { return false } -func (bsp *BaseScenePolicy) IsCanForceStart(s *Scene) bool { return false } -func (bsp *BaseScenePolicy) ForceStart(s *Scene) {} -func (bsp *BaseScenePolicy) CanAddCoin(s *Scene, p *Player, val int64) bool { return true } /*百人牛牛,百人金华多倍结算,且当前是减币的情况下,需要判断*/ -func (bsp *BaseScenePolicy) CanChangeCoinScene(s *Scene, p *Player) bool { return false } -func (bsp *BaseScenePolicy) CreateSceneExData(s *Scene) interface{} { return false } -func (bsp *BaseScenePolicy) CreatePlayerExData(s *Scene, p *Player) interface{} { return false } -func (bsp *BaseScenePolicy) PacketGameData(s *Scene) interface{} { return nil } -func (bsp *BaseScenePolicy) InterventionGame(s *Scene, data interface{}) interface{} { return nil } -func (bsp *BaseScenePolicy) NotifyGameState(s *Scene) {} -func (bsp *BaseScenePolicy) GetJackPotVal(s *Scene) int64 { return 0 } +func (bsp *BaseScenePolicy) GetSceneState(s *Scene, stateid int) SceneState { return G_BaseSceneState } +func (bsp *BaseScenePolicy) IsCompleted(s *Scene) bool { return false } +func (bsp *BaseScenePolicy) IsCanForceStart(s *Scene) bool { return false } +func (bsp *BaseScenePolicy) ForceStart(s *Scene) {} +func (bsp *BaseScenePolicy) CanAddCoin(s *Scene, p *Player, val int64) bool { return true } /*百人牛牛,百人金华多倍结算,且当前是减币的情况下,需要判断*/ +func (bsp *BaseScenePolicy) CanChangeCoinScene(s *Scene, p *Player) bool { return false } +func (bsp *BaseScenePolicy) NotifyGameState(s *Scene) {} +func (bsp *BaseScenePolicy) GetJackPotVal(s *Scene) int64 { return 0 } var G_BaseSceneState = &BaseSceneState{} diff --git a/gamesrv/pushcoin/action.go b/gamesrv/pushcoin/action.go new file mode 100644 index 0000000..2754ae6 --- /dev/null +++ b/gamesrv/pushcoin/action.go @@ -0,0 +1,42 @@ +package thirteen + +import ( + "mongo.games.com/game/common" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/protocol/pushcoin" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" +) + +func init() { + common.Register(int(pushcoin.PushCoinPacketID_PACKET_CSPushCoinPlayerOp), &pushcoin.CSPushCoinPlayerOp{}, CSPushCoinPlayerOp) +} + +func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Trace("CSPlayerOpHandler Process recv ", data) + if msg, ok := data.(*pushcoin.CSPushCoinPlayerOp); ok { + p := base.PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warn("CSPlayerOpHandler p == nil") + return nil + } + scene := p.GetScene() + if scene == nil { + logger.Logger.Warn("CSPlayerOpHandler p.scene == nil") + return nil + } + if scene.KeyGameDif != common.GameDifPushCoin { + logger.Logger.Error("CSPlayerOpHandler gameId Error ", scene.GameId) + return nil + } + if !scene.HasPlayer(p) { + return nil + } + sp := scene.GetScenePolicy() + if sp != nil { + sp.OnPlayerOp(scene, p, int(msg.GetOpCode()), msg.GetOpParam()) + } + return nil + } + return nil +} diff --git a/gamesrv/pushcoin/player.go b/gamesrv/pushcoin/player.go new file mode 100644 index 0000000..3974e81 --- /dev/null +++ b/gamesrv/pushcoin/player.go @@ -0,0 +1,25 @@ +package thirteen + +import ( + "mongo.games.com/game/gamesrv/base" +) + +type GameData struct { + Shake int32 // 震动次数 + Refresh int64 // 刷新次数 + Power int64 // 能量值 + Base int64 // 底注 +} + +type PlayerEx struct { + *base.Player //玩家信息 + *GameData +} + +func NewPushCoinPlayerData(p *base.Player, data *GameData) *PlayerEx { + playerEx := &PlayerEx{ + Player: p, + GameData: data, + } + return playerEx +} diff --git a/gamesrv/pushcoin/scene.go b/gamesrv/pushcoin/scene.go new file mode 100644 index 0000000..8be1f21 --- /dev/null +++ b/gamesrv/pushcoin/scene.go @@ -0,0 +1,74 @@ +package thirteen + +import ( + "mongo.games.com/game/common" + rule "mongo.games.com/game/gamerule/pushcoin" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/protocol/pushcoin" + "mongo.games.com/game/srvdata" +) + +type SceneEx struct { + *base.Scene //场景 +} + +func NewPushCoinSceneData(s *base.Scene) *SceneEx { + sceneEx := &SceneEx{ + Scene: s, + } + return sceneEx +} + +func (this *SceneEx) CreateRoomInfoPacket(s *base.Scene, p *base.Player) *pushcoin.SCPushCoinRoomInfo { + playerEx, ok := p.ExtraData.(*PlayerEx) + if !ok { + return nil + } + + roomInfo := &pushcoin.SCPushCoinRoomInfo{ + RoomId: int32(s.GetSceneId()), + GameId: s.GameId, + RoomMode: int32(s.GetSceneMode()), + Params: common.CopySliceInt64ToInt32(s.GetParams()), + State: int32(s.GetSceneState().GetState()), + TimeOut: int32(s.GetSceneState().GetTimeout(s)), + BetList: s.GetDBGameFree().GetOtherIntParams(), + } + + player := pushcoin.PushCoinPlayerData{ + Name: p.Name, + SnId: p.SnId, + Head: p.Head, + Sex: p.Sex, + Coin: p.Coin, + Flag: int32(p.Flags), + VIP: p.VIP, + RoleId: p.Roles.ModId, + Level: p.Level, + Exp: p.Exp, + ShakeTimes: playerEx.Shake, + BaseCoin: playerEx.Base, + PowerLine: playerEx.Power, + PowerLineMax: rule.PowerMax, + RefreshTimes: playerEx.Refresh, + } + if p.Roles != nil { + player.RoleId = p.Roles.ModId + } + if p.Skin != nil { + player.SkinId = p.Skin.ModId + } + + roomInfo.Players = append(roomInfo.Players, &player) + + for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr { + if v.GetGroup() == 2 { + roomInfo.ExchangeList = append(roomInfo.ExchangeList, &pushcoin.ExchangeInfo{ + Id: v.GetId(), + }) + } + } + + return roomInfo + +} diff --git a/gamesrv/pushcoin/scenepolicy.go b/gamesrv/pushcoin/scenepolicy.go new file mode 100644 index 0000000..d92a042 --- /dev/null +++ b/gamesrv/pushcoin/scenepolicy.go @@ -0,0 +1,332 @@ +package thirteen + +import ( + "encoding/json" + "time" + + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/common" + rule "mongo.games.com/game/gamerule/pushcoin" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/model" + "mongo.games.com/game/protocol/pushcoin" +) + +var PolicySingleton = &Policy{} + +type Policy struct { + base.BaseScenePolicy + states [rule.GameStateMax]base.SceneState +} + +func (this *Policy) OnStart(s *base.Scene) { + logger.Logger.Trace("(this *PushCoinPolicy) OnStart, sceneId=", s.GetSceneId()) + sceneEx := NewPushCoinSceneData(s) + if sceneEx != nil { + s.ExtraData = sceneEx + s.ChangeSceneState(rule.GameStatePlay) + } +} + +func (this *Policy) OnStop(s *base.Scene) { + logger.Logger.Trace("(this *Policy) OnStop , sceneId=", s.GetSceneId()) +} + +func (this *Policy) OnTick(s *base.Scene) { + if s == nil { + return + } + if s.SceneState != nil { + s.SceneState.OnTick(s) + } +} + +func (this *Policy) OnPlayerEnter(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.SnId) + sceneEx, ok := s.ExtraData.(*SceneEx) + if !ok { + return + } + + data := p.GDatas[s.KeyGamefreeId] + if data == nil { + data = &model.PlayerGameInfo{} + p.GDatas[s.KeyGamefreeId] = data + } + + gamedata := &GameData{} + if data.DataEx != nil { + err := json.Unmarshal(data.DataEx, gamedata) + if err != nil { + logger.Logger.Error("OnPlayerEnter, json.Unmarshal error, err=", err) + return + } + } else { + // 底注 + baseCoins := s.GetDBGameFree().GetOtherIntParams() + if len(baseCoins) > 0 { + gamedata.Base = baseCoins[0] + } else { + gamedata.Base = 5000 + } + gamedata.Power = rule.PowerInit + } + + p.ExtraData = NewPushCoinPlayerData(p, gamedata) + //给自己发送房间信息 + this.SendRoomInfo(s, p, sceneEx) + s.FirePlayerEvent(p, base.PlayerEventEnter, nil) +} + +func (this *Policy) OnPlayerLeave(s *base.Scene, p *base.Player, reason int) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnPlayerLeave, sceneId=", s.GetSceneId(), " player=", p.SnId) + + playerEx, ok := p.ExtraData.(*PlayerEx) + if !ok { + return + } + + data := p.GDatas[s.KeyGamefreeId] + if data == nil { + data = &model.PlayerGameInfo{} + p.GDatas[s.KeyGamefreeId] = data + } + + b, err := json.Marshal(playerEx.GameData) + if err != nil { + logger.Logger.Error("OnPlayerLeave, json.Marshal error, err=", err) + return + } + data.DataEx = b + + s.FirePlayerEvent(p, base.PlayerEventLeave, nil) +} + +func (this *Policy) OnPlayerDropLine(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnPlayerDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId) + s.FirePlayerEvent(p, base.PlayerEventDropLine, nil) +} + +func (this *Policy) OnPlayerRehold(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId) + sceneEx, ok := s.ExtraData.(*SceneEx) + if !ok { + return + } + this.SendRoomInfo(s, p, sceneEx) + s.FirePlayerEvent(p, base.PlayerEventRehold, nil) +} + +func (this *Policy) OnPlayerReturn(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId) + sceneEx, ok := s.ExtraData.(*SceneEx) + if !ok { + return + } + this.SendRoomInfo(s, p, sceneEx) + s.FirePlayerEvent(p, base.PlayerEventReturn, nil) +} + +func (this *Policy) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool { + if s == nil || p == nil { + return false + } + logger.Logger.Trace("(this *Policy) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params) + if s.SceneState != nil { + p.LastOPTimer = time.Now() + return s.SceneState.OnPlayerOp(s, p, opcode, params) + } + return true +} + +func (this *Policy) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " eventcode=", evtcode, " params=", params) + if s.SceneState != nil { + s.SceneState.OnPlayerEvent(s, p, evtcode, params) + } +} + +func (this *Policy) OnAudienceEnter(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnAudienceEnter, sceneId=", s.GetSceneId(), " player=", p.SnId) + if sceneEx, ok := s.ExtraData.(*SceneEx); ok { + //给自己发送房间信息 + this.SendRoomInfo(s, p, sceneEx) + s.FirePlayerEvent(p, base.AudienceEventEnter, nil) + } +} + +func (this *Policy) OnAudienceLeave(s *base.Scene, p *base.Player, reason int) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnAudienceLeave, sceneId=", s.GetSceneId(), " player=", p.SnId) + s.FirePlayerEvent(p, base.AudienceEventLeave, nil) +} + +func (this *Policy) OnAudienceDropLine(s *base.Scene, p *base.Player) { + if s == nil || p == nil { + return + } + logger.Logger.Trace("(this *Policy) OnAudienceDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId) + s.AudienceLeave(p, common.PlayerLeaveReason_DropLine) + s.FirePlayerEvent(p, base.AudienceEventDropLine, nil) +} + +func (this *Policy) OnAudienceSit(s *base.Scene, p *base.Player) { + +} + +func (this *Policy) IsCompleted(s *base.Scene) bool { + return true +} + +func (this *Policy) IsCanForceStart(s *base.Scene) bool { + return true +} + +func (this *Policy) ForceStart(s *base.Scene) { + +} + +func (this *Policy) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { + if s == nil || p == nil { + return false + } + if s.SceneState != nil { + return s.SceneState.CanChangeCoinScene(s, p) + } + return false +} + +func (this *Policy) SendRoomInfo(s *base.Scene, p *base.Player, sceneEx *SceneEx) { + pack := sceneEx.CreateRoomInfoPacket(s, p) + p.SendToClient(int(pushcoin.PushCoinPacketID_PACKET_SCPushCoinRoomInfo), pack) +} + +//===================================== +// StateGaming 游戏中 +//===================================== + +type StateGaming struct { +} + +func (this *StateGaming) CanChangeCoinScene(s *base.Scene, p *base.Player) bool { + return true +} + +func (this *StateGaming) OnLeave(s *base.Scene) { + +} + +func (this *StateGaming) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) { + +} + +func (this *StateGaming) GetState() int { + return rule.GameStatePlay +} + +func (this *StateGaming) CanChangeTo(s base.SceneState) bool { + return true +} + +func (this *StateGaming) GetTimeout(s *base.Scene) int { + if sceneEx, ok := s.GetExtraData().(*SceneEx); ok { + return int(time.Now().Sub(sceneEx.StateStartTime) / time.Second) + } + return 0 +} + +func (this *StateGaming) OnEnter(s *base.Scene) { + +} + +func (this *StateGaming) OnTick(s *base.Scene) { + +} + +func (this *StateGaming) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool { + logger.Logger.Trace("(this *StateGaming) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params) + _, ok := s.ExtraData.(*SceneEx) + if !ok { + return false + } + _, ok = p.ExtraData.(*PlayerEx) + if !ok { + return false + } + + pack := &pushcoin.SCPushCoinPlayerOp{ + OpRetCode: pushcoin.OpResultCode_OPRC_Error, + OpCode: pushcoin.OpCodes(opcode), + } + + switch pushcoin.OpCodes(opcode) { + case pushcoin.OpCodes_OP_Bet: + + case pushcoin.OpCodes_OP_Gain: + + case pushcoin.OpCodes_OP_Shake: + + case pushcoin.OpCodes_OP_Refresh: + + case pushcoin.OpCodes_OP_Exchange: + + case pushcoin.OpCodes_OP_Draw: + + default: + return true + } + + p.SendToClient(int(pushcoin.PushCoinPacketID_PACKET_SCPushCoinPlayerOp), pack) + return true +} + +func (this *Policy) RegisteSceneState(state base.SceneState) { + if state == nil { + return + } + id := state.GetState() + if id < 0 || id >= rule.GameStateMax { + return + } + this.states[id] = state +} + +func (this *Policy) GetSceneState(s *base.Scene, stateid int) base.SceneState { + if stateid >= 0 && stateid < rule.GameStateMax { + return this.states[stateid] + } + return nil +} + +func init() { + PolicySingleton.RegisteSceneState(&StateGaming{}) + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + base.RegisteScenePolicy(common.GameId_PushCoin, 0, PolicySingleton) + return nil + }) +} diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index 5ca6e11..f242ee5 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -73,6 +73,7 @@ type TienLenSceneData struct { RoundLogId []string // 每局牌局记录id CustomLogSave bool // 是否已经保存日志 PlayerAward map[int32]*[]*model.Item // 房卡场最终奖励 + bill *tienlen.SCTienLenGameBilled } func NewTienLenSceneData(s *base.Scene) *TienLenSceneData { diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 0ebfebf..f71b8b9 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -427,6 +427,7 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen NumOfGames: proto.Int(sceneEx.NumOfGames), TotalOfGames: sceneEx.TotalOfGames, CurOpIdx: proto.Int(-1), + IsSmallCard: sceneEx.FindWinPos() == -1, MasterSnid: proto.Int32(sceneEx.masterSnid), AudienceNum: proto.Int(s.GetAudiencesNum()), BaseScore: proto.Int32(s.GetBaseScore()), @@ -1057,12 +1058,14 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { } if len(sceneEx.tianHuSnids) == 0 { //没有天胡玩家 //有赢家,赢家先出;无赢家手持最小牌先 - pos := int32(sceneEx.FindWinPos()) - if pos == -1 { + winPos := int32(sceneEx.FindWinPos()) + pos := winPos + if winPos == -1 { pos = sceneEx.startOpPos } pack := &tienlen.SCTienLenFirstOpPos{ - Pos: proto.Int32(pos), + Pos: pos, + IsSmallCard: winPos == -1, } proto.SetDefaults(pack) sceneEx.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenFirstOpPos), pack, 0) @@ -2623,6 +2626,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { proto.SetDefaults(pack) s.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenGameBilled), pack, 0) logger.Logger.Trace("TienLenPacketID_PACKET_SCTienLenGameBilled gameFreeId:", sceneEx.GetGameFreeId(), ";pack:", pack) + sceneEx.bill = pack if sceneEx.IsCustom() && sceneEx.TotalOfGames > 0 { for _, v := range tienlenType.PlayerData { @@ -2932,6 +2936,16 @@ func (this *SceneBilledStateTienLen) OnPlayerOp(s *base.Scene, p *base.Player, o // 玩家事件 func (this *SceneBilledStateTienLen) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) { this.SceneBaseStateTienLen.OnPlayerEvent(s, p, evtcode, params) + sceneEx, ok := s.GetExtraData().(*TienLenSceneData) + if !ok { + return + } + switch evtcode { + case base.PlayerEventRehold: + if sceneEx.bill != nil && sceneEx.IsRankMatch() { + p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenGameBilled), sceneEx.bill) + } + } } func (this *SceneBilledStateTienLen) OnTick(s *base.Scene) { diff --git a/mgrsrv/api/webapi_worldsrv.go b/mgrsrv/api/webapi_worldsrv.go index f5a48cf..0f4d2a1 100644 --- a/mgrsrv/api/webapi_worldsrv.go +++ b/mgrsrv/api/webapi_worldsrv.go @@ -139,6 +139,92 @@ func WorldSrvApi(rw http.ResponseWriter, req *http.Request) { return } +func DebugSrvApi(rw http.ResponseWriter, req *http.Request) { + + if !common.Config.IsDevMode { + return + } + + defer utils.DumpStackIfPanic("api.DebugSrvApi") + logger.Logger.Info("DebugSrvApi receive:", req.URL.Path, req.URL.RawQuery) + + if common.RequestCheck(req, model.GameParamData.WhiteHttpAddr) == false { + logger.Logger.Info("RemoteAddr [%v] require api.", req.RemoteAddr) + return + } + data, err := io.ReadAll(req.Body) + if err != nil { + logger.Logger.Info("Body err.", err) + webApiResponse(rw, nil /*map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Post data is null!"}*/) + return + } + + params := make(map[string]string) + json.Unmarshal(data, ¶ms) + + startTime := time.Now().UnixNano() + + var stats *ApiStats + if v, exist := WebApiStats.Load(req.URL.Path); exist { + stats = v.(*ApiStats) + } else { + stats = &ApiStats{} + WebApiStats.Store(req.URL.Path, stats) + } + var rep []byte + start := time.Now() + res := make(chan []byte, 1) + suc := core.CoreObject().SendCommand(&WebApiEvent{req: req, path: req.URL.Path, h: HandlerWrapper(func(event *WebApiEvent, data []byte) bool { + logger.Logger.Trace("WorldSrvApi start transcate") + tnp := &transact.TransNodeParam{ + Tt: common.TransTypeWebApi, + Ot: transact.TransOwnerType(common.GetSelfSrvType()), + Oid: common.GetSelfSrvId(), + AreaID: common.GetSelfAreaId(), + } + tNode := transact.DTCModule.StartTrans(tnp, event, transact.DefaultTransactTimeout) //超时时间30秒 + if tNode != nil { + tNode.TransEnv.SetField(WEBAPI_TRANSACTE_EVENT, event) + tNode.Go(core.CoreObject()) + } + return true + }), body: data, rawQuery: req.URL.RawQuery, res: res}, false) + if suc { + select { + case rep = <-res: + if rep != nil { + webApiResponse(rw, rep) + } + case <-time.After(ApiDefaultTimeout): + //rep = make(map[string]interface{}) + //rep[webapi.RESPONSE_STATE] = webapi.STATE_ERR + //rep[webapi.RESPONSE_ERRMSG] = "proccess timeout!" + webApiResponse(rw, rep) + if stats != nil { + atomic.AddInt64(&stats.TimeoutTimes, 1) + } + } + } else { + webApiResponse(rw, nil) + if stats != nil { + atomic.AddInt64(&stats.UnreachTimes, 1) + } + } + ps := int64(time.Now().Sub(start) / time.Millisecond) + if stats != nil { + atomic.AddInt64(&stats.RunTimes, 1) + atomic.AddInt64(&stats.TotalRuningTime, ps) + if atomic.LoadInt64(&stats.MaxRuningTime) < ps { + atomic.StoreInt64(&stats.MaxRuningTime, ps) + } + } + + log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(rep[:]), startTime, ps) + mq.Write(log) + + return +} + // -------------------------------------------------------------------------------------- func init() { transact.RegisteHandler(common.TransTypeWebApi, &transact.TransHanderWrapper{ @@ -262,6 +348,9 @@ func init() { admin.MyAdminApp.Route("/api/game/exchange_create", WorldSrvApi) // 兑换订单列表 admin.MyAdminApp.Route("/api/game/exchange_order", WorldSrvApi) + + admin.MyAdminApp.Route("/api/platform/debug", DebugSrvApi) + } func Stats() map[string]ApiStats { diff --git a/model/config.go b/model/config.go index cc94888..50540a2 100644 --- a/model/config.go +++ b/model/config.go @@ -17,14 +17,16 @@ import ( */ const ( - OpAll = 0 - OpTurnplate = 1 - OpBlindBox = 2 - OpFirstPay = 3 - OpContinuousPay = 4 - OpPhoneLottery = 5 - OpCollect = 6 - OpDiamondLottery = 7 + OpAll = 0 + OpTurnplate = 1 + OpBlindBox = 2 + OpFirstPay = 3 + OpContinuousPay = 4 + OpPhoneLottery = 5 + OpCollect = 6 + OpNian = 7 + OpConsume = 8 // 累计消耗活动 + OpPushCoin = 9 // 推金币活动 ) const ( @@ -163,6 +165,19 @@ type AllConfig struct { LotteryShows map[int64]*webapi.ShowLottery // 竞技馆抽奖必中配置 LotteryUser map[int64]*webapi.UserLottery + // 存钱罐消耗获得 + *webapi.GamePigBankDiamondConfig + // 存钱罐属性 + *webapi.GamePigBankPropConfig + //年兽配置 + *webapi.ActivityNianConfig + *webapi.NianRankReward + // 红包配置 + *webapi.RedPacketConfig + // 累计消耗活动配置 + *webapi.ConsumeConfig + // 推金币活动配置 + *webapi.PushCoinConfig } type GlobalConfig struct { @@ -536,3 +551,21 @@ func (cm *ConfigMgr) CustomIsOn(plt string, configId int32) bool { return true } + +func (cm *ConfigMgr) GetPigBankDiamondArr(plt string) []*webapi.PigBankDiamondInfo { + cfg := cm.GetConfig(plt).GamePigBankDiamondConfig + if cfg == nil { + return nil + } + + return cfg.DiamondInfo +} + +func (cm *ConfigMgr) GetPigBankPropArr(plt string) []*webapi.PigBankPropInfo { + cfg := cm.GetConfig(plt).GamePigBankPropConfig + if cfg == nil { + return nil + } + + return cfg.PropInfo +} diff --git a/model/permit.go b/model/permit.go index 70798d1..a1ca310 100644 --- a/model/permit.go +++ b/model/permit.go @@ -44,13 +44,14 @@ type BackendPermitJoin struct { // BackendPermitTask 通行证任务完成记录 type BackendPermitTask struct { - Platform string // 平台 - StartTs int64 // 活动开始时间 - SnId int32 // 玩家id - TaskId int32 // 任务id - TaskName string // 任务名称 - ActivityType int32 // 活动类型 - TaskType int32 // 任务类型 - Gain []AwardItem // 任务获得奖励 - Ts int64 // 时间戳 + Platform string // 平台 + StartTs int64 // 活动开始时间 + SnId int32 // 玩家id + TaskId int32 // 任务id + TaskName string // 任务名称 + ActivityType int32 // 活动类型 + TaskType int32 // 任务类型 + Gain []AwardItem // 任务获得奖励 + Ts int64 // 时间戳 + RemainDiamond int64 // 剩余钻石 } diff --git a/model/player.go b/model/player.go index 3175c16..5d84259 100644 --- a/model/player.go +++ b/model/player.go @@ -112,6 +112,8 @@ const ( SystemFreeGive_CollectBoxSwap // 卡片礼盒兑换奖励 SystemFreeGive_ClientUpgrade // 客户端升级奖励 SystemFreeGive_Guide // 新手引导奖励 + SystemFreeGive_NianEveryDayTask // 年兽每日任务 + SystemFreeGive_NianTask //年兽活动任务 ) const ( SystemFreeGive_CoinType_Coin int32 = iota //金币 @@ -132,6 +134,7 @@ const ( ActivityLog_Shop //商城购买 ActivityLog_Exchange //商城兑换 ActivityLog_CoinPigBank //金币存钱罐 + ActivityLog_NianBuff //年兽领取Buff ) type PlayerGameCtrlData struct { @@ -534,16 +537,33 @@ type TaskData struct { } type PigBankData struct { - TakeTimes int32 //一共领取次数 - BankCoin int64 //当前金币数量 - DayBuyTimes int32 //当天领取次数 + TakeTimes int32 //一共领取次数 + BankCoin int64 //当前金币数量 + DayBuyTimes int32 //当天领取次数 + TakeRecord map[int32]int64 // 每次领取记录 } // 钻石储存罐数据 type DiamondBankData struct { - TakeTimes int32 //一共领取次数 - BankDiamond float64 //当前钻石数量 - DayBuyTimes int32 //当天领取次数 + TakeTimes int32 //一共领取次数 + BankDiamond float64 //当前钻石数量 + DayBuyTimes int32 //当天领取次数 + TakeRecord map[int32]int64 // 每次领取记录 +} + +type RedPacketData struct { + N int64 // 领取次数 + RN int64 // 非空奖次数 + JN int32 // 参与次数 +} + +type PushCoinData struct { + Shake int32 // 震动次数 + Refresh int64 // 刷新次数 + Power int64 // 能量值 + Exchange map[int32]int32 // 兑换次数 兑换id:兑换次数 + Dram int // 抽奖次数 + Items map[int32]int64 // 道具 } type WelfareData struct { @@ -562,6 +582,9 @@ type WelfareData struct { DiamondBank *DiamondBankData // 钻石储存罐 PermitAward map[int32]int64 // 赛季通行证奖励领取时间 PermitExchange map[int32][]int64 // 赛季通行证兑换次数, 多次的兑换时间 + NianData *NianData //年兽活动数据 + RedPacket map[int64]*RedPacketData // 红包活动 活动id:领取次数 + PushCoin *PushCoinData // 推币机活动 } func NewWelfareData() *WelfareData { @@ -570,10 +593,19 @@ func NewWelfareData() *WelfareData { VIPBag: make(map[int32]map[int32]int32), Task: make(map[int32]*TaskData), PhoneLotteryTask: make(map[int32]*TaskData), - PigBank: &PigBankData{}, - DiamondBank: &DiamondBankData{}, - PermitAward: make(map[int32]int64), - PermitExchange: make(map[int32][]int64), + PigBank: &PigBankData{ + TakeRecord: make(map[int32]int64, 8), + }, + DiamondBank: &DiamondBankData{ + TakeRecord: make(map[int32]int64, 8), + }, + PermitAward: make(map[int32]int64), + PermitExchange: make(map[int32][]int64), + RedPacket: make(map[int64]*RedPacketData), + NianData: &NianData{ + OtherAwardNum: make(map[int32]int32), + GiftShop: make(map[int32]int32), + }, } } @@ -666,6 +698,24 @@ type WebPlayerDataParam struct { Long, PermitScore int64 } +type NianData struct { + ActivityStartTime int64 //活动开始时间 + ActivityEndTime int64 //活动结束时间 + BossHp int64 //Boss当前血量 + BuffStatus bool //Buff领取状态 + BuffCount int64 //Buff剩余生效次数 + SignAwardTime int64 //签到奖励领取时间 + SignOtherAwardCount int32 //签到额外奖励掉落数量 + SignOtherAwardProp int32 //签到额外奖励掉落概率 + BossDieCount int32 //BOSS死亡次数 + LittleHurt int32 //小爆竹次数 + BigHurt int32 //大爆竹次数 + OtherAwardNum map[int32]int32 //奖励掉落数量 + AttackMaxHp int64 //单次攻击最大血量 + AttackSumHp int64 //攻击总伤害 + GiftShop map[int32]int32 //购买每日礼包记录 +} + func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData { if param == nil || param.PlayerData == nil { return nil diff --git a/model/rank.go b/model/rank.go index 7fcdd75..f417be9 100644 --- a/model/rank.go +++ b/model/rank.go @@ -12,6 +12,7 @@ const ( MQRankPlayerInvite = "log_rankplayerinvite" MQRankPlayerLevel = "log_rankplayerlevel" MQRankPlayerPermit = "log_rankplayerpermit" // 赛季通行证排行榜 + MQRankNian = "log_ranknian" //年兽排行榜 ) // 排行榜类型 @@ -330,3 +331,91 @@ func SaveRankInvite(args *RankInvite) error { } return nil } + +// 年兽排行榜 +type NianInfo struct { + Platform string + SnId int32 + Name string + Luck int64 + Damage int64 + ModId int32 //头像 + LuckTime int64 //幸运值更新时间 + Ts int64 //更新时间 +} + +type FindNianListArgs struct { + Platform string +} +type FindNianListReply struct { + List []*NianInfo +} + +func FindLuckNianRankList(args *FindNianListArgs) (*FindNianListReply, error) { + if rpcCli == nil { + logger.Logger.Error("model.FindLuckNianList rpcCli == nil") + return nil, nil + } + + ret := new(FindNianListReply) + err := rpcCli.CallWithTimeout("RankNianSvc.LuckFind", args, ret, time.Second*30) + if err != nil { + logger.Logger.Error("GetNianLuckRankList error:", err) + return ret, err + } + return ret, nil +} + +func FindDamageNianRankList(args *FindNianListArgs) (*FindNianListReply, error) { + if rpcCli == nil { + logger.Logger.Error("model.FindNianList rpcCli == nil") + return nil, nil + } + + ret := new(FindNianListReply) + err := rpcCli.CallWithTimeout("RankNianSvc.DamageFind", args, ret, time.Second*30) + if err != nil { + logger.Logger.Error("GetNianDamageRankList error:", err) + return ret, err + } + return ret, nil +} +func ClearNianRank(args *FindNianListArgs) error { + if rpcCli == nil { + logger.Logger.Error("model.FindNianList rpcCli == nil") + return nil + } + ret := new(FindNianListReply) + err := rpcCli.CallWithTimeout("RankNianSvc.UpdateAll", args, ret, time.Second*30) + if err != nil { + logger.Logger.Error("GetNianDamageRankList error:", err) + return err + } + return nil +} +func DelNianRank(args *FindNianListArgs) error { + if rpcCli == nil { + logger.Logger.Error("model.FindNianList rpcCli == nil") + return nil + } + ret := new(FindNianListReply) + err := rpcCli.CallWithTimeout("RankNianSvc.DelAll", args, ret, time.Second*30) + if err != nil { + logger.Logger.Error("GetNianDamageRankList error:", err) + return err + } + return nil +} + +// 年兽排行榜记录 +type NianPlayerRankLog struct { + TypeId int32 //1-幸运榜 2:伤害榜 + RankData []*NianPlayerRankData + Platform string + Ts int64 +} +type NianPlayerRankData struct { + RankId int32 + Snid int32 + Score int64 +} diff --git a/model/redpacket.go b/model/redpacket.go new file mode 100644 index 0000000..1eeaa81 --- /dev/null +++ b/model/redpacket.go @@ -0,0 +1,124 @@ +package model + +import ( + "errors" + "time" + + "go.mongodb.org/mongo-driver/bson/primitive" + "mongo.games.com/goserver/core/logger" +) + +//go:generate mongoctl -model-dir=. -model-names=RedPacket -dao-dir=../dao/ +type RedPacket struct { + ID primitive.ObjectID `bson:"_id" gen:"autoFill"` + Cid int64 `bson:"cid"` // 红包活动id + Use map[int64]int64 `bson:"use"` // 已发红包 红包奖励数量:已发个数 + Ts int64 `bson:"ts"` // 更新时间戳 +} + +func (r *RedPacket) DatabaseName() string { + return "log" +} + +func (r *RedPacket) CollectionName() string { + return "log_redpacket" +} + +func GetRedPacketAll(plt string) (res []*RedPacket, err error) { + if rpcCli == nil { + logger.Logger.Error("model.GetRedPacketAll rpcCli == nil") + return nil, errors.New("rpc client is nil") + } + + res = make([]*RedPacket, 0) + + err = rpcCli.CallWithTimeout("RedPacketService.GetAll", &plt, &res, time.Second*30) + if err != nil { + logger.Logger.Errorf("GetRedPacketAll error: %v", err) + return nil, err + } + + return res, nil +} + +type UpdateRedPacketAllReq struct { + Plt string + List []*RedPacket +} + +func UpdateRedPacketAll(plt string, list []*RedPacket) error { + if rpcCli == nil { + logger.Logger.Error("model.UpdateRedPacketAll rpcCli == nil") + return errors.New("rpc client is nil") + } + req := &UpdateRedPacketAllReq{ + Plt: plt, + List: list, + } + res := false + + err := rpcCli.CallWithTimeout("RedPacketService.UpdateAll", req, &res, time.Second*30) + if err != nil { + logger.Logger.Errorf("UpdateRedPacketAll error: %v", err) + return err + } + + return nil +} + +// BackRedPacket 红包统计数据 +type BackRedPacket struct { + Platform string // 平台 + Id int32 // 红包活动id + SnId int32 // 玩家id + ItemId int32 // 道具id + ItemNum int64 // 道具数量 + Ts int64 // 时间戳 +} + +//go:generate mongoctl -model-dir=. -model-names=RedPacketHistory -dao-dir=../dao/ +type RedPacketHistory struct { + Platform string `bson:"-"` // 平台 + ID primitive.ObjectID `bson:"_id" gen:"autoFill"` + Cid int64 `bson:"cid"` // 红包活动id + Snid int32 `bson:"snid"` // 玩家id + Ts int64 `bson:"ts"` // 时间戳 + ItemId int32 `bson:"itemid"` // 道具id + ItemNum int64 `bson:"itemnum"` // 道具数量 +} + +func (r *RedPacketHistory) DatabaseName() string { + return "log" +} + +func (r *RedPacketHistory) CollectionName() string { + return "log_redpackethistory" +} + +type GetRedPacketHistoryReq struct { + Plt string + Snid int32 + Cid int64 +} + +func GetRedPacketHistory(plt string, snid int32, cid int64) (res []*RedPacketHistory, err error) { + if rpcCli == nil { + logger.Logger.Error("model.GetRedPacketHistory rpcCli == nil") + return nil, errors.New("rpc client is nil") + } + + req := &GetRedPacketHistoryReq{ + Plt: plt, + Snid: snid, + Cid: cid, + } + res = make([]*RedPacketHistory, 0) + + err = rpcCli.CallWithTimeout("RedPacketService.GetHistory", req, &res, time.Second*30) + if err != nil { + logger.Logger.Errorf("GetRedPacketHistory error: %v", err) + return nil, err + } + + return res, nil +} diff --git a/mq/export.go b/mq/export.go index d161a52..9ecc422 100644 --- a/mq/export.go +++ b/mq/export.go @@ -76,6 +76,7 @@ type RegisterHandlerParam struct { } // RegisterHandler 注册消息处理函数 +// 必须在init()函数中调用 func (c *MessageMgr) RegisterHandler(param *RegisterHandlerParam) { if param == nil { return @@ -143,6 +144,7 @@ func WriteWithOptions(data interface{}, name string, opts ...broker.PublishOptio } // RegisterHandler 注册消息处理函数 +// 必须在init()函数中调用 func RegisterHandler(param *RegisterHandlerParam) { MessageMgrSingle.RegisterHandler(param) } diff --git a/mq/keyconf.go b/mq/keyconf.go index 3dc3205..5e13415 100644 --- a/mq/keyconf.go +++ b/mq/keyconf.go @@ -19,6 +19,8 @@ const ( BackSystemJyb = "back_jyblog" BackActivityLog = "back_activitylog" BackOnlineGame = "back_onlinegame" + BackRedPacket = "back_redpacket" + NianPlayerRank = "log_nianplayerrank" ) // go后端 @@ -44,8 +46,9 @@ const ( DBInvite = "db_invite" DBAPILog = "db_apilog" DBGiveLog = "db_givelog" - DBLotteryCode = "db_lotterycode" // 玩家抽奖码 - DBLotteryLog = "db_lotterylog" // 中奖记录 + DBLotteryCode = "db_lotterycode" // 玩家抽奖码 + DBLotteryLog = "db_lotterylog" // 中奖记录 + DBRedPacket = "db_redpackethistory" // 红包记录 ) // ranksrv 消息 diff --git a/protocol/activity/actsign.pb.go b/protocol/activity/actsign.pb.go deleted file mode 100644 index d2658b4..0000000 --- a/protocol/activity/actsign.pb.go +++ /dev/null @@ -1,515 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.27.1-devel -// protoc v3.19.4 -// source: protocol/activity/actsign.proto - -package activity - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -//操作结果 -type OpResultCode_ActSign int32 - -const ( - OpResultCode_ActSign_OPRC_Activity_Sign_Sucess OpResultCode_ActSign = 0 //成功 - OpResultCode_ActSign_OPRC_Activity_Sign_Error OpResultCode_ActSign = 1 //失败 - OpResultCode_ActSign_OPRC_Activity_Sign_Close OpResultCode_ActSign = 1001 //活动未开启 - OpResultCode_ActSign_OPRC_Activity_Sign_PayNum_Low OpResultCode_ActSign = 1002 //未达到最低充值金额 - OpResultCode_ActSign_OPRC_Activity_Sign_Config_Vip_Error OpResultCode_ActSign = 1003 //vip不匹配 - OpResultCode_ActSign_OPRC_Activity_Sign_Config_Day_Error OpResultCode_ActSign = 1004 //签到天数不匹配 - OpResultCode_ActSign_OPRC_Activity_Sign_Repeat OpResultCode_ActSign = 1005 //重复签到 -) - -// Enum value maps for OpResultCode_ActSign. -var ( - OpResultCode_ActSign_name = map[int32]string{ - 0: "OPRC_Activity_Sign_Sucess", - 1: "OPRC_Activity_Sign_Error", - 1001: "OPRC_Activity_Sign_Close", - 1002: "OPRC_Activity_Sign_PayNum_Low", - 1003: "OPRC_Activity_Sign_Config_Vip_Error", - 1004: "OPRC_Activity_Sign_Config_Day_Error", - 1005: "OPRC_Activity_Sign_Repeat", - } - OpResultCode_ActSign_value = map[string]int32{ - "OPRC_Activity_Sign_Sucess": 0, - "OPRC_Activity_Sign_Error": 1, - "OPRC_Activity_Sign_Close": 1001, - "OPRC_Activity_Sign_PayNum_Low": 1002, - "OPRC_Activity_Sign_Config_Vip_Error": 1003, - "OPRC_Activity_Sign_Config_Day_Error": 1004, - "OPRC_Activity_Sign_Repeat": 1005, - } -) - -func (x OpResultCode_ActSign) Enum() *OpResultCode_ActSign { - p := new(OpResultCode_ActSign) - *p = x - return p -} - -func (x OpResultCode_ActSign) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (OpResultCode_ActSign) Descriptor() protoreflect.EnumDescriptor { - return file_protocol_activity_actsign_proto_enumTypes[0].Descriptor() -} - -func (OpResultCode_ActSign) Type() protoreflect.EnumType { - return &file_protocol_activity_actsign_proto_enumTypes[0] -} - -func (x OpResultCode_ActSign) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use OpResultCode_ActSign.Descriptor instead. -func (OpResultCode_ActSign) EnumDescriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{0} -} - -// 签到 -type ActSignPacketID int32 - -const ( - ActSignPacketID_PACKET_SignZero ActSignPacketID = 0 // 弃用消息号 - ActSignPacketID_PACKET_CSSign ActSignPacketID = 2662 // 签到 - ActSignPacketID_PACKET_SCSign ActSignPacketID = 2663 - ActSignPacketID_PACKET_CSSignData ActSignPacketID = 2664 // 签到数据 - ActSignPacketID_PACKET_SCSignData ActSignPacketID = 2665 -) - -// Enum value maps for ActSignPacketID. -var ( - ActSignPacketID_name = map[int32]string{ - 0: "PACKET_SignZero", - 2662: "PACKET_CSSign", - 2663: "PACKET_SCSign", - 2664: "PACKET_CSSignData", - 2665: "PACKET_SCSignData", - } - ActSignPacketID_value = map[string]int32{ - "PACKET_SignZero": 0, - "PACKET_CSSign": 2662, - "PACKET_SCSign": 2663, - "PACKET_CSSignData": 2664, - "PACKET_SCSignData": 2665, - } -) - -func (x ActSignPacketID) Enum() *ActSignPacketID { - p := new(ActSignPacketID) - *p = x - return p -} - -func (x ActSignPacketID) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ActSignPacketID) Descriptor() protoreflect.EnumDescriptor { - return file_protocol_activity_actsign_proto_enumTypes[1].Descriptor() -} - -func (ActSignPacketID) Type() protoreflect.EnumType { - return &file_protocol_activity_actsign_proto_enumTypes[1] -} - -func (x ActSignPacketID) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ActSignPacketID.Descriptor instead. -func (ActSignPacketID) EnumDescriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{1} -} - -//PACKET_CSSign -type CSSign struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SignIndex int32 `protobuf:"varint,1,opt,name=SignIndex,proto3" json:"SignIndex,omitempty"` - SignType int32 `protobuf:"varint,2,opt,name=SignType,proto3" json:"SignType,omitempty"` //0.普通签到 1.双倍签到 -} - -func (x *CSSign) Reset() { - *x = CSSign{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSSign) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSSign) ProtoMessage() {} - -func (x *CSSign) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CSSign.ProtoReflect.Descriptor instead. -func (*CSSign) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{0} -} - -func (x *CSSign) GetSignIndex() int32 { - if x != nil { - return x.SignIndex - } - return 0 -} - -func (x *CSSign) GetSignType() int32 { - if x != nil { - return x.SignType - } - return 0 -} - -//PACKET_SCSign -type SCSign struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SignIndex int32 `protobuf:"varint,1,opt,name=SignIndex,proto3" json:"SignIndex,omitempty"` - SignType int32 `protobuf:"varint,2,opt,name=SignType,proto3" json:"SignType,omitempty"` //0.普通签到 1.双倍签到 - OpRetCode OpResultCode_ActSign `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_ActSign" json:"OpRetCode,omitempty"` -} - -func (x *SCSign) Reset() { - *x = SCSign{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCSign) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCSign) ProtoMessage() {} - -func (x *SCSign) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_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 SCSign.ProtoReflect.Descriptor instead. -func (*SCSign) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{1} -} - -func (x *SCSign) GetSignIndex() int32 { - if x != nil { - return x.SignIndex - } - return 0 -} - -func (x *SCSign) GetSignType() int32 { - if x != nil { - return x.SignType - } - return 0 -} - -func (x *SCSign) GetOpRetCode() OpResultCode_ActSign { - if x != nil { - return x.OpRetCode - } - return OpResultCode_ActSign_OPRC_Activity_Sign_Sucess -} - -//PACKET_CSSignData -type CSSignData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *CSSignData) Reset() { - *x = CSSignData{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CSSignData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CSSignData) ProtoMessage() {} - -func (x *CSSignData) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_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 CSSignData.ProtoReflect.Descriptor instead. -func (*CSSignData) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{2} -} - -//PACKET_SCSignData -type SCSignData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SignCount int32 `protobuf:"varint,1,opt,name=SignCount,proto3" json:"SignCount,omitempty"` - TodaySign int32 `protobuf:"varint,2,opt,name=TodaySign,proto3" json:"TodaySign,omitempty"` //0.未签到 1.已签到 -} - -func (x *SCSignData) Reset() { - *x = SCSignData{} - if protoimpl.UnsafeEnabled { - mi := &file_protocol_activity_actsign_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SCSignData) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SCSignData) ProtoMessage() {} - -func (x *SCSignData) ProtoReflect() protoreflect.Message { - mi := &file_protocol_activity_actsign_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 SCSignData.ProtoReflect.Descriptor instead. -func (*SCSignData) Descriptor() ([]byte, []int) { - return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{3} -} - -func (x *SCSignData) GetSignCount() int32 { - if x != nil { - return x.SignCount - } - return 0 -} - -func (x *SCSignData) GetTodaySign() int32 { - if x != nil { - return x.TodaySign - } - return 0 -} - -var File_protocol_activity_actsign_proto protoreflect.FileDescriptor - -var file_protocol_activity_actsign_proto_rawDesc = []byte{ - 0x0a, 0x1f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x2f, 0x61, 0x63, 0x74, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x42, 0x0a, 0x06, 0x43, - 0x53, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x80, 0x01, 0x0a, 0x06, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, - 0x67, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x69, 0x67, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, - 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x48, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, - 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x54, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x2a, 0x8a, 0x02, 0x0a, 0x14, 0x4f, - 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x41, 0x63, 0x74, 0x53, - 0x69, 0x67, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, - 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, - 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xe9, 0x07, 0x12, - 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x50, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x5f, 0x4c, 0x6f, 0x77, - 0x10, 0xea, 0x07, 0x12, 0x28, 0x0a, 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x56, 0x69, 0x70, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xeb, 0x07, 0x12, 0x28, 0x0a, - 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, - 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x44, 0x61, 0x79, 0x5f, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x52, 0x65, - 0x70, 0x65, 0x61, 0x74, 0x10, 0xed, 0x07, 0x2a, 0x7e, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x53, 0x69, - 0x67, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, - 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, - 0x10, 0xe6, 0x14, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x53, 0x69, 0x67, 0x6e, 0x10, 0xe7, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12, - 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 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, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_protocol_activity_actsign_proto_rawDescOnce sync.Once - file_protocol_activity_actsign_proto_rawDescData = file_protocol_activity_actsign_proto_rawDesc -) - -func file_protocol_activity_actsign_proto_rawDescGZIP() []byte { - file_protocol_activity_actsign_proto_rawDescOnce.Do(func() { - file_protocol_activity_actsign_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_activity_actsign_proto_rawDescData) - }) - return file_protocol_activity_actsign_proto_rawDescData -} - -var file_protocol_activity_actsign_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protocol_activity_actsign_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_protocol_activity_actsign_proto_goTypes = []interface{}{ - (OpResultCode_ActSign)(0), // 0: activity.OpResultCode_ActSign - (ActSignPacketID)(0), // 1: activity.ActSignPacketID - (*CSSign)(nil), // 2: activity.CSSign - (*SCSign)(nil), // 3: activity.SCSign - (*CSSignData)(nil), // 4: activity.CSSignData - (*SCSignData)(nil), // 5: activity.SCSignData -} -var file_protocol_activity_actsign_proto_depIdxs = []int32{ - 0, // 0: activity.SCSign.OpRetCode:type_name -> activity.OpResultCode_ActSign - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_protocol_activity_actsign_proto_init() } -func file_protocol_activity_actsign_proto_init() { - if File_protocol_activity_actsign_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_protocol_activity_actsign_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSSign); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protocol_activity_actsign_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCSign); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protocol_activity_actsign_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSSignData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_protocol_activity_actsign_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCSignData); 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_protocol_activity_actsign_proto_rawDesc, - NumEnums: 2, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_protocol_activity_actsign_proto_goTypes, - DependencyIndexes: file_protocol_activity_actsign_proto_depIdxs, - EnumInfos: file_protocol_activity_actsign_proto_enumTypes, - MessageInfos: file_protocol_activity_actsign_proto_msgTypes, - }.Build() - File_protocol_activity_actsign_proto = out.File - file_protocol_activity_actsign_proto_rawDesc = nil - file_protocol_activity_actsign_proto_goTypes = nil - file_protocol_activity_actsign_proto_depIdxs = nil -} diff --git a/protocol/activity/actsign.proto b/protocol/activity/actsign.proto deleted file mode 100644 index f7b6f65..0000000 --- a/protocol/activity/actsign.proto +++ /dev/null @@ -1,43 +0,0 @@ -syntax = "proto3"; -package activity; -option go_package = "mongo.games.com/game/protocol/activity"; - -//操作结果 -enum OpResultCode_ActSign { - OPRC_Activity_Sign_Sucess = 0; //成功 - OPRC_Activity_Sign_Error = 1; //失败 - OPRC_Activity_Sign_Close = 1001; //活动未开启 - OPRC_Activity_Sign_PayNum_Low = 1002; //未达到最低充值金额 - OPRC_Activity_Sign_Config_Vip_Error = 1003; //vip不匹配 - OPRC_Activity_Sign_Config_Day_Error = 1004; //签到天数不匹配 - OPRC_Activity_Sign_Repeat = 1005; //重复签到 -} -// 签到 -enum ActSignPacketID { - PACKET_SignZero = 0;// 弃用消息号 - PACKET_CSSign = 2662;// 签到 - PACKET_SCSign = 2663; - PACKET_CSSignData = 2664;// 签到数据 - PACKET_SCSignData = 2665; -} - -//PACKET_CSSign -message CSSign { - int32 SignIndex = 1; - int32 SignType = 2; //0.普通签到 1.双倍签到 -} -//PACKET_SCSign -message SCSign { - int32 SignIndex = 1; - int32 SignType = 2; //0.普通签到 1.双倍签到 - OpResultCode_ActSign OpRetCode = 3; -} - -//PACKET_CSSignData -message CSSignData { -} -//PACKET_SCSignData -message SCSignData { - int32 SignCount = 1; - int32 TodaySign = 2; //0.未签到 1.已签到 -} \ No newline at end of file diff --git a/protocol/activity/nian.pb.go b/protocol/activity/nian.pb.go new file mode 100644 index 0000000..95990c0 --- /dev/null +++ b/protocol/activity/nian.pb.go @@ -0,0 +1,1579 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: protocol/activity/nian.proto + +package activity + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type NianPacketID int32 + +const ( + NianPacketID_PACKET_Nian_ZERO NianPacketID = 0 // 弃用消息号 + NianPacketID_PACKET_CSNianData NianPacketID = 2660 // 获取年兽信息 + NianPacketID_PACKET_SCNianData NianPacketID = 2661 // 返回年兽信息 + NianPacketID_PACKET_CSNianBuff NianPacketID = 2662 // 请求领取BUFF + NianPacketID_PACKET_SCNianBuff NianPacketID = 2663 // 返回Buff信息 + NianPacketID_PACKET_CSNianRankData NianPacketID = 2664 // 请求排行榜信息 + NianPacketID_PACKET_SCNianRankData NianPacketID = 2665 // 返回排行榜信息 + NianPacketID_PACKET_CSNianAttack NianPacketID = 2666 //请求攻击年兽 + NianPacketID_PACKET_SCNianAttackData NianPacketID = 2667 //返回攻击年兽信息 + NianPacketID_PACKET_CSNianSignAward NianPacketID = 2668 //请求签到 + NianPacketID_PACKET_SCNianSignAward NianPacketID = 2669 //签到返回 + NianPacketID_PACKET_CSNianChange NianPacketID = 2670 //请求兑换小爆竹 + NianPacketID_PACKET_SCNianChange NianPacketID = 2671 //返回兑换道具 +) + +// Enum value maps for NianPacketID. +var ( + NianPacketID_name = map[int32]string{ + 0: "PACKET_Nian_ZERO", + 2660: "PACKET_CSNianData", + 2661: "PACKET_SCNianData", + 2662: "PACKET_CSNianBuff", + 2663: "PACKET_SCNianBuff", + 2664: "PACKET_CSNianRankData", + 2665: "PACKET_SCNianRankData", + 2666: "PACKET_CSNianAttack", + 2667: "PACKET_SCNianAttackData", + 2668: "PACKET_CSNianSignAward", + 2669: "PACKET_SCNianSignAward", + 2670: "PACKET_CSNianChange", + 2671: "PACKET_SCNianChange", + } + NianPacketID_value = map[string]int32{ + "PACKET_Nian_ZERO": 0, + "PACKET_CSNianData": 2660, + "PACKET_SCNianData": 2661, + "PACKET_CSNianBuff": 2662, + "PACKET_SCNianBuff": 2663, + "PACKET_CSNianRankData": 2664, + "PACKET_SCNianRankData": 2665, + "PACKET_CSNianAttack": 2666, + "PACKET_SCNianAttackData": 2667, + "PACKET_CSNianSignAward": 2668, + "PACKET_SCNianSignAward": 2669, + "PACKET_CSNianChange": 2670, + "PACKET_SCNianChange": 2671, + } +) + +func (x NianPacketID) Enum() *NianPacketID { + p := new(NianPacketID) + *p = x + return p +} + +func (x NianPacketID) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (NianPacketID) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_nian_proto_enumTypes[0].Descriptor() +} + +func (NianPacketID) Type() protoreflect.EnumType { + return &file_protocol_activity_nian_proto_enumTypes[0] +} + +func (x NianPacketID) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use NianPacketID.Descriptor instead. +func (NianPacketID) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{0} +} + +//操作结果 +type OpResultCode_Nian int32 + +const ( + OpResultCode_Nian_OPRC_Sucess_Nian OpResultCode_Nian = 0 //成功 + OpResultCode_Nian_OPRC_Error_Nian OpResultCode_Nian = 1 //失败 +) + +// Enum value maps for OpResultCode_Nian. +var ( + OpResultCode_Nian_name = map[int32]string{ + 0: "OPRC_Sucess_Nian", + 1: "OPRC_Error_Nian", + } + OpResultCode_Nian_value = map[string]int32{ + "OPRC_Sucess_Nian": 0, + "OPRC_Error_Nian": 1, + } +) + +func (x OpResultCode_Nian) Enum() *OpResultCode_Nian { + p := new(OpResultCode_Nian) + *p = x + return p +} + +func (x OpResultCode_Nian) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpResultCode_Nian) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_nian_proto_enumTypes[1].Descriptor() +} + +func (OpResultCode_Nian) Type() protoreflect.EnumType { + return &file_protocol_activity_nian_proto_enumTypes[1] +} + +func (x OpResultCode_Nian) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpResultCode_Nian.Descriptor instead. +func (OpResultCode_Nian) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{1} +} + +//获取年兽活动信息 +//PACKET_CSNianData +type CSNianData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSNianData) Reset() { + *x = CSNianData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNianData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNianData) ProtoMessage() {} + +func (x *CSNianData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSNianData.ProtoReflect.Descriptor instead. +func (*CSNianData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{0} +} + +//PACKET_SCNianData +type SCNianData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ActivityStartTime int64 `protobuf:"varint,1,opt,name=ActivityStartTime,proto3" json:"ActivityStartTime,omitempty"` //活动开始时间 + ActivityEndTime int64 `protobuf:"varint,2,opt,name=ActivityEndTime,proto3" json:"ActivityEndTime,omitempty"` //活动结束时间 + BossMaxHp int64 `protobuf:"varint,3,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"` //Boss最大血量 + BossHp int64 `protobuf:"varint,4,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //Boss当前血量 + RankData []*NianRankData `protobuf:"bytes,5,rep,name=RankData,proto3" json:"RankData,omitempty"` //排行榜奖励配置 + AwardTime int64 `protobuf:"varint,6,opt,name=AwardTime,proto3" json:"AwardTime,omitempty"` //每日签到领取时间 + BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //Buff剩余次数 + BuffStatus bool `protobuf:"varint,8,opt,name=BuffStatus,proto3" json:"BuffStatus,omitempty"` //Buff领取状态 + SignAwardTime int64 `protobuf:"varint,9,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` //签到领取时间 0-未领取 + BuffStartTime int64 `protobuf:"varint,10,opt,name=BuffStartTime,proto3" json:"BuffStartTime,omitempty"` //Buff开始领取时间 + BuffEndTime int64 `protobuf:"varint,11,opt,name=BuffEndTime,proto3" json:"BuffEndTime,omitempty"` //Buff结束领取时间 + ShopData []*ShopData `protobuf:"bytes,12,rep,name=shopData,proto3" json:"shopData,omitempty"` //购买礼包数量 + ChangeData string `protobuf:"bytes,13,opt,name=ChangeData,proto3" json:"ChangeData,omitempty"` //兑换数据 + LuckyRankNeed string `protobuf:"bytes,14,opt,name=LuckyRankNeed,proto3" json:"LuckyRankNeed,omitempty"` //幸运榜上榜条件 + RankNeed string `protobuf:"bytes,15,opt,name=RankNeed,proto3" json:"RankNeed,omitempty"` //总伤害榜上榜条件 + Switch int32 `protobuf:"varint,16,opt,name=Switch,proto3" json:"Switch,omitempty"` //活动开关 1.开启 2.关闭 + OtherSignAwardCount int32 `protobuf:"varint,17,opt,name=OtherSignAwardCount,proto3" json:"OtherSignAwardCount,omitempty"` //额外奖励领取次数 + OtherSignAwardProp int32 `protobuf:"varint,18,opt,name=OtherSignAwardProp,proto3" json:"OtherSignAwardProp,omitempty"` //额外奖励概率 + OtherSignAward []*RankAwardData `protobuf:"bytes,19,rep,name=OtherSignAward,proto3" json:"OtherSignAward,omitempty"` //签到额外奖励 + OtherSignMaxCount int32 `protobuf:"varint,20,opt,name=OtherSignMaxCount,proto3" json:"OtherSignMaxCount,omitempty"` //额外奖励领取次数上限 + AttackMaxHp int64 `protobuf:"varint,21,opt,name=AttackMaxHp,proto3" json:"AttackMaxHp,omitempty"` //单次攻击最大血量 + AttackSumHp int64 `protobuf:"varint,22,opt,name=AttackSumHp,proto3" json:"AttackSumHp,omitempty"` //攻击总伤害 +} + +func (x *SCNianData) Reset() { + *x = SCNianData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNianData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNianData) ProtoMessage() {} + +func (x *SCNianData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 SCNianData.ProtoReflect.Descriptor instead. +func (*SCNianData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{1} +} + +func (x *SCNianData) GetActivityStartTime() int64 { + if x != nil { + return x.ActivityStartTime + } + return 0 +} + +func (x *SCNianData) GetActivityEndTime() int64 { + if x != nil { + return x.ActivityEndTime + } + return 0 +} + +func (x *SCNianData) GetBossMaxHp() int64 { + if x != nil { + return x.BossMaxHp + } + return 0 +} + +func (x *SCNianData) GetBossHp() int64 { + if x != nil { + return x.BossHp + } + return 0 +} + +func (x *SCNianData) GetRankData() []*NianRankData { + if x != nil { + return x.RankData + } + return nil +} + +func (x *SCNianData) GetAwardTime() int64 { + if x != nil { + return x.AwardTime + } + return 0 +} + +func (x *SCNianData) GetBuffCount() int64 { + if x != nil { + return x.BuffCount + } + return 0 +} + +func (x *SCNianData) GetBuffStatus() bool { + if x != nil { + return x.BuffStatus + } + return false +} + +func (x *SCNianData) GetSignAwardTime() int64 { + if x != nil { + return x.SignAwardTime + } + return 0 +} + +func (x *SCNianData) GetBuffStartTime() int64 { + if x != nil { + return x.BuffStartTime + } + return 0 +} + +func (x *SCNianData) GetBuffEndTime() int64 { + if x != nil { + return x.BuffEndTime + } + return 0 +} + +func (x *SCNianData) GetShopData() []*ShopData { + if x != nil { + return x.ShopData + } + return nil +} + +func (x *SCNianData) GetChangeData() string { + if x != nil { + return x.ChangeData + } + return "" +} + +func (x *SCNianData) GetLuckyRankNeed() string { + if x != nil { + return x.LuckyRankNeed + } + return "" +} + +func (x *SCNianData) GetRankNeed() string { + if x != nil { + return x.RankNeed + } + return "" +} + +func (x *SCNianData) GetSwitch() int32 { + if x != nil { + return x.Switch + } + return 0 +} + +func (x *SCNianData) GetOtherSignAwardCount() int32 { + if x != nil { + return x.OtherSignAwardCount + } + return 0 +} + +func (x *SCNianData) GetOtherSignAwardProp() int32 { + if x != nil { + return x.OtherSignAwardProp + } + return 0 +} + +func (x *SCNianData) GetOtherSignAward() []*RankAwardData { + if x != nil { + return x.OtherSignAward + } + return nil +} + +func (x *SCNianData) GetOtherSignMaxCount() int32 { + if x != nil { + return x.OtherSignMaxCount + } + return 0 +} + +func (x *SCNianData) GetAttackMaxHp() int64 { + if x != nil { + return x.AttackMaxHp + } + return 0 +} + +func (x *SCNianData) GetAttackSumHp() int64 { + if x != nil { + return x.AttackSumHp + } + return 0 +} + +type ShopData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ShopId int32 `protobuf:"varint,1,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //shopId + ShopNum int32 `protobuf:"varint,2,opt,name=ShopNum,proto3" json:"ShopNum,omitempty"` //已购买次数 + MaxShopNum int32 `protobuf:"varint,3,opt,name=MaxShopNum,proto3" json:"MaxShopNum,omitempty"` //最大购买次数 +} + +func (x *ShopData) Reset() { + *x = ShopData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShopData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShopData) ProtoMessage() {} + +func (x *ShopData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 ShopData.ProtoReflect.Descriptor instead. +func (*ShopData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{2} +} + +func (x *ShopData) GetShopId() int32 { + if x != nil { + return x.ShopId + } + return 0 +} + +func (x *ShopData) GetShopNum() int32 { + if x != nil { + return x.ShopNum + } + return 0 +} + +func (x *ShopData) GetMaxShopNum() int32 { + if x != nil { + return x.MaxShopNum + } + return 0 +} + +//贺春 +//请求领取BUFF +//PACKET_CSNianBuff +type CSNianBuff struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSNianBuff) Reset() { + *x = CSNianBuff{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNianBuff) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNianBuff) ProtoMessage() {} + +func (x *CSNianBuff) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 CSNianBuff.ProtoReflect.Descriptor instead. +func (*CSNianBuff) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{3} +} + +//PACKET_SCNianBuff +type SCNianBuff struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BuffCount int64 `protobuf:"varint,1,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //BUFF剩余次数 + OpRetCode OpResultCode_Nian `protobuf:"varint,2,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_Nian" json:"OpRetCode,omitempty"` // 返回错误码 +} + +func (x *SCNianBuff) Reset() { + *x = SCNianBuff{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNianBuff) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNianBuff) ProtoMessage() {} + +func (x *SCNianBuff) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 SCNianBuff.ProtoReflect.Descriptor instead. +func (*SCNianBuff) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{4} +} + +func (x *SCNianBuff) GetBuffCount() int64 { + if x != nil { + return x.BuffCount + } + return 0 +} + +func (x *SCNianBuff) GetOpRetCode() OpResultCode_Nian { + if x != nil { + return x.OpRetCode + } + return OpResultCode_Nian_OPRC_Sucess_Nian +} + +type NianRankData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-总榜 + Data []*NianRankInfo `protobuf:"bytes,2,rep,name=Data,proto3" json:"Data,omitempty"` +} + +func (x *NianRankData) Reset() { + *x = NianRankData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankData) ProtoMessage() {} + +func (x *NianRankData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 NianRankData.ProtoReflect.Descriptor instead. +func (*NianRankData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{5} +} + +func (x *NianRankData) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *NianRankData) GetData() []*NianRankInfo { + if x != nil { + return x.Data + } + return nil +} + +type NianRankInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RankId int32 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` + Award []*RankAwardData `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` +} + +func (x *NianRankInfo) Reset() { + *x = NianRankInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankInfo) ProtoMessage() {} + +func (x *NianRankInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 NianRankInfo.ProtoReflect.Descriptor instead. +func (*NianRankInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{6} +} + +func (x *NianRankInfo) GetRankId() int32 { + if x != nil { + return x.RankId + } + return 0 +} + +func (x *NianRankInfo) GetAward() []*RankAwardData { + if x != nil { + return x.Award + } + return nil +} + +type RankAwardData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` + ItemNum int64 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` +} + +func (x *RankAwardData) Reset() { + *x = RankAwardData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RankAwardData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RankAwardData) ProtoMessage() {} + +func (x *RankAwardData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 RankAwardData.ProtoReflect.Descriptor instead. +func (*RankAwardData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{7} +} + +func (x *RankAwardData) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *RankAwardData) GetItemNum() int64 { + if x != nil { + return x.ItemNum + } + return 0 +} + +//攻击年兽 +//PACKET_CSNianAttack +type CSNianAttack struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-小爆竹 2-小爆竹*10 3-大爆竹 +} + +func (x *CSNianAttack) Reset() { + *x = CSNianAttack{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNianAttack) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNianAttack) ProtoMessage() {} + +func (x *CSNianAttack) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 CSNianAttack.ProtoReflect.Descriptor instead. +func (*CSNianAttack) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{8} +} + +func (x *CSNianAttack) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +//PACKET_SCNianAttackData +type SCNianAttackData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-小爆竹 2-小爆竹*10 3-大爆竹 + BossHp int64 `protobuf:"varint,2,opt,name=BossHp,proto3" json:"BossHp,omitempty"` //BOSS当前血量 + Award []*RankAwardData `protobuf:"bytes,3,rep,name=Award,proto3" json:"Award,omitempty"` //获得道具 + AttackHp int64 `protobuf:"varint,4,opt,name=AttackHp,proto3" json:"AttackHp,omitempty"` // 攻击伤害 + IsDie bool `protobuf:"varint,5,opt,name=IsDie,proto3" json:"IsDie,omitempty"` //BOSS是否死亡 + DieAward []*RankAwardData `protobuf:"bytes,6,rep,name=DieAward,proto3" json:"DieAward,omitempty"` //BOSS死亡奖励 + BuffCount int64 `protobuf:"varint,7,opt,name=BuffCount,proto3" json:"BuffCount,omitempty"` //BUFF剩余次数 + ExtraDrop []*RankAwardData `protobuf:"bytes,8,rep,name=ExtraDrop,proto3" json:"ExtraDrop,omitempty"` //大爆竹额外掉落 + FloorReward []*RankAwardData `protobuf:"bytes,9,rep,name=FloorReward,proto3" json:"FloorReward,omitempty"` //保底奖励 + AttackMaxHp int64 `protobuf:"varint,10,opt,name=AttackMaxHp,proto3" json:"AttackMaxHp,omitempty"` //单次攻击最大血量 + AttackSumHp int64 `protobuf:"varint,11,opt,name=AttackSumHp,proto3" json:"AttackSumHp,omitempty"` //攻击总伤害 +} + +func (x *SCNianAttackData) Reset() { + *x = SCNianAttackData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNianAttackData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNianAttackData) ProtoMessage() {} + +func (x *SCNianAttackData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 SCNianAttackData.ProtoReflect.Descriptor instead. +func (*SCNianAttackData) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{9} +} + +func (x *SCNianAttackData) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *SCNianAttackData) GetBossHp() int64 { + if x != nil { + return x.BossHp + } + return 0 +} + +func (x *SCNianAttackData) GetAward() []*RankAwardData { + if x != nil { + return x.Award + } + return nil +} + +func (x *SCNianAttackData) GetAttackHp() int64 { + if x != nil { + return x.AttackHp + } + return 0 +} + +func (x *SCNianAttackData) GetIsDie() bool { + if x != nil { + return x.IsDie + } + return false +} + +func (x *SCNianAttackData) GetDieAward() []*RankAwardData { + if x != nil { + return x.DieAward + } + return nil +} + +func (x *SCNianAttackData) GetBuffCount() int64 { + if x != nil { + return x.BuffCount + } + return 0 +} + +func (x *SCNianAttackData) GetExtraDrop() []*RankAwardData { + if x != nil { + return x.ExtraDrop + } + return nil +} + +func (x *SCNianAttackData) GetFloorReward() []*RankAwardData { + if x != nil { + return x.FloorReward + } + return nil +} + +func (x *SCNianAttackData) GetAttackMaxHp() int64 { + if x != nil { + return x.AttackMaxHp + } + return 0 +} + +func (x *SCNianAttackData) GetAttackSumHp() int64 { + if x != nil { + return x.AttackSumHp + } + return 0 +} + +//领取签到奖励 +//PACKET_CSNianSignAward +type CSNianSignAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSNianSignAward) Reset() { + *x = CSNianSignAward{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNianSignAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNianSignAward) ProtoMessage() {} + +func (x *CSNianSignAward) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 CSNianSignAward.ProtoReflect.Descriptor instead. +func (*CSNianSignAward) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{10} +} + +//PACKET_SCNianSignAward +type SCNianSignAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SignAwardTime int64 `protobuf:"varint,1,opt,name=SignAwardTime,proto3" json:"SignAwardTime,omitempty"` + SignAward []*RankAwardData `protobuf:"bytes,2,rep,name=SignAward,proto3" json:"SignAward,omitempty"` //签到奖励 + OtherSignAward []*RankAwardData `protobuf:"bytes,3,rep,name=OtherSignAward,proto3" json:"OtherSignAward,omitempty"` //签到额外奖励 + OtherSignAwardCount int32 `protobuf:"varint,4,opt,name=OtherSignAwardCount,proto3" json:"OtherSignAwardCount,omitempty"` //额外奖励领取次数 + OtherSignAwardProp int32 `protobuf:"varint,5,opt,name=OtherSignAwardProp,proto3" json:"OtherSignAwardProp,omitempty"` //额外奖励概率 + OpRetCode OpResultCode_Nian `protobuf:"varint,6,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_Nian" json:"OpRetCode,omitempty"` // 返回错误码 +} + +func (x *SCNianSignAward) Reset() { + *x = SCNianSignAward{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNianSignAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNianSignAward) ProtoMessage() {} + +func (x *SCNianSignAward) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 SCNianSignAward.ProtoReflect.Descriptor instead. +func (*SCNianSignAward) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{11} +} + +func (x *SCNianSignAward) GetSignAwardTime() int64 { + if x != nil { + return x.SignAwardTime + } + return 0 +} + +func (x *SCNianSignAward) GetSignAward() []*RankAwardData { + if x != nil { + return x.SignAward + } + return nil +} + +func (x *SCNianSignAward) GetOtherSignAward() []*RankAwardData { + if x != nil { + return x.OtherSignAward + } + return nil +} + +func (x *SCNianSignAward) GetOtherSignAwardCount() int32 { + if x != nil { + return x.OtherSignAwardCount + } + return 0 +} + +func (x *SCNianSignAward) GetOtherSignAwardProp() int32 { + if x != nil { + return x.OtherSignAwardProp + } + return 0 +} + +func (x *SCNianSignAward) GetOpRetCode() OpResultCode_Nian { + if x != nil { + return x.OpRetCode + } + return OpResultCode_Nian_OPRC_Sucess_Nian +} + +//兑换 +//PACKET_CSNianChange +type CSNianChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` +} + +func (x *CSNianChange) Reset() { + *x = CSNianChange{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNianChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNianChange) ProtoMessage() {} + +func (x *CSNianChange) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_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 CSNianChange.ProtoReflect.Descriptor instead. +func (*CSNianChange) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{12} +} + +func (x *CSNianChange) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +//PACKET_SCNianChange +type SCNianChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` + Award []*RankAwardData `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` + OpRetCode OpResultCode_Nian `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_Nian" json:"OpRetCode,omitempty"` // 返回错误码 +} + +func (x *SCNianChange) Reset() { + *x = SCNianChange{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_nian_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNianChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNianChange) ProtoMessage() {} + +func (x *SCNianChange) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_nian_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCNianChange.ProtoReflect.Descriptor instead. +func (*SCNianChange) Descriptor() ([]byte, []int) { + return file_protocol_activity_nian_proto_rawDescGZIP(), []int{13} +} + +func (x *SCNianChange) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *SCNianChange) GetAward() []*RankAwardData { + if x != nil { + return x.Award + } + return nil +} + +func (x *SCNianChange) GetOpRetCode() OpResultCode_Nian { + if x != nil { + return x.OpRetCode + } + return OpResultCode_Nian_OPRC_Sucess_Nian +} + +var File_protocol_activity_nian_proto protoreflect.FileDescriptor + +var file_protocol_activity_nian_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2f, 0x6e, 0x69, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, + 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x06, 0x0a, 0x0a, 0x53, 0x43, 0x4e, 0x69, 0x61, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x42, + 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, + 0x73, 0x48, 0x70, 0x12, 0x32, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x52, + 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x75, 0x66, + 0x66, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x53, + 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x73, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, 0x61, 0x6e, 0x6b, 0x4e, 0x65, + 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x75, 0x63, 0x6b, 0x79, 0x52, + 0x61, 0x6e, 0x6b, 0x4e, 0x65, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, + 0x65, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x4e, + 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x13, 0x4f, + 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, + 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, + 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, + 0x72, 0x6f, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, 0x3f, 0x0a, + 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, + 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2c, + 0x0a, 0x11, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, + 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, + 0x22, 0x5c, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, + 0x6f, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x1e, + 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x22, 0x0c, + 0x0a, 0x0a, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x22, 0x65, 0x0a, 0x0a, + 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, + 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, + 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x22, 0x52, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 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, 0x2a, 0x0a, 0x04, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x52, + 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 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, + 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x41, + 0x0a, 0x0d, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 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, 0x26, 0x0a, 0x0c, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0xac, 0x03, 0x0a, 0x10, 0x53, 0x43, + 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 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, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x2d, + 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x44, + 0x69, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x44, 0x69, 0x65, 0x12, + 0x33, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, + 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x44, 0x69, 0x65, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x42, 0x75, 0x66, 0x66, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, + 0x45, 0x78, 0x74, 0x72, 0x61, 0x44, 0x72, 0x6f, 0x70, 0x12, 0x39, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, + 0x6f, 0x72, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x46, 0x6c, 0x6f, 0x6f, 0x72, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x4d, 0x61, + 0x78, 0x48, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x6b, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, + 0x53, 0x75, 0x6d, 0x48, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x6b, 0x53, 0x75, 0x6d, 0x48, 0x70, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x4e, 0x69, + 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0xcc, 0x02, 0x0a, 0x0f, + 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x24, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0e, + 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, + 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x4f, + 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x30, 0x0a, + 0x13, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x2e, 0x0a, 0x12, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x50, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x4f, 0x74, 0x68, + 0x65, 0x72, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x12, + 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x0c, 0x43, 0x53, + 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x8a, 0x01, 0x0a, + 0x0c, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, + 0x2d, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x39, + 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x09, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0xe2, 0x02, 0x0a, 0x0c, 0x4e, 0x69, + 0x61, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe4, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe5, 0x14, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe6, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x42, 0x75, 0x66, 0x66, 0x10, 0xe7, 0x14, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, + 0xea, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, + 0x69, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xeb, 0x14, + 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, + 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xec, 0x14, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x53, 0x69, + 0x67, 0x6e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xed, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x10, 0xee, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xef, 0x14, 0x2a, 0x3e, + 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x4e, + 0x69, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x4e, 0x69, 0x61, 0x6e, 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, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protocol_activity_nian_proto_rawDescOnce sync.Once + file_protocol_activity_nian_proto_rawDescData = file_protocol_activity_nian_proto_rawDesc +) + +func file_protocol_activity_nian_proto_rawDescGZIP() []byte { + file_protocol_activity_nian_proto_rawDescOnce.Do(func() { + file_protocol_activity_nian_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_activity_nian_proto_rawDescData) + }) + return file_protocol_activity_nian_proto_rawDescData +} + +var file_protocol_activity_nian_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_protocol_activity_nian_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_protocol_activity_nian_proto_goTypes = []interface{}{ + (NianPacketID)(0), // 0: activity.NianPacketID + (OpResultCode_Nian)(0), // 1: activity.OpResultCode_Nian + (*CSNianData)(nil), // 2: activity.CSNianData + (*SCNianData)(nil), // 3: activity.SCNianData + (*ShopData)(nil), // 4: activity.ShopData + (*CSNianBuff)(nil), // 5: activity.CSNianBuff + (*SCNianBuff)(nil), // 6: activity.SCNianBuff + (*NianRankData)(nil), // 7: activity.NianRankData + (*NianRankInfo)(nil), // 8: activity.NianRankInfo + (*RankAwardData)(nil), // 9: activity.RankAwardData + (*CSNianAttack)(nil), // 10: activity.CSNianAttack + (*SCNianAttackData)(nil), // 11: activity.SCNianAttackData + (*CSNianSignAward)(nil), // 12: activity.CSNianSignAward + (*SCNianSignAward)(nil), // 13: activity.SCNianSignAward + (*CSNianChange)(nil), // 14: activity.CSNianChange + (*SCNianChange)(nil), // 15: activity.SCNianChange +} +var file_protocol_activity_nian_proto_depIdxs = []int32{ + 7, // 0: activity.SCNianData.RankData:type_name -> activity.NianRankData + 4, // 1: activity.SCNianData.shopData:type_name -> activity.ShopData + 9, // 2: activity.SCNianData.OtherSignAward:type_name -> activity.RankAwardData + 1, // 3: activity.SCNianBuff.OpRetCode:type_name -> activity.OpResultCode_Nian + 8, // 4: activity.NianRankData.Data:type_name -> activity.NianRankInfo + 9, // 5: activity.NianRankInfo.Award:type_name -> activity.RankAwardData + 9, // 6: activity.SCNianAttackData.Award:type_name -> activity.RankAwardData + 9, // 7: activity.SCNianAttackData.DieAward:type_name -> activity.RankAwardData + 9, // 8: activity.SCNianAttackData.ExtraDrop:type_name -> activity.RankAwardData + 9, // 9: activity.SCNianAttackData.FloorReward:type_name -> activity.RankAwardData + 9, // 10: activity.SCNianSignAward.SignAward:type_name -> activity.RankAwardData + 9, // 11: activity.SCNianSignAward.OtherSignAward:type_name -> activity.RankAwardData + 1, // 12: activity.SCNianSignAward.OpRetCode:type_name -> activity.OpResultCode_Nian + 9, // 13: activity.SCNianChange.Award:type_name -> activity.RankAwardData + 1, // 14: activity.SCNianChange.OpRetCode:type_name -> activity.OpResultCode_Nian + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name +} + +func init() { file_protocol_activity_nian_proto_init() } +func file_protocol_activity_nian_proto_init() { + if File_protocol_activity_nian_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_activity_nian_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNianData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNianData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShopData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNianBuff); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNianBuff); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RankAwardData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNianAttack); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNianAttackData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNianSignAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNianSignAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNianChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_nian_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNianChange); 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_protocol_activity_nian_proto_rawDesc, + NumEnums: 2, + NumMessages: 14, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_activity_nian_proto_goTypes, + DependencyIndexes: file_protocol_activity_nian_proto_depIdxs, + EnumInfos: file_protocol_activity_nian_proto_enumTypes, + MessageInfos: file_protocol_activity_nian_proto_msgTypes, + }.Build() + File_protocol_activity_nian_proto = out.File + file_protocol_activity_nian_proto_rawDesc = nil + file_protocol_activity_nian_proto_goTypes = nil + file_protocol_activity_nian_proto_depIdxs = nil +} diff --git a/protocol/activity/nian.proto b/protocol/activity/nian.proto new file mode 100644 index 0000000..6de8149 --- /dev/null +++ b/protocol/activity/nian.proto @@ -0,0 +1,128 @@ +syntax = "proto3"; +package activity; +option go_package = "mongo.games.com/game/protocol/activity"; + +enum NianPacketID { + PACKET_Nian_ZERO = 0; // 弃用消息号 + PACKET_CSNianData = 2660; // 获取年兽信息 + PACKET_SCNianData = 2661; // 返回年兽信息 + PACKET_CSNianBuff = 2662; // 请求领取BUFF + PACKET_SCNianBuff = 2663; // 返回Buff信息 + PACKET_CSNianRankData = 2664; // 请求排行榜信息 + PACKET_SCNianRankData = 2665; // 返回排行榜信息 + PACKET_CSNianAttack = 2666; //请求攻击年兽 + PACKET_SCNianAttackData = 2667; //返回攻击年兽信息 + PACKET_CSNianSignAward = 2668; //请求签到 + PACKET_SCNianSignAward = 2669; //签到返回 + PACKET_CSNianChange = 2670;//请求兑换小爆竹 + PACKET_SCNianChange = 2671;//返回兑换道具 +} +//操作结果 +enum OpResultCode_Nian { + OPRC_Sucess_Nian = 0; //成功 + OPRC_Error_Nian = 1; //失败 +} + +//获取年兽活动信息 +//PACKET_CSNianData +message CSNianData{ +} +//PACKET_SCNianData +message SCNianData{ + int64 ActivityStartTime = 1; //活动开始时间 + int64 ActivityEndTime = 2; //活动结束时间 + int64 BossMaxHp = 3; //Boss最大血量 + int64 BossHp = 4; //Boss当前血量 + repeated NianRankData RankData = 5;//排行榜奖励配置 + int64 AwardTime = 6;//每日签到领取时间 + int64 BuffCount = 7;//Buff剩余次数 + bool BuffStatus = 8;//Buff领取状态 + int64 SignAwardTime = 9;//签到领取时间 0-未领取 + int64 BuffStartTime = 10; //Buff开始领取时间 + int64 BuffEndTime = 11; //Buff结束领取时间 + repeated ShopData shopData = 12;//购买礼包数量 + string ChangeData = 13; //兑换数据 + string LuckyRankNeed = 14; //幸运榜上榜条件 + string RankNeed = 15; //总伤害榜上榜条件 + int32 Switch = 16; //活动开关 1.开启 2.关闭 + int32 OtherSignAwardCount = 17;//额外奖励领取次数 + int32 OtherSignAwardProp = 18;//额外奖励概率 + repeated RankAwardData OtherSignAward = 19;//签到额外奖励 + int32 OtherSignMaxCount = 20;//额外奖励领取次数上限 + int64 AttackMaxHp =21; //单次攻击最大血量 + int64 AttackSumHp = 22; //攻击总伤害 +} + +message ShopData{ + int32 ShopId =1; //shopId + int32 ShopNum = 2; //已购买次数 + int32 MaxShopNum = 3; //最大购买次数 +} + +//贺春 +//请求领取BUFF +//PACKET_CSNianBuff +message CSNianBuff{ +} +//PACKET_SCNianBuff +message SCNianBuff{ + int64 BuffCount = 1; //BUFF剩余次数 + OpResultCode_Nian OpRetCode = 2; // 返回错误码 +} + +message NianRankData{ + int32 TypeId = 1; //1-幸运榜 2-总榜 + repeated NianRankInfo Data = 2; +} +message NianRankInfo{ + int32 RankId =1; + repeated RankAwardData Award = 2; +} + +message RankAwardData{ + int32 ItemId =1; + int64 ItemNum = 2; +} +//攻击年兽 +//PACKET_CSNianAttack +message CSNianAttack{ + int32 TypeId = 1; //1-小爆竹 2-小爆竹*10 3-大爆竹 +} +//PACKET_SCNianAttackData +message SCNianAttackData{ + int32 TypeId = 1; //1-小爆竹 2-小爆竹*10 3-大爆竹 + int64 BossHp = 2; //BOSS当前血量 + repeated RankAwardData Award = 3; //获得道具 + int64 AttackHp = 4; // 攻击伤害 + bool IsDie = 5; //BOSS是否死亡 + repeated RankAwardData DieAward = 6;//BOSS死亡奖励 + int64 BuffCount = 7; //BUFF剩余次数 + repeated RankAwardData ExtraDrop = 8;//大爆竹额外掉落 + repeated RankAwardData FloorReward = 9;//保底奖励 + int64 AttackMaxHp = 10; //单次攻击最大血量 + int64 AttackSumHp = 11; //攻击总伤害 +} +//领取签到奖励 +//PACKET_CSNianSignAward +message CSNianSignAward{ +} +//PACKET_SCNianSignAward +message SCNianSignAward{ + int64 SignAwardTime = 1; + repeated RankAwardData SignAward = 2;//签到奖励 + repeated RankAwardData OtherSignAward = 3;//签到额外奖励 + int32 OtherSignAwardCount = 4;//额外奖励领取次数 + int32 OtherSignAwardProp = 5;//额外奖励概率 + OpResultCode_Nian OpRetCode = 6; // 返回错误码 +} +//兑换 +//PACKET_CSNianChange +message CSNianChange{ + int32 Num = 1; +} +//PACKET_SCNianChange +message SCNianChange{ + int32 Num = 1; + repeated RankAwardData Award =2; + OpResultCode_Nian OpRetCode = 3; // 返回错误码 +} \ No newline at end of file diff --git a/protocol/activity/pushcoin.pb.go b/protocol/activity/pushcoin.pb.go new file mode 100644 index 0000000..f45142b --- /dev/null +++ b/protocol/activity/pushcoin.pb.go @@ -0,0 +1,1004 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: protocol/activity/pushcoin.proto + +package activity + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type PushCoinPacketID int32 + +const ( + PushCoinPacketID_PACKET_PushCoin_ZERO PushCoinPacketID = 0 // 弃用消息号 + PushCoinPacketID_PACKET_CSPushCoinInfo PushCoinPacketID = 2680 // 信息 + PushCoinPacketID_PACKET_SCPushCoinInfo PushCoinPacketID = 2681 // 信息返回 + PushCoinPacketID_PACKET_CSPushCoinPlayerOp PushCoinPacketID = 2682 // 玩家操作 + PushCoinPacketID_PACKET_SCPushCoinPlayerOp PushCoinPacketID = 2683 // 玩家操作返回 + PushCoinPacketID_PACKET_NotifyPowerLine PushCoinPacketID = 2684 // 通知能量值 + PushCoinPacketID_PACKET_NotifyDrawInfo PushCoinPacketID = 2685 // 抽奖信息 +) + +// Enum value maps for PushCoinPacketID. +var ( + PushCoinPacketID_name = map[int32]string{ + 0: "PACKET_PushCoin_ZERO", + 2680: "PACKET_CSPushCoinInfo", + 2681: "PACKET_SCPushCoinInfo", + 2682: "PACKET_CSPushCoinPlayerOp", + 2683: "PACKET_SCPushCoinPlayerOp", + 2684: "PACKET_NotifyPowerLine", + 2685: "PACKET_NotifyDrawInfo", + } + PushCoinPacketID_value = map[string]int32{ + "PACKET_PushCoin_ZERO": 0, + "PACKET_CSPushCoinInfo": 2680, + "PACKET_SCPushCoinInfo": 2681, + "PACKET_CSPushCoinPlayerOp": 2682, + "PACKET_SCPushCoinPlayerOp": 2683, + "PACKET_NotifyPowerLine": 2684, + "PACKET_NotifyDrawInfo": 2685, + } +) + +func (x PushCoinPacketID) Enum() *PushCoinPacketID { + p := new(PushCoinPacketID) + *p = x + return p +} + +func (x PushCoinPacketID) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PushCoinPacketID) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_pushcoin_proto_enumTypes[0].Descriptor() +} + +func (PushCoinPacketID) Type() protoreflect.EnumType { + return &file_protocol_activity_pushcoin_proto_enumTypes[0] +} + +func (x PushCoinPacketID) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushCoinPacketID.Descriptor instead. +func (PushCoinPacketID) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{0} +} + +type OpCodes int32 + +const ( + OpCodes_OP_Zero OpCodes = 0 + OpCodes_OP_Bet OpCodes = 1 // 下注 OpParam 道具id + OpCodes_OP_Gain OpCodes = 2 // 得分 OpParam 1有效区 2无效区 OpItem 获得道具 + OpCodes_OP_Shake OpCodes = 3 // 震动 OpParam 消耗次数 + OpCodes_OP_Refresh OpCodes = 4 // 刷新 OpParam 桌面金额 + OpCodes_OP_Exchange OpCodes = 5 // 兑换 OpParam 兑换id +) + +// Enum value maps for OpCodes. +var ( + OpCodes_name = map[int32]string{ + 0: "OP_Zero", + 1: "OP_Bet", + 2: "OP_Gain", + 3: "OP_Shake", + 4: "OP_Refresh", + 5: "OP_Exchange", + } + OpCodes_value = map[string]int32{ + "OP_Zero": 0, + "OP_Bet": 1, + "OP_Gain": 2, + "OP_Shake": 3, + "OP_Refresh": 4, + "OP_Exchange": 5, + } +) + +func (x OpCodes) Enum() *OpCodes { + p := new(OpCodes) + *p = x + return p +} + +func (x OpCodes) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpCodes) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_pushcoin_proto_enumTypes[1].Descriptor() +} + +func (OpCodes) Type() protoreflect.EnumType { + return &file_protocol_activity_pushcoin_proto_enumTypes[1] +} + +func (x OpCodes) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpCodes.Descriptor instead. +func (OpCodes) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{1} +} + +type OpResultPushCoinCode int32 + +const ( + OpResultPushCoinCode_OPRC_PushCoin_Success OpResultPushCoinCode = 0 //成功 + OpResultPushCoinCode_OPRC_PushCoin_Error OpResultPushCoinCode = 1 //失败 + OpResultPushCoinCode_OPRC_PushCoin_BetNotEnough OpResultPushCoinCode = 2 //投币,金币不足 + OpResultPushCoinCode_OPRC_PushCoin_ExchangeNotEnough OpResultPushCoinCode = 3 //兑换次数不足 + OpResultPushCoinCode_OPRC_PushCoin_ShakeNotEnough OpResultPushCoinCode = 4 //震动次数不足 + OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough OpResultPushCoinCode = 5 //兑换消耗道具不足 +) + +// Enum value maps for OpResultPushCoinCode. +var ( + OpResultPushCoinCode_name = map[int32]string{ + 0: "OPRC_PushCoin_Success", + 1: "OPRC_PushCoin_Error", + 2: "OPRC_PushCoin_BetNotEnough", + 3: "OPRC_PushCoin_ExchangeNotEnough", + 4: "OPRC_PushCoin_ShakeNotEnough", + 5: "OPRC_PushCoin_ItemNotEnough", + } + OpResultPushCoinCode_value = map[string]int32{ + "OPRC_PushCoin_Success": 0, + "OPRC_PushCoin_Error": 1, + "OPRC_PushCoin_BetNotEnough": 2, + "OPRC_PushCoin_ExchangeNotEnough": 3, + "OPRC_PushCoin_ShakeNotEnough": 4, + "OPRC_PushCoin_ItemNotEnough": 5, + } +) + +func (x OpResultPushCoinCode) Enum() *OpResultPushCoinCode { + p := new(OpResultPushCoinCode) + *p = x + return p +} + +func (x OpResultPushCoinCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpResultPushCoinCode) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_activity_pushcoin_proto_enumTypes[2].Descriptor() +} + +func (OpResultPushCoinCode) Type() protoreflect.EnumType { + return &file_protocol_activity_pushcoin_proto_enumTypes[2] +} + +func (x OpResultPushCoinCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpResultPushCoinCode.Descriptor instead. +func (OpResultPushCoinCode) EnumDescriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{2} +} + +//信息 +//PACKET_CSPushCoinInfo +type CSPushCoinInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSPushCoinInfo) Reset() { + *x = CSPushCoinInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPushCoinInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPushCoinInfo) ProtoMessage() {} + +func (x *CSPushCoinInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSPushCoinInfo.ProtoReflect.Descriptor instead. +func (*CSPushCoinInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{0} +} + +//PACKET_SCPushCoinInfo +type SCPushCoinInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ExchangeList []*ExchangeInfo `protobuf:"bytes,1,rep,name=ExchangeList,proto3" json:"ExchangeList,omitempty"` //兑换信息 + DrawList []*DrawInfo `protobuf:"bytes,2,rep,name=DrawList,proto3" json:"DrawList,omitempty"` //抽奖信息 + ShakeTimes int32 `protobuf:"varint,3,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //可震动次数 + PowerLine int64 `protobuf:"varint,4,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 + PowerLineMax int64 `protobuf:"varint,5,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 + RefreshTimes int64 `protobuf:"varint,6,opt,name=RefreshTimes,proto3" json:"RefreshTimes,omitempty"` // 刷新次数 +} + +func (x *SCPushCoinInfo) Reset() { + *x = SCPushCoinInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinInfo) ProtoMessage() {} + +func (x *SCPushCoinInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_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 SCPushCoinInfo.ProtoReflect.Descriptor instead. +func (*SCPushCoinInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{1} +} + +func (x *SCPushCoinInfo) GetExchangeList() []*ExchangeInfo { + if x != nil { + return x.ExchangeList + } + return nil +} + +func (x *SCPushCoinInfo) GetDrawList() []*DrawInfo { + if x != nil { + return x.DrawList + } + return nil +} + +func (x *SCPushCoinInfo) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +func (x *SCPushCoinInfo) GetPowerLine() int64 { + if x != nil { + return x.PowerLine + } + return 0 +} + +func (x *SCPushCoinInfo) GetPowerLineMax() int64 { + if x != nil { + return x.PowerLineMax + } + return 0 +} + +func (x *SCPushCoinInfo) GetRefreshTimes() int64 { + if x != nil { + return x.RefreshTimes + } + return 0 +} + +type ItemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 +} + +func (x *ItemInfo) Reset() { + *x = ItemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[2] + 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_protocol_activity_pushcoin_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 ItemInfo.ProtoReflect.Descriptor instead. +func (*ItemInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{2} +} + +func (x *ItemInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *ItemInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type ExchangeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //兑换id + Cost []*ItemInfo `protobuf:"bytes,2,rep,name=Cost,proto3" json:"Cost,omitempty"` //消耗道具 + Gain []*ItemInfo `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty"` //获得道具 + Times int64 `protobuf:"varint,4,opt,name=Times,proto3" json:"Times,omitempty"` //可兑换次数 -1无限 + TotalTimes int64 `protobuf:"varint,5,opt,name=TotalTimes,proto3" json:"TotalTimes,omitempty"` //总共兑换次数 -1无限 +} + +func (x *ExchangeInfo) Reset() { + *x = ExchangeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExchangeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExchangeInfo) ProtoMessage() {} + +func (x *ExchangeInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_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 ExchangeInfo.ProtoReflect.Descriptor instead. +func (*ExchangeInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{3} +} + +func (x *ExchangeInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExchangeInfo) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *ExchangeInfo) GetGain() []*ItemInfo { + if x != nil { + return x.Gain + } + return nil +} + +func (x *ExchangeInfo) GetTimes() int64 { + if x != nil { + return x.Times + } + return 0 +} + +func (x *ExchangeInfo) GetTotalTimes() int64 { + if x != nil { + return x.TotalTimes + } + return 0 +} + +//抽奖信息 +//PACKET_NotifyDrawInfo +type DrawInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //抽奖id + ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 + Coin int64 `protobuf:"varint,4,opt,name=Coin,proto3" json:"Coin,omitempty"` //价值 +} + +func (x *DrawInfo) Reset() { + *x = DrawInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DrawInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DrawInfo) ProtoMessage() {} + +func (x *DrawInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_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 DrawInfo.ProtoReflect.Descriptor instead. +func (*DrawInfo) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{4} +} + +func (x *DrawInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DrawInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *DrawInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *DrawInfo) GetCoin() int64 { + if x != nil { + return x.Coin + } + return 0 +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +type CSPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpCode OpCodes `protobuf:"varint,1,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` + OpParam int64 `protobuf:"varint,2,opt,name=OpParam,proto3" json:"OpParam,omitempty"` + OpItem []*ItemInfo `protobuf:"bytes,3,rep,name=OpItem,proto3" json:"OpItem,omitempty"` +} + +func (x *CSPushCoinPlayerOp) Reset() { + *x = CSPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPushCoinPlayerOp) ProtoMessage() {} + +func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_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 CSPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*CSPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{5} +} + +func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *CSPushCoinPlayerOp) GetOpParam() int64 { + if x != nil { + return x.OpParam + } + return 0 +} + +func (x *CSPushCoinPlayerOp) GetOpItem() []*ItemInfo { + if x != nil { + return x.OpItem + } + return nil +} + +//PACKET_SCPushCoinPlayerOp +type SCPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultPushCoinCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=activity.OpResultPushCoinCode" json:"OpRetCode,omitempty"` + OpCode OpCodes `protobuf:"varint,2,opt,name=OpCode,proto3,enum=activity.OpCodes" json:"OpCode,omitempty"` + Exchange *ExchangeInfo `protobuf:"bytes,3,opt,name=Exchange,proto3" json:"Exchange,omitempty"` // 兑换信息,加到背包 + BetId int32 `protobuf:"varint,4,opt,name=BetId,proto3" json:"BetId,omitempty"` // 金币id +} + +func (x *SCPushCoinPlayerOp) Reset() { + *x = SCPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinPlayerOp) ProtoMessage() {} + +func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_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 SCPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*SCPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{6} +} + +func (x *SCPushCoinPlayerOp) GetOpRetCode() OpResultPushCoinCode { + if x != nil { + return x.OpRetCode + } + return OpResultPushCoinCode_OPRC_PushCoin_Success +} + +func (x *SCPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *SCPushCoinPlayerOp) GetExchange() *ExchangeInfo { + if x != nil { + return x.Exchange + } + return nil +} + +func (x *SCPushCoinPlayerOp) GetBetId() int32 { + if x != nil { + return x.BetId + } + return 0 +} + +//通知能量值 +//PACKET_NotifyPowerLine +type NotifyPowerLine struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PowerLine int64 `protobuf:"varint,1,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 + PowerLineMax int64 `protobuf:"varint,2,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 +} + +func (x *NotifyPowerLine) Reset() { + *x = NotifyPowerLine{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_activity_pushcoin_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotifyPowerLine) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyPowerLine) ProtoMessage() {} + +func (x *NotifyPowerLine) ProtoReflect() protoreflect.Message { + mi := &file_protocol_activity_pushcoin_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 NotifyPowerLine.ProtoReflect.Descriptor instead. +func (*NotifyPowerLine) Descriptor() ([]byte, []int) { + return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{7} +} + +func (x *NotifyPowerLine) GetPowerLine() int64 { + if x != nil { + return x.PowerLine + } + return 0 +} + +func (x *NotifyPowerLine) GetPowerLineMax() int64 { + if x != nil { + return x.PowerLineMax + } + return 0 +} + +var File_protocol_activity_pushcoin_proto protoreflect.FileDescriptor + +var file_protocol_activity_pushcoin_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x10, 0x0a, 0x0e, + 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x82, + 0x02, 0x0a, 0x0e, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3a, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, + 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, + 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x12, + 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x73, 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, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, + 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, + 0x49, 0x6e, 0x66, 0x6f, 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, 0x18, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x43, + 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, + 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, + 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, + 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, + 0x65, 0x6d, 0x22, 0xc7, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, + 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x0f, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, + 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, + 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, + 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, + 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, + 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, + 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, + 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, + 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, + 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x14, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x1e, + 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, + 0x42, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x23, + 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, + 0x68, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, + 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, + 0x6f, 0x75, 0x67, 0x68, 0x10, 0x05, 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, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protocol_activity_pushcoin_proto_rawDescOnce sync.Once + file_protocol_activity_pushcoin_proto_rawDescData = file_protocol_activity_pushcoin_proto_rawDesc +) + +func file_protocol_activity_pushcoin_proto_rawDescGZIP() []byte { + file_protocol_activity_pushcoin_proto_rawDescOnce.Do(func() { + file_protocol_activity_pushcoin_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_activity_pushcoin_proto_rawDescData) + }) + return file_protocol_activity_pushcoin_proto_rawDescData +} + +var file_protocol_activity_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_protocol_activity_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{ + (PushCoinPacketID)(0), // 0: activity.PushCoinPacketID + (OpCodes)(0), // 1: activity.OpCodes + (OpResultPushCoinCode)(0), // 2: activity.OpResultPushCoinCode + (*CSPushCoinInfo)(nil), // 3: activity.CSPushCoinInfo + (*SCPushCoinInfo)(nil), // 4: activity.SCPushCoinInfo + (*ItemInfo)(nil), // 5: activity.ItemInfo + (*ExchangeInfo)(nil), // 6: activity.ExchangeInfo + (*DrawInfo)(nil), // 7: activity.DrawInfo + (*CSPushCoinPlayerOp)(nil), // 8: activity.CSPushCoinPlayerOp + (*SCPushCoinPlayerOp)(nil), // 9: activity.SCPushCoinPlayerOp + (*NotifyPowerLine)(nil), // 10: activity.NotifyPowerLine +} +var file_protocol_activity_pushcoin_proto_depIdxs = []int32{ + 6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo + 7, // 1: activity.SCPushCoinInfo.DrawList:type_name -> activity.DrawInfo + 5, // 2: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo + 5, // 3: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo + 1, // 4: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 5, // 5: activity.CSPushCoinPlayerOp.OpItem:type_name -> activity.ItemInfo + 2, // 6: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode + 1, // 7: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes + 6, // 8: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo + 9, // [9:9] is the sub-list for method output_type + 9, // [9:9] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name +} + +func init() { file_protocol_activity_pushcoin_proto_init() } +func file_protocol_activity_pushcoin_proto_init() { + if File_protocol_activity_pushcoin_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_activity_pushcoin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPushCoinInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[2].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_protocol_activity_pushcoin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DrawInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_activity_pushcoin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyPowerLine); 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_protocol_activity_pushcoin_proto_rawDesc, + NumEnums: 3, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_activity_pushcoin_proto_goTypes, + DependencyIndexes: file_protocol_activity_pushcoin_proto_depIdxs, + EnumInfos: file_protocol_activity_pushcoin_proto_enumTypes, + MessageInfos: file_protocol_activity_pushcoin_proto_msgTypes, + }.Build() + File_protocol_activity_pushcoin_proto = out.File + file_protocol_activity_pushcoin_proto_rawDesc = nil + file_protocol_activity_pushcoin_proto_goTypes = nil + file_protocol_activity_pushcoin_proto_depIdxs = nil +} diff --git a/protocol/activity/pushcoin.proto b/protocol/activity/pushcoin.proto new file mode 100644 index 0000000..bbc6588 --- /dev/null +++ b/protocol/activity/pushcoin.proto @@ -0,0 +1,90 @@ +syntax = "proto3"; +package activity; +option go_package = "mongo.games.com/game/protocol/activity"; + +enum PushCoinPacketID { + PACKET_PushCoin_ZERO = 0;// 弃用消息号 + PACKET_CSPushCoinInfo = 2680; // 信息 + PACKET_SCPushCoinInfo = 2681; // 信息返回 + PACKET_CSPushCoinPlayerOp = 2682; // 玩家操作 + PACKET_SCPushCoinPlayerOp = 2683; // 玩家操作返回 + PACKET_NotifyPowerLine = 2684; // 通知能量值 + PACKET_NotifyDrawInfo = 2685; // 抽奖信息 +} + +//信息 +//PACKET_CSPushCoinInfo +message CSPushCoinInfo { +} +//PACKET_SCPushCoinInfo +message SCPushCoinInfo { + repeated ExchangeInfo ExchangeList = 1; //兑换信息 + repeated DrawInfo DrawList = 2; //抽奖信息 + int32 ShakeTimes = 3; //可震动次数 + int64 PowerLine = 4; // 当前能量值 + int64 PowerLineMax = 5; // 能量值上限 + int64 RefreshTimes = 6; // 刷新次数 +} + +message ItemInfo{ + int32 ItemId = 1; //道具id + int32 ItemNum = 2; //道具数量 +} + +message ExchangeInfo{ + int32 Id = 1; //兑换id + repeated ItemInfo Cost = 2; //消耗道具 + repeated ItemInfo Gain = 3; //获得道具 + int64 Times = 4; //可兑换次数 -1无限 + int64 TotalTimes = 5; //总共兑换次数 -1无限 +} + +//抽奖信息 +//PACKET_NotifyDrawInfo +message DrawInfo{ + int32 Id = 1; //抽奖id + int32 ItemId = 2; //道具id + int32 ItemNum = 3; //道具数量 + int64 Coin = 4; //价值 +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +message CSPushCoinPlayerOp { + OpCodes OpCode = 1; + int64 OpParam = 2; + repeated ItemInfo OpItem = 3; +} + +enum OpCodes { + OP_Zero = 0; + OP_Bet = 1; // 下注 OpParam 道具id + OP_Gain = 2; // 得分 OpParam 1有效区 2无效区 OpItem 获得道具 + OP_Shake = 3; // 震动 OpParam 消耗次数 + OP_Refresh = 4; // 刷新 OpParam 桌面金额 + OP_Exchange = 5; // 兑换 OpParam 兑换id +} + +enum OpResultPushCoinCode { + OPRC_PushCoin_Success = 0; //成功 + OPRC_PushCoin_Error = 1; //失败 + OPRC_PushCoin_BetNotEnough = 2; //投币,金币不足 + OPRC_PushCoin_ExchangeNotEnough = 3; //兑换次数不足 + OPRC_PushCoin_ShakeNotEnough = 4; //震动次数不足 + OPRC_PushCoin_ItemNotEnough = 5; //兑换消耗道具不足 +} + +//PACKET_SCPushCoinPlayerOp +message SCPushCoinPlayerOp { + OpResultPushCoinCode OpRetCode = 1; + OpCodes OpCode = 2; + ExchangeInfo Exchange = 3; // 兑换信息,加到背包 + int32 BetId = 4; // 金币id +} + +//通知能量值 +//PACKET_NotifyPowerLine +message NotifyPowerLine { + int64 PowerLine = 1; // 当前能量值 + int64 PowerLineMax = 2; // 能量值上限 +} \ No newline at end of file diff --git a/protocol/doc.md b/protocol/doc.md index e8d8f01..7d605b1 100644 --- a/protocol/doc.md +++ b/protocol/doc.md @@ -193,5 +193,9 @@ - 5660~5669 +### pushcoin.proto + +- 5670~5679 + ### game.proto(玩家离开) - 8000~8099 \ No newline at end of file diff --git a/protocol/player/player.pb.go b/protocol/player/player.pb.go index b00a216..9060b75 100644 --- a/protocol/player/player.pb.go +++ b/protocol/player/player.pb.go @@ -7986,7 +7986,7 @@ type SCEasyWelfaredInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - WelfareSwitch []int32 `protobuf:"varint,1,rep,packed,name=WelfareSwitch,proto3" json:"WelfareSwitch,omitempty"` // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动 1显示 2不显示 + WelfareSwitch []int32 `protobuf:"varint,1,rep,packed,name=WelfareSwitch,proto3" json:"WelfareSwitch,omitempty"` // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动6年兽活动 1显示 2不显示 } func (x *SCEasyWelfaredInfo) Reset() { diff --git a/protocol/player/player.proto b/protocol/player/player.proto index 1501d66..4f429ea 100644 --- a/protocol/player/player.proto +++ b/protocol/player/player.proto @@ -1057,7 +1057,7 @@ message SCVIPInfo { // //PACKET_SC_SWELFAREINFO message SCEasyWelfaredInfo{ - repeated int32 WelfareSwitch = 1; // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动 1显示 2不显示 + repeated int32 WelfareSwitch = 1; // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动6年兽活动 1显示 2不显示 } message CSVIPPrivilegeInfo { diff --git a/protocol/pushcoin/pushcoin.pb.go b/protocol/pushcoin/pushcoin.pb.go new file mode 100644 index 0000000..eafa0fa --- /dev/null +++ b/protocol/pushcoin/pushcoin.pb.go @@ -0,0 +1,1166 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: protocol/pushcoin/pushcoin.proto + +package pushcoin + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// 5670~5679 +type PushCoinPacketID int32 + +const ( + PushCoinPacketID_PACKET_PushCoin_ZERO PushCoinPacketID = 0 // 弃用消息号 + PushCoinPacketID_PACKET_SCPushCoinRoomInfo PushCoinPacketID = 5670 // 房间信息 + PushCoinPacketID_PACKET_SCPushCoinRoomState PushCoinPacketID = 5671 // 房间状态 + PushCoinPacketID_PACKET_CSPushCoinPlayerOp PushCoinPacketID = 5672 // 玩家操作 + PushCoinPacketID_PACKET_SCPushCoinPlayerOp PushCoinPacketID = 5673 // 玩家操作返回 +) + +// Enum value maps for PushCoinPacketID. +var ( + PushCoinPacketID_name = map[int32]string{ + 0: "PACKET_PushCoin_ZERO", + 5670: "PACKET_SCPushCoinRoomInfo", + 5671: "PACKET_SCPushCoinRoomState", + 5672: "PACKET_CSPushCoinPlayerOp", + 5673: "PACKET_SCPushCoinPlayerOp", + } + PushCoinPacketID_value = map[string]int32{ + "PACKET_PushCoin_ZERO": 0, + "PACKET_SCPushCoinRoomInfo": 5670, + "PACKET_SCPushCoinRoomState": 5671, + "PACKET_CSPushCoinPlayerOp": 5672, + "PACKET_SCPushCoinPlayerOp": 5673, + } +) + +func (x PushCoinPacketID) Enum() *PushCoinPacketID { + p := new(PushCoinPacketID) + *p = x + return p +} + +func (x PushCoinPacketID) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PushCoinPacketID) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_pushcoin_pushcoin_proto_enumTypes[0].Descriptor() +} + +func (PushCoinPacketID) Type() protoreflect.EnumType { + return &file_protocol_pushcoin_pushcoin_proto_enumTypes[0] +} + +func (x PushCoinPacketID) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PushCoinPacketID.Descriptor instead. +func (PushCoinPacketID) EnumDescriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{0} +} + +type OpCodes int32 + +const ( + OpCodes_OP_Zero OpCodes = 0 + OpCodes_OP_Bet OpCodes = 1 // 下注 [下注金额] + OpCodes_OP_Gain OpCodes = 2 // 得分 [得分金额] + OpCodes_OP_Shake OpCodes = 3 // 震动 [消耗次数] + OpCodes_OP_Refresh OpCodes = 4 // 刷新 [桌面金额] + OpCodes_OP_Exchange OpCodes = 5 // 兑换 [兑换id] + OpCodes_OP_Draw OpCodes = 6 // 抽奖 [抽奖id] +) + +// Enum value maps for OpCodes. +var ( + OpCodes_name = map[int32]string{ + 0: "OP_Zero", + 1: "OP_Bet", + 2: "OP_Gain", + 3: "OP_Shake", + 4: "OP_Refresh", + 5: "OP_Exchange", + 6: "OP_Draw", + } + OpCodes_value = map[string]int32{ + "OP_Zero": 0, + "OP_Bet": 1, + "OP_Gain": 2, + "OP_Shake": 3, + "OP_Refresh": 4, + "OP_Exchange": 5, + "OP_Draw": 6, + } +) + +func (x OpCodes) Enum() *OpCodes { + p := new(OpCodes) + *p = x + return p +} + +func (x OpCodes) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpCodes) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_pushcoin_pushcoin_proto_enumTypes[1].Descriptor() +} + +func (OpCodes) Type() protoreflect.EnumType { + return &file_protocol_pushcoin_pushcoin_proto_enumTypes[1] +} + +func (x OpCodes) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpCodes.Descriptor instead. +func (OpCodes) EnumDescriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{1} +} + +type OpResultCode int32 + +const ( + OpResultCode_OPRC_Success OpResultCode = 0 //成功 + OpResultCode_OPRC_Error OpResultCode = 1 //失败 +) + +// Enum value maps for OpResultCode. +var ( + OpResultCode_name = map[int32]string{ + 0: "OPRC_Success", + 1: "OPRC_Error", + } + OpResultCode_value = map[string]int32{ + "OPRC_Success": 0, + "OPRC_Error": 1, + } +) + +func (x OpResultCode) Enum() *OpResultCode { + p := new(OpResultCode) + *p = x + return p +} + +func (x OpResultCode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OpResultCode) Descriptor() protoreflect.EnumDescriptor { + return file_protocol_pushcoin_pushcoin_proto_enumTypes[2].Descriptor() +} + +func (OpResultCode) Type() protoreflect.EnumType { + return &file_protocol_pushcoin_pushcoin_proto_enumTypes[2] +} + +func (x OpResultCode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OpResultCode.Descriptor instead. +func (OpResultCode) EnumDescriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{2} +} + +//房间信息 +//PACKET_SCPushCoinRoomInfo +type SCPushCoinRoomInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RoomId int32 `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"` //房间id + GameId int32 `protobuf:"varint,2,opt,name=GameId,proto3" json:"GameId,omitempty"` //游戏id + RoomMode int32 `protobuf:"varint,3,opt,name=RoomMode,proto3" json:"RoomMode,omitempty"` //游戏模式 + Params []int32 `protobuf:"varint,4,rep,packed,name=Params,proto3" json:"Params,omitempty"` //规则参数 + State int32 `protobuf:"varint,5,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态 + TimeOut int32 `protobuf:"varint,6,opt,name=TimeOut,proto3" json:"TimeOut,omitempty"` //等待剩余时间 单位:秒 + Players []*PushCoinPlayerData `protobuf:"bytes,7,rep,name=Players,proto3" json:"Players,omitempty"` //房间内的玩家信息 + ExchangeList []*ExchangeInfo `protobuf:"bytes,8,rep,name=ExchangeList,proto3" json:"ExchangeList,omitempty"` //兑换信息 + DrawList []*DrawInfo `protobuf:"bytes,9,rep,name=DrawList,proto3" json:"DrawList,omitempty"` //抽奖信息 + BetList []int64 `protobuf:"varint,10,rep,packed,name=BetList,proto3" json:"BetList,omitempty"` //下注金额列表 +} + +func (x *SCPushCoinRoomInfo) Reset() { + *x = SCPushCoinRoomInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinRoomInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinRoomInfo) ProtoMessage() {} + +func (x *SCPushCoinRoomInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCPushCoinRoomInfo.ProtoReflect.Descriptor instead. +func (*SCPushCoinRoomInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{0} +} + +func (x *SCPushCoinRoomInfo) GetRoomId() int32 { + if x != nil { + return x.RoomId + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetGameId() int32 { + if x != nil { + return x.GameId + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetRoomMode() int32 { + if x != nil { + return x.RoomMode + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetParams() []int32 { + if x != nil { + return x.Params + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetTimeOut() int32 { + if x != nil { + return x.TimeOut + } + return 0 +} + +func (x *SCPushCoinRoomInfo) GetPlayers() []*PushCoinPlayerData { + if x != nil { + return x.Players + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetExchangeList() []*ExchangeInfo { + if x != nil { + return x.ExchangeList + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetDrawList() []*DrawInfo { + if x != nil { + return x.DrawList + } + return nil +} + +func (x *SCPushCoinRoomInfo) GetBetList() []int64 { + if x != nil { + return x.BetList + } + return nil +} + +type ItemInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ItemId int32 `protobuf:"varint,1,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,2,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 +} + +func (x *ItemInfo) Reset() { + *x = ItemInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[1] + 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_protocol_pushcoin_pushcoin_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 ItemInfo.ProtoReflect.Descriptor instead. +func (*ItemInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{1} +} + +func (x *ItemInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *ItemInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type ExchangeInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //兑换id + Cost []*ItemInfo `protobuf:"bytes,2,rep,name=Cost,proto3" json:"Cost,omitempty"` //消耗道具 + Gain []*ItemInfo `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty"` //获得道具 + ShakeTimes int32 `protobuf:"varint,4,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //获得震动次数 +} + +func (x *ExchangeInfo) Reset() { + *x = ExchangeInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExchangeInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExchangeInfo) ProtoMessage() {} + +func (x *ExchangeInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_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 ExchangeInfo.ProtoReflect.Descriptor instead. +func (*ExchangeInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{2} +} + +func (x *ExchangeInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ExchangeInfo) GetCost() []*ItemInfo { + if x != nil { + return x.Cost + } + return nil +} + +func (x *ExchangeInfo) GetGain() []*ItemInfo { + if x != nil { + return x.Gain + } + return nil +} + +func (x *ExchangeInfo) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +type DrawInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //抽奖id + ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id + ItemNum int32 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量 + Coin int64 `protobuf:"varint,4,opt,name=Coin,proto3" json:"Coin,omitempty"` //价值 +} + +func (x *DrawInfo) Reset() { + *x = DrawInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DrawInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DrawInfo) ProtoMessage() {} + +func (x *DrawInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_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 DrawInfo.ProtoReflect.Descriptor instead. +func (*DrawInfo) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{3} +} + +func (x *DrawInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DrawInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *DrawInfo) GetItemNum() int32 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *DrawInfo) GetCoin() int64 { + if x != nil { + return x.Coin + } + return 0 +} + +type PushCoinPlayerData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` //名字 + SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` //账号 + Head int32 `protobuf:"varint,3,opt,name=Head,proto3" json:"Head,omitempty"` //头像 + Sex int32 `protobuf:"varint,4,opt,name=Sex,proto3" json:"Sex,omitempty"` //性别 + Coin int64 `protobuf:"varint,5,opt,name=Coin,proto3" json:"Coin,omitempty"` //金币 + Flag int32 `protobuf:"varint,6,opt,name=Flag,proto3" json:"Flag,omitempty"` //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备) + Params []string `protobuf:"bytes,7,rep,name=Params,proto3" json:"Params,omitempty"` //其他数据 如:ip 等 + VIP int32 `protobuf:"varint,8,opt,name=VIP,proto3" json:"VIP,omitempty"` + RoleId int32 `protobuf:"varint,9,opt,name=RoleId,proto3" json:"RoleId,omitempty"` //使用中的角色id + Level int64 `protobuf:"varint,10,opt,name=Level,proto3" json:"Level,omitempty"` //玩家等级 + Exp int64 `protobuf:"varint,11,opt,name=Exp,proto3" json:"Exp,omitempty"` //玩家经验 + SkinId int32 `protobuf:"varint,12,opt,name=SkinId,proto3" json:"SkinId,omitempty"` //皮肤id + ShakeTimes int32 `protobuf:"varint,13,opt,name=ShakeTimes,proto3" json:"ShakeTimes,omitempty"` //可震动次数 + BaseCoin int64 `protobuf:"varint,14,opt,name=BaseCoin,proto3" json:"BaseCoin,omitempty"` //当前底分(单次投币金额) + PowerLine int64 `protobuf:"varint,15,opt,name=PowerLine,proto3" json:"PowerLine,omitempty"` // 当前能量值 + PowerLineMax int64 `protobuf:"varint,16,opt,name=PowerLineMax,proto3" json:"PowerLineMax,omitempty"` // 能量值上限 + RefreshTimes int64 `protobuf:"varint,17,opt,name=RefreshTimes,proto3" json:"RefreshTimes,omitempty"` // 刷新次数 +} + +func (x *PushCoinPlayerData) Reset() { + *x = PushCoinPlayerData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushCoinPlayerData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushCoinPlayerData) ProtoMessage() {} + +func (x *PushCoinPlayerData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_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 PushCoinPlayerData.ProtoReflect.Descriptor instead. +func (*PushCoinPlayerData) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{4} +} + +func (x *PushCoinPlayerData) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PushCoinPlayerData) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *PushCoinPlayerData) GetHead() int32 { + if x != nil { + return x.Head + } + return 0 +} + +func (x *PushCoinPlayerData) GetSex() int32 { + if x != nil { + return x.Sex + } + return 0 +} + +func (x *PushCoinPlayerData) GetCoin() int64 { + if x != nil { + return x.Coin + } + return 0 +} + +func (x *PushCoinPlayerData) GetFlag() int32 { + if x != nil { + return x.Flag + } + return 0 +} + +func (x *PushCoinPlayerData) GetParams() []string { + if x != nil { + return x.Params + } + return nil +} + +func (x *PushCoinPlayerData) GetVIP() int32 { + if x != nil { + return x.VIP + } + return 0 +} + +func (x *PushCoinPlayerData) GetRoleId() int32 { + if x != nil { + return x.RoleId + } + return 0 +} + +func (x *PushCoinPlayerData) GetLevel() int64 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *PushCoinPlayerData) GetExp() int64 { + if x != nil { + return x.Exp + } + return 0 +} + +func (x *PushCoinPlayerData) GetSkinId() int32 { + if x != nil { + return x.SkinId + } + return 0 +} + +func (x *PushCoinPlayerData) GetShakeTimes() int32 { + if x != nil { + return x.ShakeTimes + } + return 0 +} + +func (x *PushCoinPlayerData) GetBaseCoin() int64 { + if x != nil { + return x.BaseCoin + } + return 0 +} + +func (x *PushCoinPlayerData) GetPowerLine() int64 { + if x != nil { + return x.PowerLine + } + return 0 +} + +func (x *PushCoinPlayerData) GetPowerLineMax() int64 { + if x != nil { + return x.PowerLineMax + } + return 0 +} + +func (x *PushCoinPlayerData) GetRefreshTimes() int64 { + if x != nil { + return x.RefreshTimes + } + return 0 +} + +//房间状态 +//PACKET_SCPushCoinRoomState +type SCPushCoinRoomState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + State int32 `protobuf:"varint,1,opt,name=State,proto3" json:"State,omitempty"` //房间当前状态 + SubState int32 `protobuf:"varint,2,opt,name=SubState,proto3" json:"SubState,omitempty"` //房间当前子状态 + Params []int32 `protobuf:"varint,3,rep,packed,name=Params,proto3" json:"Params,omitempty"` //状态参数 +} + +func (x *SCPushCoinRoomState) Reset() { + *x = SCPushCoinRoomState{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinRoomState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinRoomState) ProtoMessage() {} + +func (x *SCPushCoinRoomState) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_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 SCPushCoinRoomState.ProtoReflect.Descriptor instead. +func (*SCPushCoinRoomState) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{5} +} + +func (x *SCPushCoinRoomState) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *SCPushCoinRoomState) GetSubState() int32 { + if x != nil { + return x.SubState + } + return 0 +} + +func (x *SCPushCoinRoomState) GetParams() []int32 { + if x != nil { + return x.Params + } + return nil +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +type CSPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpCode OpCodes `protobuf:"varint,1,opt,name=OpCode,proto3,enum=pushcoin.OpCodes" json:"OpCode,omitempty"` + OpParam []int64 `protobuf:"varint,2,rep,packed,name=OpParam,proto3" json:"OpParam,omitempty"` +} + +func (x *CSPushCoinPlayerOp) Reset() { + *x = CSPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSPushCoinPlayerOp) ProtoMessage() {} + +func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_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 CSPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*CSPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{6} +} + +func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *CSPushCoinPlayerOp) GetOpParam() []int64 { + if x != nil { + return x.OpParam + } + return nil +} + +//PACKET_SCPushCoinPlayerOp +type SCPushCoinPlayerOp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=pushcoin.OpResultCode" json:"OpRetCode,omitempty"` + OpCode OpCodes `protobuf:"varint,2,opt,name=OpCode,proto3,enum=pushcoin.OpCodes" json:"OpCode,omitempty"` + Exchange *ExchangeInfo `protobuf:"bytes,3,opt,name=Exchange,proto3" json:"Exchange,omitempty"` // 兑换信息,加到背包 + Draw *DrawInfo `protobuf:"bytes,4,opt,name=Draw,proto3" json:"Draw,omitempty"` // 抽奖信息,掉落到桌面 +} + +func (x *SCPushCoinPlayerOp) Reset() { + *x = SCPushCoinPlayerOp{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_pushcoin_pushcoin_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCPushCoinPlayerOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCPushCoinPlayerOp) ProtoMessage() {} + +func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message { + mi := &file_protocol_pushcoin_pushcoin_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 SCPushCoinPlayerOp.ProtoReflect.Descriptor instead. +func (*SCPushCoinPlayerOp) Descriptor() ([]byte, []int) { + return file_protocol_pushcoin_pushcoin_proto_rawDescGZIP(), []int{7} +} + +func (x *SCPushCoinPlayerOp) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Success +} + +func (x *SCPushCoinPlayerOp) GetOpCode() OpCodes { + if x != nil { + return x.OpCode + } + return OpCodes_OP_Zero +} + +func (x *SCPushCoinPlayerOp) GetExchange() *ExchangeInfo { + if x != nil { + return x.Exchange + } + return nil +} + +func (x *SCPushCoinPlayerOp) GetDraw() *DrawInfo { + if x != nil { + return x.Draw + } + return nil +} + +var File_protocol_pushcoin_pushcoin_proto protoreflect.FileDescriptor + +var file_protocol_pushcoin_pushcoin_proto_rawDesc = []byte{ + 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, + 0x6f, 0x69, 0x6e, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x08, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x22, 0xe6, 0x02, 0x0a, + 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 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, 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, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 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, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, + 0x6f, 0x69, 0x6e, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, + 0x3a, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, + 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x08, 0x44, + 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x44, 0x72, 0x61, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x42, + 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, + 0x74, 0x4c, 0x69, 0x73, 0x74, 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, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x4e, 0x75, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x75, 0x73, + 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, + 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, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, + 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, + 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x03, 0x0a, 0x12, 0x50, 0x75, 0x73, 0x68, 0x43, + 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, + 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, + 0x6c, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x56, + 0x49, 0x50, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x49, 0x50, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x45, + 0x78, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x6b, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, + 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, + 0x4d, 0x61, 0x78, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, 0x5f, 0x0a, 0x13, 0x53, 0x43, 0x50, 0x75, 0x73, + 0x68, 0x43, 0x6f, 0x69, 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, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 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, 0x22, 0x59, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, + 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, + 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, + 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x73, 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, 0xd1, 0x01, 0x0a, 0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x34, 0x0a, 0x09, 0x4f, 0x70, + 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 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, + 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x11, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x4f, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x2a, 0xad, 0x01, 0x0a, 0x10, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, + 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x10, 0xa6, 0x2c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x10, 0xa7, 0x2c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa8, 0x2c, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4f, 0x70, 0x10, 0xa9, 0x2c, 0x2a, 0x6b, 0x0a, 0x07, 0x4f, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4f, + 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x5f, 0x53, + 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x44, 0x72, + 0x61, 0x77, 0x10, 0x06, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 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, 0x70, 0x75, 0x73, 0x68, 0x63, 0x6f, 0x69, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_protocol_pushcoin_pushcoin_proto_rawDescOnce sync.Once + file_protocol_pushcoin_pushcoin_proto_rawDescData = file_protocol_pushcoin_pushcoin_proto_rawDesc +) + +func file_protocol_pushcoin_pushcoin_proto_rawDescGZIP() []byte { + file_protocol_pushcoin_pushcoin_proto_rawDescOnce.Do(func() { + file_protocol_pushcoin_pushcoin_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_pushcoin_pushcoin_proto_rawDescData) + }) + return file_protocol_pushcoin_pushcoin_proto_rawDescData +} + +var file_protocol_pushcoin_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_protocol_pushcoin_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_protocol_pushcoin_pushcoin_proto_goTypes = []interface{}{ + (PushCoinPacketID)(0), // 0: pushcoin.PushCoinPacketID + (OpCodes)(0), // 1: pushcoin.OpCodes + (OpResultCode)(0), // 2: pushcoin.OpResultCode + (*SCPushCoinRoomInfo)(nil), // 3: pushcoin.SCPushCoinRoomInfo + (*ItemInfo)(nil), // 4: pushcoin.ItemInfo + (*ExchangeInfo)(nil), // 5: pushcoin.ExchangeInfo + (*DrawInfo)(nil), // 6: pushcoin.DrawInfo + (*PushCoinPlayerData)(nil), // 7: pushcoin.PushCoinPlayerData + (*SCPushCoinRoomState)(nil), // 8: pushcoin.SCPushCoinRoomState + (*CSPushCoinPlayerOp)(nil), // 9: pushcoin.CSPushCoinPlayerOp + (*SCPushCoinPlayerOp)(nil), // 10: pushcoin.SCPushCoinPlayerOp +} +var file_protocol_pushcoin_pushcoin_proto_depIdxs = []int32{ + 7, // 0: pushcoin.SCPushCoinRoomInfo.Players:type_name -> pushcoin.PushCoinPlayerData + 5, // 1: pushcoin.SCPushCoinRoomInfo.ExchangeList:type_name -> pushcoin.ExchangeInfo + 6, // 2: pushcoin.SCPushCoinRoomInfo.DrawList:type_name -> pushcoin.DrawInfo + 4, // 3: pushcoin.ExchangeInfo.Cost:type_name -> pushcoin.ItemInfo + 4, // 4: pushcoin.ExchangeInfo.Gain:type_name -> pushcoin.ItemInfo + 1, // 5: pushcoin.CSPushCoinPlayerOp.OpCode:type_name -> pushcoin.OpCodes + 2, // 6: pushcoin.SCPushCoinPlayerOp.OpRetCode:type_name -> pushcoin.OpResultCode + 1, // 7: pushcoin.SCPushCoinPlayerOp.OpCode:type_name -> pushcoin.OpCodes + 5, // 8: pushcoin.SCPushCoinPlayerOp.Exchange:type_name -> pushcoin.ExchangeInfo + 6, // 9: pushcoin.SCPushCoinPlayerOp.Draw:type_name -> pushcoin.DrawInfo + 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 +} + +func init() { file_protocol_pushcoin_pushcoin_proto_init() } +func file_protocol_pushcoin_pushcoin_proto_init() { + if File_protocol_pushcoin_pushcoin_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_protocol_pushcoin_pushcoin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinRoomInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[1].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_protocol_pushcoin_pushcoin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangeInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DrawInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushCoinPlayerData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinRoomState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSPushCoinPlayerOp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_pushcoin_pushcoin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCPushCoinPlayerOp); 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_protocol_pushcoin_pushcoin_proto_rawDesc, + NumEnums: 3, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_protocol_pushcoin_pushcoin_proto_goTypes, + DependencyIndexes: file_protocol_pushcoin_pushcoin_proto_depIdxs, + EnumInfos: file_protocol_pushcoin_pushcoin_proto_enumTypes, + MessageInfos: file_protocol_pushcoin_pushcoin_proto_msgTypes, + }.Build() + File_protocol_pushcoin_pushcoin_proto = out.File + file_protocol_pushcoin_pushcoin_proto_rawDesc = nil + file_protocol_pushcoin_pushcoin_proto_goTypes = nil + file_protocol_pushcoin_pushcoin_proto_depIdxs = nil +} diff --git a/protocol/pushcoin/pushcoin.proto b/protocol/pushcoin/pushcoin.proto new file mode 100644 index 0000000..799e21f --- /dev/null +++ b/protocol/pushcoin/pushcoin.proto @@ -0,0 +1,104 @@ +syntax = "proto3"; +package pushcoin; +option go_package = "mongo.games.com/game/protocol/pushcoin"; + +// 5670~5679 +enum PushCoinPacketID { + PACKET_PushCoin_ZERO = 0;// 弃用消息号 + PACKET_SCPushCoinRoomInfo = 5670; // 房间信息 + PACKET_SCPushCoinRoomState = 5671; // 房间状态 + PACKET_CSPushCoinPlayerOp = 5672; // 玩家操作 + PACKET_SCPushCoinPlayerOp = 5673; // 玩家操作返回 +} + +//房间信息 +//PACKET_SCPushCoinRoomInfo +message SCPushCoinRoomInfo { + int32 RoomId = 1; //房间id + int32 GameId = 2; //游戏id + int32 RoomMode = 3; //游戏模式 + repeated int32 Params = 4; //规则参数 + int32 State = 5; //房间当前状态 + int32 TimeOut = 6; //等待剩余时间 单位:秒 + repeated PushCoinPlayerData Players = 7; //房间内的玩家信息 + repeated ExchangeInfo ExchangeList = 8; //兑换信息 + repeated DrawInfo DrawList = 9; //抽奖信息 + repeated int64 BetList = 10; //下注金额列表 +} + +message ItemInfo{ + int32 ItemId = 1; //道具id + int32 ItemNum = 2; //道具数量 +} + +message ExchangeInfo{ + int32 Id = 1; //兑换id + repeated ItemInfo Cost = 2; //消耗道具 + repeated ItemInfo Gain = 3; //获得道具 + int32 ShakeTimes = 4; //获得震动次数 +} + +message DrawInfo{ + int32 Id = 1; //抽奖id + int32 ItemId = 2; //道具id + int32 ItemNum = 3; //道具数量 + int64 Coin = 4; //价值 +} + +message PushCoinPlayerData { + string Name = 1; //名字 + int32 SnId = 2; //账号 + int32 Head = 3; //头像 + int32 Sex = 4; //性别 + int64 Coin = 5; //金币 + int32 Flag = 6; //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备) + repeated string Params = 7; //其他数据 如:ip 等 + int32 VIP = 8; + int32 RoleId = 9; //使用中的角色id + int64 Level = 10; //玩家等级 + int64 Exp = 11; //玩家经验 + int32 SkinId = 12; //皮肤id + int32 ShakeTimes = 13; //可震动次数 + int64 BaseCoin = 14; //当前底分(单次投币金额) + int64 PowerLine = 15; // 当前能量值 + int64 PowerLineMax = 16; // 能量值上限 + int64 RefreshTimes = 17; // 刷新次数 +} + +//房间状态 +//PACKET_SCPushCoinRoomState +message SCPushCoinRoomState { + int32 State = 1; //房间当前状态 + int32 SubState = 2; //房间当前子状态 + repeated int32 Params = 3; //状态参数 +} + +//玩家操作 +//PACKET_CSPushCoinPlayerOp +message CSPushCoinPlayerOp { + OpCodes OpCode = 1; + repeated int64 OpParam = 2; +} + +enum OpCodes { + OP_Zero = 0; + OP_Bet = 1; // 下注 [下注金额] + OP_Gain = 2; // 得分 [得分金额] + OP_Shake = 3; // 震动 [消耗次数] + OP_Refresh = 4; // 刷新 [桌面金额] + OP_Exchange = 5; // 兑换 [兑换id] + OP_Draw = 6; // 抽奖 [抽奖id] +} + +enum OpResultCode { + OPRC_Success = 0; //成功 + OPRC_Error = 1; //失败 +} + +//PACKET_SCPushCoinPlayerOp +message SCPushCoinPlayerOp { + OpResultCode OpRetCode = 1; + OpCodes OpCode = 2; + ExchangeInfo Exchange = 3; // 兑换信息,加到背包 + DrawInfo Draw = 4; // 抽奖信息,掉落到桌面 +} \ No newline at end of file diff --git a/protocol/rank/rank.pb.go b/protocol/rank/rank.pb.go index 36a52c6..e8e5b46 100644 --- a/protocol/rank/rank.pb.go +++ b/protocol/rank/rank.pb.go @@ -52,6 +52,12 @@ const ( // 竞技馆抽奖历史 Rank_PACKET_CSLotteryHistory Rank = 10017 Rank_PACKET_SCLotteryHistory Rank = 10018 + //年兽排行榜 + Rank_PACKET_RANK_CSNian Rank = 10019 + Rank_PACKET_RANK_SCNian Rank = 10020 + // 红包抽奖记录 + Rank_PACKET_CSRedPacketHistory Rank = 10021 + Rank_PACKET_SCRedPacketHistory Rank = 10022 ) // Enum value maps for Rank. @@ -77,28 +83,36 @@ var ( 10016: "PACKET_SCRoomAwardOne", 10017: "PACKET_CSLotteryHistory", 10018: "PACKET_SCLotteryHistory", + 10019: "PACKET_RANK_CSNian", + 10020: "PACKET_RANK_SCNian", + 10021: "PACKET_CSRedPacketHistory", + 10022: "PACKET_SCRedPacketHistory", } Rank_value = map[string]int32{ - "PACKET_RANK_ZERO": 0, - "PACKET_RANK_CSRankMatch": 10000, - "PACKET_RANK_SCRankMatch": 10001, - "PACKET_RANK_CSCoin": 10002, - "PACKET_RANK_SCCoin": 10003, - "PACKET_RANK_CSInvite": 10004, - "PACKET_RANK_SCInvite": 10005, - "PACKET_CSInviteLog": 10006, - "PACKET_SCInviteLog": 10007, - "PACKET_RANK_CSWinCoin": 10008, - "PACKET_RANK_SCWinCoin": 10009, - "PACKET_RANK_CSLevel": 10010, - "PACKET_RANK_SCLevel": 10011, - "PACKET_RANK_CSPermit": 10012, - "PACKET_RANK_SCPermit": 10013, - "PACKET_CSRoomAward": 10014, - "PACKET_SCRoomAward": 10015, - "PACKET_SCRoomAwardOne": 10016, - "PACKET_CSLotteryHistory": 10017, - "PACKET_SCLotteryHistory": 10018, + "PACKET_RANK_ZERO": 0, + "PACKET_RANK_CSRankMatch": 10000, + "PACKET_RANK_SCRankMatch": 10001, + "PACKET_RANK_CSCoin": 10002, + "PACKET_RANK_SCCoin": 10003, + "PACKET_RANK_CSInvite": 10004, + "PACKET_RANK_SCInvite": 10005, + "PACKET_CSInviteLog": 10006, + "PACKET_SCInviteLog": 10007, + "PACKET_RANK_CSWinCoin": 10008, + "PACKET_RANK_SCWinCoin": 10009, + "PACKET_RANK_CSLevel": 10010, + "PACKET_RANK_SCLevel": 10011, + "PACKET_RANK_CSPermit": 10012, + "PACKET_RANK_SCPermit": 10013, + "PACKET_CSRoomAward": 10014, + "PACKET_SCRoomAward": 10015, + "PACKET_SCRoomAwardOne": 10016, + "PACKET_CSLotteryHistory": 10017, + "PACKET_SCLotteryHistory": 10018, + "PACKET_RANK_CSNian": 10019, + "PACKET_RANK_SCNian": 10020, + "PACKET_CSRedPacketHistory": 10021, + "PACKET_SCRedPacketHistory": 10022, } ) @@ -2331,6 +2345,396 @@ func (x *SCLotteryHistory) GetList() []*LotteryHistory { return nil } +// PACKET_RANK_CSNian +type CSNian struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page int32 `protobuf:"varint,1,opt,name=Page,proto3" json:"Page,omitempty"` // 页数 + PageSize int32 `protobuf:"varint,2,opt,name=PageSize,proto3" json:"PageSize,omitempty"` // 每页数量 + TypeId int32 `protobuf:"varint,3,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-伤害榜 +} + +func (x *CSNian) Reset() { + *x = CSNian{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSNian) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSNian) ProtoMessage() {} + +func (x *CSNian) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_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 CSNian.ProtoReflect.Descriptor instead. +func (*CSNian) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{30} +} + +func (x *CSNian) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *CSNian) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *CSNian) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +type NianRankData 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"` // 昵称 + Score int64 `protobuf:"varint,3,opt,name=Score,proto3" json:"Score,omitempty"` + Rank int32 `protobuf:"varint,4,opt,name=Rank,proto3" json:"Rank,omitempty"` // 排名 + ModId int32 `protobuf:"varint,5,opt,name=ModId,proto3" json:"ModId,omitempty"` // 角色id +} + +func (x *NianRankData) Reset() { + *x = NianRankData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankData) ProtoMessage() {} + +func (x *NianRankData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_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 NianRankData.ProtoReflect.Descriptor instead. +func (*NianRankData) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{31} +} + +func (x *NianRankData) GetSnid() int32 { + if x != nil { + return x.Snid + } + return 0 +} + +func (x *NianRankData) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NianRankData) GetScore() int64 { + if x != nil { + return x.Score + } + return 0 +} + +func (x *NianRankData) GetRank() int32 { + if x != nil { + return x.Rank + } + return 0 +} + +func (x *NianRankData) GetModId() int32 { + if x != nil { + return x.ModId + } + return 0 +} + +// PACKET_RANK_SCCoin +type SCNian struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ranks []*NianRankData `protobuf:"bytes,1,rep,name=Ranks,proto3" json:"Ranks,omitempty"` // 排行榜 + Me *NianRankData `protobuf:"bytes,2,opt,name=Me,proto3" json:"Me,omitempty"` // 玩家自己的排行信息 + Page int32 `protobuf:"varint,3,opt,name=Page,proto3" json:"Page,omitempty"` // 页数 + PageSize int32 `protobuf:"varint,4,opt,name=PageSize,proto3" json:"PageSize,omitempty"` // 每页数量 + Total int32 `protobuf:"varint,5,opt,name=Total,proto3" json:"Total,omitempty"` // 总数量 + TypeId int32 `protobuf:"varint,6,opt,name=TypeId,proto3" json:"TypeId,omitempty"` +} + +func (x *SCNian) Reset() { + *x = SCNian{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCNian) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCNian) ProtoMessage() {} + +func (x *SCNian) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_proto_msgTypes[32] + 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 SCNian.ProtoReflect.Descriptor instead. +func (*SCNian) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{32} +} + +func (x *SCNian) GetRanks() []*NianRankData { + if x != nil { + return x.Ranks + } + return nil +} + +func (x *SCNian) GetMe() *NianRankData { + if x != nil { + return x.Me + } + return nil +} + +func (x *SCNian) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *SCNian) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *SCNian) GetTotal() int32 { + if x != nil { + return x.Total + } + return 0 +} + +func (x *SCNian) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +// 红包抽奖记录 +// PACKET_CSRedPacketHistory +type CSRedPacketHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 红包活动id +} + +func (x *CSRedPacketHistory) Reset() { + *x = CSRedPacketHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSRedPacketHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSRedPacketHistory) ProtoMessage() {} + +func (x *CSRedPacketHistory) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_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 CSRedPacketHistory.ProtoReflect.Descriptor instead. +func (*CSRedPacketHistory) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{33} +} + +func (x *CSRedPacketHistory) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +type RedPacketHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳 + ItemId int32 `protobuf:"varint,5,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 道具id + ItemNum int64 `protobuf:"varint,6,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` // 道具数量 +} + +func (x *RedPacketHistory) Reset() { + *x = RedPacketHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedPacketHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedPacketHistory) ProtoMessage() {} + +func (x *RedPacketHistory) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_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 RedPacketHistory.ProtoReflect.Descriptor instead. +func (*RedPacketHistory) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{34} +} + +func (x *RedPacketHistory) GetTs() int64 { + if x != nil { + return x.Ts + } + return 0 +} + +func (x *RedPacketHistory) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *RedPacketHistory) GetItemNum() int64 { + if x != nil { + return x.ItemNum + } + return 0 +} + +type SCRedPacketHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*RedPacketHistory `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` +} + +func (x *SCRedPacketHistory) Reset() { + *x = SCRedPacketHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_rank_rank_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCRedPacketHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCRedPacketHistory) ProtoMessage() {} + +func (x *SCRedPacketHistory) ProtoReflect() protoreflect.Message { + mi := &file_protocol_rank_rank_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 SCRedPacketHistory.ProtoReflect.Descriptor instead. +func (*SCRedPacketHistory) Descriptor() ([]byte, []int) { + return file_protocol_rank_rank_proto_rawDescGZIP(), []int{35} +} + +func (x *SCRedPacketHistory) GetList() []*RedPacketHistory { + if x != nil { + return x.List + } + return nil +} + var File_protocol_rank_rank_proto protoreflect.FileDescriptor var file_protocol_rank_rank_proto_rawDesc = []byte{ @@ -2543,53 +2947,96 @@ var file_protocol_rank_rank_proto_rawDesc = []byte{ 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x9e, 0x04, 0x0a, 0x04, 0x52, 0x61, - 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, - 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, - 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, - 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, - 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, - 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, - 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, - 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, - 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, - 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, - 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, - 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, - 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, - 0x9f, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, - 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, 0x1c, - 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, 0x17, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, - 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, - 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, - 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, - 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 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, 0x72, 0x61, 0x6e, 0x6b, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x06, 0x43, 0x53, 0x4e, + 0x69, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 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, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x76, 0x0a, 0x0c, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 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, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, + 0x05, 0x4d, 0x6f, 0x64, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, + 0x64, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x06, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x12, 0x28, + 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x05, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x22, 0x0a, 0x02, 0x4d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4e, 0x69, 0x61, 0x6e, + 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x12, 0x43, 0x53, + 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, + 0x22, 0x54, 0x0a, 0x10, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x02, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, + 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x40, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x61, 0x6e, + 0x6b, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x90, 0x05, 0x0a, 0x04, 0x52, 0x61, 0x6e, + 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, + 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, + 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, + 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, + 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, + 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, + 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, + 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, + 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, + 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9f, + 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, + 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, 0x1c, 0x0a, + 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x10, + 0xa3, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, + 0x4b, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0xa4, 0x4e, 0x12, 0x1e, 0x0a, 0x19, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa5, 0x4e, 0x12, 0x1e, 0x0a, 0x19, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa6, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, + 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, + 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, + 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, + 0x70, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 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, 0x72, 0x61, 0x6e, + 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2605,7 +3052,7 @@ func file_protocol_rank_rank_proto_rawDescGZIP() []byte { } var file_protocol_rank_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protocol_rank_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 30) +var file_protocol_rank_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_protocol_rank_rank_proto_goTypes = []interface{}{ (Rank)(0), // 0: rank.Rank (RankInvite)(0), // 1: rank.RankInvite @@ -2639,6 +3086,12 @@ var file_protocol_rank_rank_proto_goTypes = []interface{}{ (*LotteryShow)(nil), // 29: rank.LotteryShow (*LotteryHistory)(nil), // 30: rank.LotteryHistory (*SCLotteryHistory)(nil), // 31: rank.SCLotteryHistory + (*CSNian)(nil), // 32: rank.CSNian + (*NianRankData)(nil), // 33: rank.NianRankData + (*SCNian)(nil), // 34: rank.SCNian + (*CSRedPacketHistory)(nil), // 35: rank.CSRedPacketHistory + (*RedPacketHistory)(nil), // 36: rank.RedPacketHistory + (*SCRedPacketHistory)(nil), // 37: rank.SCRedPacketHistory } var file_protocol_rank_rank_proto_depIdxs = []int32{ 3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank @@ -2659,11 +3112,14 @@ var file_protocol_rank_rank_proto_depIdxs = []int32{ 25, // 15: rank.LotteryHistory.Award:type_name -> rank.Item 29, // 16: rank.LotteryHistory.Show:type_name -> rank.LotteryShow 30, // 17: rank.SCLotteryHistory.List:type_name -> rank.LotteryHistory - 18, // [18:18] is the sub-list for method output_type - 18, // [18:18] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 33, // 18: rank.SCNian.Ranks:type_name -> rank.NianRankData + 33, // 19: rank.SCNian.Me:type_name -> rank.NianRankData + 36, // 20: rank.SCRedPacketHistory.List:type_name -> rank.RedPacketHistory + 21, // [21:21] is the sub-list for method output_type + 21, // [21:21] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_protocol_rank_rank_proto_init() } @@ -3032,6 +3488,78 @@ func file_protocol_rank_rank_proto_init() { return nil } } + file_protocol_rank_rank_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSNian); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCNian); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSRedPacketHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_rank_rank_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCRedPacketHistory); 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{ @@ -3039,7 +3567,7 @@ func file_protocol_rank_rank_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_rank_rank_proto_rawDesc, NumEnums: 2, - NumMessages: 30, + NumMessages: 36, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/rank/rank.proto b/protocol/rank/rank.proto index 5884297..3ddd14e 100644 --- a/protocol/rank/rank.proto +++ b/protocol/rank/rank.proto @@ -33,6 +33,12 @@ enum Rank{ // 竞技馆抽奖历史 PACKET_CSLotteryHistory = 10017; PACKET_SCLotteryHistory = 10018; + //年兽排行榜 + PACKET_RANK_CSNian = 10019; + PACKET_RANK_SCNian = 10020; + // 红包抽奖记录 + PACKET_CSRedPacketHistory = 10021; + PACKET_SCRedPacketHistory = 10022; } // 排位榜 @@ -270,4 +276,43 @@ message LotteryHistory{ // PACKET_SCLotteryHistory message SCLotteryHistory{ repeated LotteryHistory List = 1; +} + +// PACKET_RANK_CSNian +message CSNian{ + int32 Page = 1; // 页数 + int32 PageSize = 2; // 每页数量 + int32 TypeId = 3; //1-幸运榜 2-伤害榜 +} + +message NianRankData { + int32 Snid = 1; // 玩家id + string Name = 2; // 昵称 + int64 Score = 3; + int32 Rank = 4; // 排名 + int32 ModId = 5; // 角色id +} + +// PACKET_RANK_SCCoin +message SCNian{ + repeated NianRankData Ranks = 1; // 排行榜 + NianRankData Me = 2; // 玩家自己的排行信息 + int32 Page = 3; // 页数 + int32 PageSize = 4; // 每页数量 + int32 Total = 5; // 总数量 + int32 TypeId = 6; +} + +// 红包抽奖记录 +// PACKET_CSRedPacketHistory +message CSRedPacketHistory{ + int64 Id = 1; // 红包活动id +} +message RedPacketHistory{ + int64 Ts = 1; // 时间戳 + int32 ItemId = 5; // 道具id + int64 ItemNum = 6; // 道具数量 +} +message SCRedPacketHistory{ + repeated RedPacketHistory List = 1; } \ No newline at end of file diff --git a/protocol/server/pbdata.pb.go b/protocol/server/pbdata.pb.go index c144fe1..d62b55b 100644 --- a/protocol/server/pbdata.pb.go +++ b/protocol/server/pbdata.pb.go @@ -23,6 +23,124 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type DB_ACTPushCoin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + Rate int32 `protobuf:"varint,2,opt,name=Rate,proto3" json:"Rate,omitempty"` + Gain map[int64]int64 `protobuf:"bytes,3,rep,name=Gain,proto3" json:"Gain,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Value int64 `protobuf:"varint,4,opt,name=Value,proto3" json:"Value,omitempty"` +} + +func (x *DB_ACTPushCoin) Reset() { + *x = DB_ACTPushCoin{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_server_pbdata_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_ACTPushCoin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_ACTPushCoin) ProtoMessage() {} + +func (x *DB_ACTPushCoin) ProtoReflect() protoreflect.Message { + mi := &file_protocol_server_pbdata_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DB_ACTPushCoin.ProtoReflect.Descriptor instead. +func (*DB_ACTPushCoin) Descriptor() ([]byte, []int) { + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{0} +} + +func (x *DB_ACTPushCoin) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_ACTPushCoin) GetRate() int32 { + if x != nil { + return x.Rate + } + return 0 +} + +func (x *DB_ACTPushCoin) GetGain() map[int64]int64 { + if x != nil { + return x.Gain + } + return nil +} + +func (x *DB_ACTPushCoin) GetValue() int64 { + if x != nil { + return x.Value + } + return 0 +} + +type DB_ACTPushCoinArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_ACTPushCoin `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_ACTPushCoinArray) Reset() { + *x = DB_ACTPushCoinArray{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_server_pbdata_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_ACTPushCoinArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_ACTPushCoinArray) ProtoMessage() {} + +func (x *DB_ACTPushCoinArray) ProtoReflect() protoreflect.Message { + mi := &file_protocol_server_pbdata_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 DB_ACTPushCoinArray.ProtoReflect.Descriptor instead. +func (*DB_ACTPushCoinArray) Descriptor() ([]byte, []int) { + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{1} +} + +func (x *DB_ACTPushCoinArray) GetArr() []*DB_ACTPushCoin { + if x != nil { + return x.Arr + } + return nil +} + type DB_ActSign struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -38,7 +156,7 @@ type DB_ActSign struct { func (x *DB_ActSign) Reset() { *x = DB_ActSign{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[0] + mi := &file_protocol_server_pbdata_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -51,7 +169,7 @@ func (x *DB_ActSign) String() string { func (*DB_ActSign) ProtoMessage() {} func (x *DB_ActSign) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[0] + mi := &file_protocol_server_pbdata_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64,7 +182,7 @@ func (x *DB_ActSign) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ActSign.ProtoReflect.Descriptor instead. func (*DB_ActSign) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{0} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{2} } func (x *DB_ActSign) GetId() int32 { @@ -113,7 +231,7 @@ type DB_ActSignArray struct { func (x *DB_ActSignArray) Reset() { *x = DB_ActSignArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[1] + mi := &file_protocol_server_pbdata_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -126,7 +244,7 @@ func (x *DB_ActSignArray) String() string { func (*DB_ActSignArray) ProtoMessage() {} func (x *DB_ActSignArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[1] + mi := &file_protocol_server_pbdata_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -139,7 +257,7 @@ func (x *DB_ActSignArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ActSignArray.ProtoReflect.Descriptor instead. func (*DB_ActSignArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{1} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{3} } func (x *DB_ActSignArray) GetArr() []*DB_ActSign { @@ -170,7 +288,7 @@ type DB_Activity1 struct { func (x *DB_Activity1) Reset() { *x = DB_Activity1{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[2] + mi := &file_protocol_server_pbdata_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -183,7 +301,7 @@ func (x *DB_Activity1) String() string { func (*DB_Activity1) ProtoMessage() {} func (x *DB_Activity1) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[2] + mi := &file_protocol_server_pbdata_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -196,7 +314,7 @@ func (x *DB_Activity1) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Activity1.ProtoReflect.Descriptor instead. func (*DB_Activity1) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{2} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{4} } func (x *DB_Activity1) GetId() int32 { @@ -287,7 +405,7 @@ type DB_Activity1Array struct { func (x *DB_Activity1Array) Reset() { *x = DB_Activity1Array{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[3] + mi := &file_protocol_server_pbdata_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -300,7 +418,7 @@ func (x *DB_Activity1Array) String() string { func (*DB_Activity1Array) ProtoMessage() {} func (x *DB_Activity1Array) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[3] + mi := &file_protocol_server_pbdata_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -313,7 +431,7 @@ func (x *DB_Activity1Array) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Activity1Array.ProtoReflect.Descriptor instead. func (*DB_Activity1Array) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{3} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{5} } func (x *DB_Activity1Array) GetArr() []*DB_Activity1 { @@ -336,7 +454,7 @@ type DB_AnimalColor struct { func (x *DB_AnimalColor) Reset() { *x = DB_AnimalColor{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[4] + mi := &file_protocol_server_pbdata_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -349,7 +467,7 @@ func (x *DB_AnimalColor) String() string { func (*DB_AnimalColor) ProtoMessage() {} func (x *DB_AnimalColor) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[4] + mi := &file_protocol_server_pbdata_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -362,7 +480,7 @@ func (x *DB_AnimalColor) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_AnimalColor.ProtoReflect.Descriptor instead. func (*DB_AnimalColor) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{4} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{6} } func (x *DB_AnimalColor) GetId() int32 { @@ -397,7 +515,7 @@ type DB_AnimalColorArray struct { func (x *DB_AnimalColorArray) Reset() { *x = DB_AnimalColorArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[5] + mi := &file_protocol_server_pbdata_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -410,7 +528,7 @@ func (x *DB_AnimalColorArray) String() string { func (*DB_AnimalColorArray) ProtoMessage() {} func (x *DB_AnimalColorArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[5] + mi := &file_protocol_server_pbdata_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -423,7 +541,7 @@ func (x *DB_AnimalColorArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_AnimalColorArray.ProtoReflect.Descriptor instead. func (*DB_AnimalColorArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{5} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{7} } func (x *DB_AnimalColorArray) GetArr() []*DB_AnimalColor { @@ -447,7 +565,7 @@ type DB_ArtilleryRate struct { func (x *DB_ArtilleryRate) Reset() { *x = DB_ArtilleryRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[6] + mi := &file_protocol_server_pbdata_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -460,7 +578,7 @@ func (x *DB_ArtilleryRate) String() string { func (*DB_ArtilleryRate) ProtoMessage() {} func (x *DB_ArtilleryRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[6] + mi := &file_protocol_server_pbdata_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -473,7 +591,7 @@ func (x *DB_ArtilleryRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtilleryRate.ProtoReflect.Descriptor instead. func (*DB_ArtilleryRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{6} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{8} } func (x *DB_ArtilleryRate) GetId() int32 { @@ -515,7 +633,7 @@ type DB_ArtilleryRateArray struct { func (x *DB_ArtilleryRateArray) Reset() { *x = DB_ArtilleryRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[7] + mi := &file_protocol_server_pbdata_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -528,7 +646,7 @@ func (x *DB_ArtilleryRateArray) String() string { func (*DB_ArtilleryRateArray) ProtoMessage() {} func (x *DB_ArtilleryRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[7] + mi := &file_protocol_server_pbdata_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -541,7 +659,7 @@ func (x *DB_ArtilleryRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtilleryRateArray.ProtoReflect.Descriptor instead. func (*DB_ArtilleryRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{7} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{9} } func (x *DB_ArtilleryRateArray) GetArr() []*DB_ArtilleryRate { @@ -581,7 +699,7 @@ type DB_ArtillerySkin struct { func (x *DB_ArtillerySkin) Reset() { *x = DB_ArtillerySkin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[8] + mi := &file_protocol_server_pbdata_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -594,7 +712,7 @@ func (x *DB_ArtillerySkin) String() string { func (*DB_ArtillerySkin) ProtoMessage() {} func (x *DB_ArtillerySkin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[8] + mi := &file_protocol_server_pbdata_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -607,7 +725,7 @@ func (x *DB_ArtillerySkin) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtillerySkin.ProtoReflect.Descriptor instead. func (*DB_ArtillerySkin) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{8} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{10} } func (x *DB_ArtillerySkin) GetId() int32 { @@ -761,7 +879,7 @@ type DB_ArtillerySkinArray struct { func (x *DB_ArtillerySkinArray) Reset() { *x = DB_ArtillerySkinArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[9] + mi := &file_protocol_server_pbdata_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -774,7 +892,7 @@ func (x *DB_ArtillerySkinArray) String() string { func (*DB_ArtillerySkinArray) ProtoMessage() {} func (x *DB_ArtillerySkinArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[9] + mi := &file_protocol_server_pbdata_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -787,7 +905,7 @@ func (x *DB_ArtillerySkinArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ArtillerySkinArray.ProtoReflect.Descriptor instead. func (*DB_ArtillerySkinArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{9} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{11} } func (x *DB_ArtillerySkinArray) GetArr() []*DB_ArtillerySkin { @@ -810,7 +928,7 @@ type DB_BlackWhite struct { func (x *DB_BlackWhite) Reset() { *x = DB_BlackWhite{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[10] + mi := &file_protocol_server_pbdata_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -823,7 +941,7 @@ func (x *DB_BlackWhite) String() string { func (*DB_BlackWhite) ProtoMessage() {} func (x *DB_BlackWhite) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[10] + mi := &file_protocol_server_pbdata_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -836,7 +954,7 @@ func (x *DB_BlackWhite) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_BlackWhite.ProtoReflect.Descriptor instead. func (*DB_BlackWhite) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{10} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{12} } func (x *DB_BlackWhite) GetId() int32 { @@ -871,7 +989,7 @@ type DB_BlackWhiteArray struct { func (x *DB_BlackWhiteArray) Reset() { *x = DB_BlackWhiteArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[11] + mi := &file_protocol_server_pbdata_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -884,7 +1002,7 @@ func (x *DB_BlackWhiteArray) String() string { func (*DB_BlackWhiteArray) ProtoMessage() {} func (x *DB_BlackWhiteArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[11] + mi := &file_protocol_server_pbdata_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -897,7 +1015,7 @@ func (x *DB_BlackWhiteArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_BlackWhiteArray.ProtoReflect.Descriptor instead. func (*DB_BlackWhiteArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{11} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{13} } func (x *DB_BlackWhiteArray) GetArr() []*DB_BlackWhite { @@ -934,7 +1052,7 @@ type DB_CardsJD struct { func (x *DB_CardsJD) Reset() { *x = DB_CardsJD{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[12] + mi := &file_protocol_server_pbdata_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -947,7 +1065,7 @@ func (x *DB_CardsJD) String() string { func (*DB_CardsJD) ProtoMessage() {} func (x *DB_CardsJD) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[12] + mi := &file_protocol_server_pbdata_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -960,7 +1078,7 @@ func (x *DB_CardsJD) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsJD.ProtoReflect.Descriptor instead. func (*DB_CardsJD) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{12} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{14} } func (x *DB_CardsJD) GetId() int32 { @@ -1093,7 +1211,7 @@ type DB_CardsJDArray struct { func (x *DB_CardsJDArray) Reset() { *x = DB_CardsJDArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[13] + mi := &file_protocol_server_pbdata_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1106,7 +1224,7 @@ func (x *DB_CardsJDArray) String() string { func (*DB_CardsJDArray) ProtoMessage() {} func (x *DB_CardsJDArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[13] + mi := &file_protocol_server_pbdata_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1119,7 +1237,7 @@ func (x *DB_CardsJDArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsJDArray.ProtoReflect.Descriptor instead. func (*DB_CardsJDArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{13} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{15} } func (x *DB_CardsJDArray) GetArr() []*DB_CardsJD { @@ -1156,7 +1274,7 @@ type DB_CardsYuLe struct { func (x *DB_CardsYuLe) Reset() { *x = DB_CardsYuLe{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[14] + mi := &file_protocol_server_pbdata_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1169,7 +1287,7 @@ func (x *DB_CardsYuLe) String() string { func (*DB_CardsYuLe) ProtoMessage() {} func (x *DB_CardsYuLe) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[14] + mi := &file_protocol_server_pbdata_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1182,7 +1300,7 @@ func (x *DB_CardsYuLe) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsYuLe.ProtoReflect.Descriptor instead. func (*DB_CardsYuLe) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{14} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{16} } func (x *DB_CardsYuLe) GetId() int32 { @@ -1315,7 +1433,7 @@ type DB_CardsYuLeArray struct { func (x *DB_CardsYuLeArray) Reset() { *x = DB_CardsYuLeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[15] + mi := &file_protocol_server_pbdata_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1328,7 +1446,7 @@ func (x *DB_CardsYuLeArray) String() string { func (*DB_CardsYuLeArray) ProtoMessage() {} func (x *DB_CardsYuLeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[15] + mi := &file_protocol_server_pbdata_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1341,7 +1459,7 @@ func (x *DB_CardsYuLeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CardsYuLeArray.ProtoReflect.Descriptor instead. func (*DB_CardsYuLeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{15} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{17} } func (x *DB_CardsYuLeArray) GetArr() []*DB_CardsYuLe { @@ -1368,7 +1486,7 @@ type DB_ChessBilledRules struct { func (x *DB_ChessBilledRules) Reset() { *x = DB_ChessBilledRules{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[16] + mi := &file_protocol_server_pbdata_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1381,7 +1499,7 @@ func (x *DB_ChessBilledRules) String() string { func (*DB_ChessBilledRules) ProtoMessage() {} func (x *DB_ChessBilledRules) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[16] + mi := &file_protocol_server_pbdata_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1394,7 +1512,7 @@ func (x *DB_ChessBilledRules) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessBilledRules.ProtoReflect.Descriptor instead. func (*DB_ChessBilledRules) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{16} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{18} } func (x *DB_ChessBilledRules) GetId() int32 { @@ -1457,7 +1575,7 @@ type DB_ChessBilledRulesArray struct { func (x *DB_ChessBilledRulesArray) Reset() { *x = DB_ChessBilledRulesArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[17] + mi := &file_protocol_server_pbdata_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1470,7 +1588,7 @@ func (x *DB_ChessBilledRulesArray) String() string { func (*DB_ChessBilledRulesArray) ProtoMessage() {} func (x *DB_ChessBilledRulesArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[17] + mi := &file_protocol_server_pbdata_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1483,7 +1601,7 @@ func (x *DB_ChessBilledRulesArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessBilledRulesArray.ProtoReflect.Descriptor instead. func (*DB_ChessBilledRulesArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{17} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{19} } func (x *DB_ChessBilledRulesArray) GetArr() []*DB_ChessBilledRules { @@ -1510,7 +1628,7 @@ type DB_ChessMatchRules struct { func (x *DB_ChessMatchRules) Reset() { *x = DB_ChessMatchRules{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[18] + mi := &file_protocol_server_pbdata_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1523,7 +1641,7 @@ func (x *DB_ChessMatchRules) String() string { func (*DB_ChessMatchRules) ProtoMessage() {} func (x *DB_ChessMatchRules) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[18] + mi := &file_protocol_server_pbdata_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1536,7 +1654,7 @@ func (x *DB_ChessMatchRules) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessMatchRules.ProtoReflect.Descriptor instead. func (*DB_ChessMatchRules) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{18} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{20} } func (x *DB_ChessMatchRules) GetId() int32 { @@ -1599,7 +1717,7 @@ type DB_ChessMatchRulesArray struct { func (x *DB_ChessMatchRulesArray) Reset() { *x = DB_ChessMatchRulesArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[19] + mi := &file_protocol_server_pbdata_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1612,7 +1730,7 @@ func (x *DB_ChessMatchRulesArray) String() string { func (*DB_ChessMatchRulesArray) ProtoMessage() {} func (x *DB_ChessMatchRulesArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[19] + mi := &file_protocol_server_pbdata_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1625,7 +1743,7 @@ func (x *DB_ChessMatchRulesArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessMatchRulesArray.ProtoReflect.Descriptor instead. func (*DB_ChessMatchRulesArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{19} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{21} } func (x *DB_ChessMatchRulesArray) GetArr() []*DB_ChessMatchRules { @@ -1648,7 +1766,7 @@ type DB_ChessRank struct { func (x *DB_ChessRank) Reset() { *x = DB_ChessRank{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[20] + mi := &file_protocol_server_pbdata_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1661,7 +1779,7 @@ func (x *DB_ChessRank) String() string { func (*DB_ChessRank) ProtoMessage() {} func (x *DB_ChessRank) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[20] + mi := &file_protocol_server_pbdata_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1674,7 +1792,7 @@ func (x *DB_ChessRank) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessRank.ProtoReflect.Descriptor instead. func (*DB_ChessRank) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{20} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{22} } func (x *DB_ChessRank) GetId() int32 { @@ -1709,7 +1827,7 @@ type DB_ChessRankArray struct { func (x *DB_ChessRankArray) Reset() { *x = DB_ChessRankArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[21] + mi := &file_protocol_server_pbdata_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1722,7 +1840,7 @@ func (x *DB_ChessRankArray) String() string { func (*DB_ChessRankArray) ProtoMessage() {} func (x *DB_ChessRankArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[21] + mi := &file_protocol_server_pbdata_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1735,7 +1853,7 @@ func (x *DB_ChessRankArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ChessRankArray.ProtoReflect.Descriptor instead. func (*DB_ChessRankArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{21} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{23} } func (x *DB_ChessRankArray) GetArr() []*DB_ChessRank { @@ -1759,7 +1877,7 @@ type DB_ClientVer struct { func (x *DB_ClientVer) Reset() { *x = DB_ClientVer{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[22] + mi := &file_protocol_server_pbdata_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1772,7 +1890,7 @@ func (x *DB_ClientVer) String() string { func (*DB_ClientVer) ProtoMessage() {} func (x *DB_ClientVer) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[22] + mi := &file_protocol_server_pbdata_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1785,7 +1903,7 @@ func (x *DB_ClientVer) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ClientVer.ProtoReflect.Descriptor instead. func (*DB_ClientVer) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{22} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{24} } func (x *DB_ClientVer) GetId() int32 { @@ -1827,7 +1945,7 @@ type DB_ClientVerArray struct { func (x *DB_ClientVerArray) Reset() { *x = DB_ClientVerArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[23] + mi := &file_protocol_server_pbdata_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1840,7 +1958,7 @@ func (x *DB_ClientVerArray) String() string { func (*DB_ClientVerArray) ProtoMessage() {} func (x *DB_ClientVerArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[23] + mi := &file_protocol_server_pbdata_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1853,7 +1971,7 @@ func (x *DB_ClientVerArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ClientVerArray.ProtoReflect.Descriptor instead. func (*DB_ClientVerArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{23} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{25} } func (x *DB_ClientVerArray) GetArr() []*DB_ClientVer { @@ -1876,7 +1994,7 @@ type DB_CollectBox struct { func (x *DB_CollectBox) Reset() { *x = DB_CollectBox{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[24] + mi := &file_protocol_server_pbdata_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1889,7 +2007,7 @@ func (x *DB_CollectBox) String() string { func (*DB_CollectBox) ProtoMessage() {} func (x *DB_CollectBox) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[24] + mi := &file_protocol_server_pbdata_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1902,7 +2020,7 @@ func (x *DB_CollectBox) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBox.ProtoReflect.Descriptor instead. func (*DB_CollectBox) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{24} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{26} } func (x *DB_CollectBox) GetId() int32 { @@ -1937,7 +2055,7 @@ type DB_CollectBoxArray struct { func (x *DB_CollectBoxArray) Reset() { *x = DB_CollectBoxArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[25] + mi := &file_protocol_server_pbdata_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1950,7 +2068,7 @@ func (x *DB_CollectBoxArray) String() string { func (*DB_CollectBoxArray) ProtoMessage() {} func (x *DB_CollectBoxArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[25] + mi := &file_protocol_server_pbdata_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1963,7 +2081,7 @@ func (x *DB_CollectBoxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBoxArray.ProtoReflect.Descriptor instead. func (*DB_CollectBoxArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{25} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{27} } func (x *DB_CollectBoxArray) GetArr() []*DB_CollectBox { @@ -1985,7 +2103,7 @@ type DB_CollectBoxGain struct { func (x *DB_CollectBoxGain) Reset() { *x = DB_CollectBoxGain{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[26] + mi := &file_protocol_server_pbdata_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1998,7 +2116,7 @@ func (x *DB_CollectBoxGain) String() string { func (*DB_CollectBoxGain) ProtoMessage() {} func (x *DB_CollectBoxGain) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[26] + mi := &file_protocol_server_pbdata_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2011,7 +2129,7 @@ func (x *DB_CollectBoxGain) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBoxGain.ProtoReflect.Descriptor instead. func (*DB_CollectBoxGain) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{26} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{28} } func (x *DB_CollectBoxGain) GetId() int32 { @@ -2039,7 +2157,7 @@ type DB_CollectBoxGainArray struct { func (x *DB_CollectBoxGainArray) Reset() { *x = DB_CollectBoxGainArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[27] + mi := &file_protocol_server_pbdata_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2052,7 +2170,7 @@ func (x *DB_CollectBoxGainArray) String() string { func (*DB_CollectBoxGainArray) ProtoMessage() {} func (x *DB_CollectBoxGainArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[27] + mi := &file_protocol_server_pbdata_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2065,7 +2183,7 @@ func (x *DB_CollectBoxGainArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CollectBoxGainArray.ProtoReflect.Descriptor instead. func (*DB_CollectBoxGainArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{27} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{29} } func (x *DB_CollectBoxGainArray) GetArr() []*DB_CollectBoxGain { @@ -2088,7 +2206,7 @@ type DB_CrashSearch struct { func (x *DB_CrashSearch) Reset() { *x = DB_CrashSearch{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[28] + mi := &file_protocol_server_pbdata_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2101,7 +2219,7 @@ func (x *DB_CrashSearch) String() string { func (*DB_CrashSearch) ProtoMessage() {} func (x *DB_CrashSearch) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[28] + mi := &file_protocol_server_pbdata_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2114,7 +2232,7 @@ func (x *DB_CrashSearch) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CrashSearch.ProtoReflect.Descriptor instead. func (*DB_CrashSearch) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{28} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{30} } func (x *DB_CrashSearch) GetId() int32 { @@ -2149,7 +2267,7 @@ type DB_CrashSearchArray struct { func (x *DB_CrashSearchArray) Reset() { *x = DB_CrashSearchArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[29] + mi := &file_protocol_server_pbdata_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2162,7 +2280,7 @@ func (x *DB_CrashSearchArray) String() string { func (*DB_CrashSearchArray) ProtoMessage() {} func (x *DB_CrashSearchArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[29] + mi := &file_protocol_server_pbdata_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2175,7 +2293,7 @@ func (x *DB_CrashSearchArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CrashSearchArray.ProtoReflect.Descriptor instead. func (*DB_CrashSearchArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{29} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{31} } func (x *DB_CrashSearchArray) GetArr() []*DB_CrashSearch { @@ -2200,7 +2318,7 @@ type DB_Createroom struct { func (x *DB_Createroom) Reset() { *x = DB_Createroom{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[30] + mi := &file_protocol_server_pbdata_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2213,7 +2331,7 @@ func (x *DB_Createroom) String() string { func (*DB_Createroom) ProtoMessage() {} func (x *DB_Createroom) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[30] + mi := &file_protocol_server_pbdata_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2226,7 +2344,7 @@ func (x *DB_Createroom) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Createroom.ProtoReflect.Descriptor instead. func (*DB_Createroom) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{30} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{32} } func (x *DB_Createroom) GetId() int32 { @@ -2275,7 +2393,7 @@ type DB_CreateroomArray struct { func (x *DB_CreateroomArray) Reset() { *x = DB_CreateroomArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[31] + mi := &file_protocol_server_pbdata_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2288,7 +2406,7 @@ func (x *DB_CreateroomArray) String() string { func (*DB_CreateroomArray) ProtoMessage() {} func (x *DB_CreateroomArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[31] + mi := &file_protocol_server_pbdata_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2301,7 +2419,7 @@ func (x *DB_CreateroomArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_CreateroomArray.ProtoReflect.Descriptor instead. func (*DB_CreateroomArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{31} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{33} } func (x *DB_CreateroomArray) GetArr() []*DB_Createroom { @@ -2356,7 +2474,7 @@ type DB_Fish struct { func (x *DB_Fish) Reset() { *x = DB_Fish{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[32] + mi := &file_protocol_server_pbdata_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2369,7 +2487,7 @@ func (x *DB_Fish) String() string { func (*DB_Fish) ProtoMessage() {} func (x *DB_Fish) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[32] + mi := &file_protocol_server_pbdata_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2382,7 +2500,7 @@ func (x *DB_Fish) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Fish.ProtoReflect.Descriptor instead. func (*DB_Fish) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{32} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{34} } func (x *DB_Fish) GetId() int32 { @@ -2641,7 +2759,7 @@ type DB_FishArray struct { func (x *DB_FishArray) Reset() { *x = DB_FishArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[33] + mi := &file_protocol_server_pbdata_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2654,7 +2772,7 @@ func (x *DB_FishArray) String() string { func (*DB_FishArray) ProtoMessage() {} func (x *DB_FishArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[33] + mi := &file_protocol_server_pbdata_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2667,7 +2785,7 @@ func (x *DB_FishArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishArray.ProtoReflect.Descriptor instead. func (*DB_FishArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{33} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{35} } func (x *DB_FishArray) GetArr() []*DB_Fish { @@ -2697,7 +2815,7 @@ type DB_FishOut struct { func (x *DB_FishOut) Reset() { *x = DB_FishOut{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[34] + mi := &file_protocol_server_pbdata_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2710,7 +2828,7 @@ func (x *DB_FishOut) String() string { func (*DB_FishOut) ProtoMessage() {} func (x *DB_FishOut) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[34] + mi := &file_protocol_server_pbdata_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2723,7 +2841,7 @@ func (x *DB_FishOut) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishOut.ProtoReflect.Descriptor instead. func (*DB_FishOut) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{34} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{36} } func (x *DB_FishOut) GetId() int32 { @@ -2807,7 +2925,7 @@ type DB_FishOutArray struct { func (x *DB_FishOutArray) Reset() { *x = DB_FishOutArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[35] + mi := &file_protocol_server_pbdata_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2820,7 +2938,7 @@ func (x *DB_FishOutArray) String() string { func (*DB_FishOutArray) ProtoMessage() {} func (x *DB_FishOutArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[35] + mi := &file_protocol_server_pbdata_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2833,7 +2951,7 @@ func (x *DB_FishOutArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishOutArray.ProtoReflect.Descriptor instead. func (*DB_FishOutArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{35} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{37} } func (x *DB_FishOutArray) GetArr() []*DB_FishOut { @@ -2856,7 +2974,7 @@ type DB_FishPath struct { func (x *DB_FishPath) Reset() { *x = DB_FishPath{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[36] + mi := &file_protocol_server_pbdata_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2869,7 +2987,7 @@ func (x *DB_FishPath) String() string { func (*DB_FishPath) ProtoMessage() {} func (x *DB_FishPath) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[36] + mi := &file_protocol_server_pbdata_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2882,7 +3000,7 @@ func (x *DB_FishPath) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishPath.ProtoReflect.Descriptor instead. func (*DB_FishPath) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{36} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{38} } func (x *DB_FishPath) GetId() int32 { @@ -2917,7 +3035,7 @@ type DB_FishPathArray struct { func (x *DB_FishPathArray) Reset() { *x = DB_FishPathArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[37] + mi := &file_protocol_server_pbdata_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2930,7 +3048,7 @@ func (x *DB_FishPathArray) String() string { func (*DB_FishPathArray) ProtoMessage() {} func (x *DB_FishPathArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[37] + mi := &file_protocol_server_pbdata_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2943,7 +3061,7 @@ func (x *DB_FishPathArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishPathArray.ProtoReflect.Descriptor instead. func (*DB_FishPathArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{37} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{39} } func (x *DB_FishPathArray) GetArr() []*DB_FishPath { @@ -2975,7 +3093,7 @@ type DB_FishRoom struct { func (x *DB_FishRoom) Reset() { *x = DB_FishRoom{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[38] + mi := &file_protocol_server_pbdata_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2988,7 +3106,7 @@ func (x *DB_FishRoom) String() string { func (*DB_FishRoom) ProtoMessage() {} func (x *DB_FishRoom) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[38] + mi := &file_protocol_server_pbdata_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3001,7 +3119,7 @@ func (x *DB_FishRoom) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishRoom.ProtoReflect.Descriptor instead. func (*DB_FishRoom) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{38} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{40} } func (x *DB_FishRoom) GetId() int32 { @@ -3099,7 +3217,7 @@ type DB_FishRoomArray struct { func (x *DB_FishRoomArray) Reset() { *x = DB_FishRoomArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[39] + mi := &file_protocol_server_pbdata_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3112,7 +3230,7 @@ func (x *DB_FishRoomArray) String() string { func (*DB_FishRoomArray) ProtoMessage() {} func (x *DB_FishRoomArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[39] + mi := &file_protocol_server_pbdata_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3125,7 +3243,7 @@ func (x *DB_FishRoomArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishRoomArray.ProtoReflect.Descriptor instead. func (*DB_FishRoomArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{39} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{41} } func (x *DB_FishRoomArray) GetArr() []*DB_FishRoom { @@ -3164,7 +3282,7 @@ type DB_FishSkill struct { func (x *DB_FishSkill) Reset() { *x = DB_FishSkill{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[40] + mi := &file_protocol_server_pbdata_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3177,7 +3295,7 @@ func (x *DB_FishSkill) String() string { func (*DB_FishSkill) ProtoMessage() {} func (x *DB_FishSkill) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[40] + mi := &file_protocol_server_pbdata_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3190,7 +3308,7 @@ func (x *DB_FishSkill) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishSkill.ProtoReflect.Descriptor instead. func (*DB_FishSkill) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{40} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{42} } func (x *DB_FishSkill) GetId() int32 { @@ -3337,7 +3455,7 @@ type DB_FishSkillArray struct { func (x *DB_FishSkillArray) Reset() { *x = DB_FishSkillArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[41] + mi := &file_protocol_server_pbdata_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3350,7 +3468,7 @@ func (x *DB_FishSkillArray) String() string { func (*DB_FishSkillArray) ProtoMessage() {} func (x *DB_FishSkillArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[41] + mi := &file_protocol_server_pbdata_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3363,7 +3481,7 @@ func (x *DB_FishSkillArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FishSkillArray.ProtoReflect.Descriptor instead. func (*DB_FishSkillArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{41} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{43} } func (x *DB_FishSkillArray) GetArr() []*DB_FishSkill { @@ -3388,7 +3506,7 @@ type DB_FortuneGod_Odds struct { func (x *DB_FortuneGod_Odds) Reset() { *x = DB_FortuneGod_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[42] + mi := &file_protocol_server_pbdata_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3401,7 +3519,7 @@ func (x *DB_FortuneGod_Odds) String() string { func (*DB_FortuneGod_Odds) ProtoMessage() {} func (x *DB_FortuneGod_Odds) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[42] + mi := &file_protocol_server_pbdata_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3414,7 +3532,7 @@ func (x *DB_FortuneGod_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_Odds.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_Odds) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{42} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{44} } func (x *DB_FortuneGod_Odds) GetId() int32 { @@ -3463,7 +3581,7 @@ type DB_FortuneGod_OddsArray struct { func (x *DB_FortuneGod_OddsArray) Reset() { *x = DB_FortuneGod_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[43] + mi := &file_protocol_server_pbdata_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3476,7 +3594,7 @@ func (x *DB_FortuneGod_OddsArray) String() string { func (*DB_FortuneGod_OddsArray) ProtoMessage() {} func (x *DB_FortuneGod_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[43] + mi := &file_protocol_server_pbdata_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3489,7 +3607,7 @@ func (x *DB_FortuneGod_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_OddsArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_OddsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{43} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{45} } func (x *DB_FortuneGod_OddsArray) GetArr() []*DB_FortuneGod_Odds { @@ -3513,7 +3631,7 @@ type DB_FortuneGod_TurnRate struct { func (x *DB_FortuneGod_TurnRate) Reset() { *x = DB_FortuneGod_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[44] + mi := &file_protocol_server_pbdata_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3526,7 +3644,7 @@ func (x *DB_FortuneGod_TurnRate) String() string { func (*DB_FortuneGod_TurnRate) ProtoMessage() {} func (x *DB_FortuneGod_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[44] + mi := &file_protocol_server_pbdata_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3539,7 +3657,7 @@ func (x *DB_FortuneGod_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_TurnRate.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_TurnRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{44} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{46} } func (x *DB_FortuneGod_TurnRate) GetId() int32 { @@ -3581,7 +3699,7 @@ type DB_FortuneGod_TurnRateArray struct { func (x *DB_FortuneGod_TurnRateArray) Reset() { *x = DB_FortuneGod_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[45] + mi := &file_protocol_server_pbdata_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3594,7 +3712,7 @@ func (x *DB_FortuneGod_TurnRateArray) String() string { func (*DB_FortuneGod_TurnRateArray) ProtoMessage() {} func (x *DB_FortuneGod_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[45] + mi := &file_protocol_server_pbdata_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3607,7 +3725,7 @@ func (x *DB_FortuneGod_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_TurnRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{45} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{47} } func (x *DB_FortuneGod_TurnRateArray) GetArr() []*DB_FortuneGod_TurnRate { @@ -3630,7 +3748,7 @@ type DB_FortuneGod_Weight struct { func (x *DB_FortuneGod_Weight) Reset() { *x = DB_FortuneGod_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[46] + mi := &file_protocol_server_pbdata_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3643,7 +3761,7 @@ func (x *DB_FortuneGod_Weight) String() string { func (*DB_FortuneGod_Weight) ProtoMessage() {} func (x *DB_FortuneGod_Weight) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[46] + mi := &file_protocol_server_pbdata_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3656,7 +3774,7 @@ func (x *DB_FortuneGod_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_Weight.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_Weight) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{46} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{48} } func (x *DB_FortuneGod_Weight) GetId() int32 { @@ -3691,7 +3809,7 @@ type DB_FortuneGod_WeightArray struct { func (x *DB_FortuneGod_WeightArray) Reset() { *x = DB_FortuneGod_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[47] + mi := &file_protocol_server_pbdata_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3704,7 +3822,7 @@ func (x *DB_FortuneGod_WeightArray) String() string { func (*DB_FortuneGod_WeightArray) ProtoMessage() {} func (x *DB_FortuneGod_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[47] + mi := &file_protocol_server_pbdata_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3717,7 +3835,7 @@ func (x *DB_FortuneGod_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_WeightArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{47} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{49} } func (x *DB_FortuneGod_WeightArray) GetArr() []*DB_FortuneGod_Weight { @@ -3742,7 +3860,7 @@ type DB_FortuneGod_WeightCondition struct { func (x *DB_FortuneGod_WeightCondition) Reset() { *x = DB_FortuneGod_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[48] + mi := &file_protocol_server_pbdata_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3755,7 +3873,7 @@ func (x *DB_FortuneGod_WeightCondition) String() string { func (*DB_FortuneGod_WeightCondition) ProtoMessage() {} func (x *DB_FortuneGod_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[48] + mi := &file_protocol_server_pbdata_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3768,7 +3886,7 @@ func (x *DB_FortuneGod_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_FortuneGod_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightCondition) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{48} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{50} } func (x *DB_FortuneGod_WeightCondition) GetId() int32 { @@ -3817,7 +3935,7 @@ type DB_FortuneGod_WeightConditionArray struct { func (x *DB_FortuneGod_WeightConditionArray) Reset() { *x = DB_FortuneGod_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[49] + mi := &file_protocol_server_pbdata_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3830,7 +3948,7 @@ func (x *DB_FortuneGod_WeightConditionArray) String() string { func (*DB_FortuneGod_WeightConditionArray) ProtoMessage() {} func (x *DB_FortuneGod_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[49] + mi := &file_protocol_server_pbdata_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3843,7 +3961,7 @@ func (x *DB_FortuneGod_WeightConditionArray) ProtoReflect() protoreflect.Message // Deprecated: Use DB_FortuneGod_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_FortuneGod_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{49} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{51} } func (x *DB_FortuneGod_WeightConditionArray) GetArr() []*DB_FortuneGod_WeightCondition { @@ -3876,7 +3994,7 @@ type DB_GamMatchLV struct { func (x *DB_GamMatchLV) Reset() { *x = DB_GamMatchLV{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[50] + mi := &file_protocol_server_pbdata_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3889,7 +4007,7 @@ func (x *DB_GamMatchLV) String() string { func (*DB_GamMatchLV) ProtoMessage() {} func (x *DB_GamMatchLV) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[50] + mi := &file_protocol_server_pbdata_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3902,7 +4020,7 @@ func (x *DB_GamMatchLV) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GamMatchLV.ProtoReflect.Descriptor instead. func (*DB_GamMatchLV) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{50} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{52} } func (x *DB_GamMatchLV) GetId() int32 { @@ -4007,7 +4125,7 @@ type DB_GamMatchLVArray struct { func (x *DB_GamMatchLVArray) Reset() { *x = DB_GamMatchLVArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[51] + mi := &file_protocol_server_pbdata_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4020,7 +4138,7 @@ func (x *DB_GamMatchLVArray) String() string { func (*DB_GamMatchLVArray) ProtoMessage() {} func (x *DB_GamMatchLVArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[51] + mi := &file_protocol_server_pbdata_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4033,7 +4151,7 @@ func (x *DB_GamMatchLVArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GamMatchLVArray.ProtoReflect.Descriptor instead. func (*DB_GamMatchLVArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{51} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{53} } func (x *DB_GamMatchLVArray) GetArr() []*DB_GamMatchLV { @@ -4057,7 +4175,7 @@ type DB_GameBankruptcy struct { func (x *DB_GameBankruptcy) Reset() { *x = DB_GameBankruptcy{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[52] + mi := &file_protocol_server_pbdata_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4070,7 +4188,7 @@ func (x *DB_GameBankruptcy) String() string { func (*DB_GameBankruptcy) ProtoMessage() {} func (x *DB_GameBankruptcy) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[52] + mi := &file_protocol_server_pbdata_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4083,7 +4201,7 @@ func (x *DB_GameBankruptcy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameBankruptcy.ProtoReflect.Descriptor instead. func (*DB_GameBankruptcy) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{52} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{54} } func (x *DB_GameBankruptcy) GetId() int32 { @@ -4125,7 +4243,7 @@ type DB_GameBankruptcyArray struct { func (x *DB_GameBankruptcyArray) Reset() { *x = DB_GameBankruptcyArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[53] + mi := &file_protocol_server_pbdata_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4138,7 +4256,7 @@ func (x *DB_GameBankruptcyArray) String() string { func (*DB_GameBankruptcyArray) ProtoMessage() {} func (x *DB_GameBankruptcyArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[53] + mi := &file_protocol_server_pbdata_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4151,7 +4269,7 @@ func (x *DB_GameBankruptcyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameBankruptcyArray.ProtoReflect.Descriptor instead. func (*DB_GameBankruptcyArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{53} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{55} } func (x *DB_GameBankruptcyArray) GetArr() []*DB_GameBankruptcy { @@ -4183,7 +4301,7 @@ type DB_GameCoinPool struct { func (x *DB_GameCoinPool) Reset() { *x = DB_GameCoinPool{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[54] + mi := &file_protocol_server_pbdata_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4196,7 +4314,7 @@ func (x *DB_GameCoinPool) String() string { func (*DB_GameCoinPool) ProtoMessage() {} func (x *DB_GameCoinPool) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[54] + mi := &file_protocol_server_pbdata_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4209,7 +4327,7 @@ func (x *DB_GameCoinPool) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameCoinPool.ProtoReflect.Descriptor instead. func (*DB_GameCoinPool) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{54} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{56} } func (x *DB_GameCoinPool) GetId() int32 { @@ -4307,7 +4425,7 @@ type DB_GameCoinPoolArray struct { func (x *DB_GameCoinPoolArray) Reset() { *x = DB_GameCoinPoolArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[55] + mi := &file_protocol_server_pbdata_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4320,7 +4438,7 @@ func (x *DB_GameCoinPoolArray) String() string { func (*DB_GameCoinPoolArray) ProtoMessage() {} func (x *DB_GameCoinPoolArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[55] + mi := &file_protocol_server_pbdata_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4333,7 +4451,7 @@ func (x *DB_GameCoinPoolArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameCoinPoolArray.ProtoReflect.Descriptor instead. func (*DB_GameCoinPoolArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{55} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{57} } func (x *DB_GameCoinPoolArray) GetArr() []*DB_GameCoinPool { @@ -4427,7 +4545,7 @@ type DB_GameFree struct { func (x *DB_GameFree) Reset() { *x = DB_GameFree{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[56] + mi := &file_protocol_server_pbdata_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4440,7 +4558,7 @@ func (x *DB_GameFree) String() string { func (*DB_GameFree) ProtoMessage() {} func (x *DB_GameFree) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[56] + mi := &file_protocol_server_pbdata_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4453,7 +4571,7 @@ func (x *DB_GameFree) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameFree.ProtoReflect.Descriptor instead. func (*DB_GameFree) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{56} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{58} } func (x *DB_GameFree) GetId() int32 { @@ -4985,7 +5103,7 @@ type DB_GameFreeArray struct { func (x *DB_GameFreeArray) Reset() { *x = DB_GameFreeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[57] + mi := &file_protocol_server_pbdata_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4998,7 +5116,7 @@ func (x *DB_GameFreeArray) String() string { func (*DB_GameFreeArray) ProtoMessage() {} func (x *DB_GameFreeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[57] + mi := &file_protocol_server_pbdata_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5011,7 +5129,7 @@ func (x *DB_GameFreeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameFreeArray.ProtoReflect.Descriptor instead. func (*DB_GameFreeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{57} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{59} } func (x *DB_GameFreeArray) GetArr() []*DB_GameFree { @@ -5051,7 +5169,7 @@ type DB_GameItem struct { func (x *DB_GameItem) Reset() { *x = DB_GameItem{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[58] + mi := &file_protocol_server_pbdata_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5064,7 +5182,7 @@ func (x *DB_GameItem) String() string { func (*DB_GameItem) ProtoMessage() {} func (x *DB_GameItem) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[58] + mi := &file_protocol_server_pbdata_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5077,7 +5195,7 @@ func (x *DB_GameItem) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameItem.ProtoReflect.Descriptor instead. func (*DB_GameItem) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{58} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{60} } func (x *DB_GameItem) GetId() int32 { @@ -5231,7 +5349,7 @@ type DB_GameItemArray struct { func (x *DB_GameItemArray) Reset() { *x = DB_GameItemArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[59] + mi := &file_protocol_server_pbdata_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5244,7 +5362,7 @@ func (x *DB_GameItemArray) String() string { func (*DB_GameItemArray) ProtoMessage() {} func (x *DB_GameItemArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[59] + mi := &file_protocol_server_pbdata_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5257,7 +5375,7 @@ func (x *DB_GameItemArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameItemArray.ProtoReflect.Descriptor instead. func (*DB_GameItemArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{59} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{61} } func (x *DB_GameItemArray) GetArr() []*DB_GameItem { @@ -5285,7 +5403,7 @@ type DB_GameMatchLevel struct { func (x *DB_GameMatchLevel) Reset() { *x = DB_GameMatchLevel{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[60] + mi := &file_protocol_server_pbdata_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5298,7 +5416,7 @@ func (x *DB_GameMatchLevel) String() string { func (*DB_GameMatchLevel) ProtoMessage() {} func (x *DB_GameMatchLevel) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[60] + mi := &file_protocol_server_pbdata_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5311,7 +5429,7 @@ func (x *DB_GameMatchLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameMatchLevel.ProtoReflect.Descriptor instead. func (*DB_GameMatchLevel) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{60} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{62} } func (x *DB_GameMatchLevel) GetId() int32 { @@ -5381,7 +5499,7 @@ type DB_GameMatchLevelArray struct { func (x *DB_GameMatchLevelArray) Reset() { *x = DB_GameMatchLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[61] + mi := &file_protocol_server_pbdata_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5394,7 +5512,7 @@ func (x *DB_GameMatchLevelArray) String() string { func (*DB_GameMatchLevelArray) ProtoMessage() {} func (x *DB_GameMatchLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[61] + mi := &file_protocol_server_pbdata_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5407,7 +5525,7 @@ func (x *DB_GameMatchLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameMatchLevelArray.ProtoReflect.Descriptor instead. func (*DB_GameMatchLevelArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{61} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{63} } func (x *DB_GameMatchLevelArray) GetArr() []*DB_GameMatchLevel { @@ -5434,7 +5552,7 @@ type DB_GameRule struct { func (x *DB_GameRule) Reset() { *x = DB_GameRule{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[62] + mi := &file_protocol_server_pbdata_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5447,7 +5565,7 @@ func (x *DB_GameRule) String() string { func (*DB_GameRule) ProtoMessage() {} func (x *DB_GameRule) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[62] + mi := &file_protocol_server_pbdata_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5460,7 +5578,7 @@ func (x *DB_GameRule) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameRule.ProtoReflect.Descriptor instead. func (*DB_GameRule) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{62} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{64} } func (x *DB_GameRule) GetId() int32 { @@ -5523,7 +5641,7 @@ type DB_GameRuleArray struct { func (x *DB_GameRuleArray) Reset() { *x = DB_GameRuleArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[63] + mi := &file_protocol_server_pbdata_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5536,7 +5654,7 @@ func (x *DB_GameRuleArray) String() string { func (*DB_GameRuleArray) ProtoMessage() {} func (x *DB_GameRuleArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[63] + mi := &file_protocol_server_pbdata_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5549,7 +5667,7 @@ func (x *DB_GameRuleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameRuleArray.ProtoReflect.Descriptor instead. func (*DB_GameRuleArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{63} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{65} } func (x *DB_GameRuleArray) GetArr() []*DB_GameRule { @@ -5573,7 +5691,7 @@ type DB_GameSubsidy struct { func (x *DB_GameSubsidy) Reset() { *x = DB_GameSubsidy{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[64] + mi := &file_protocol_server_pbdata_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5586,7 +5704,7 @@ func (x *DB_GameSubsidy) String() string { func (*DB_GameSubsidy) ProtoMessage() {} func (x *DB_GameSubsidy) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[64] + mi := &file_protocol_server_pbdata_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5599,7 +5717,7 @@ func (x *DB_GameSubsidy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameSubsidy.ProtoReflect.Descriptor instead. func (*DB_GameSubsidy) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{64} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{66} } func (x *DB_GameSubsidy) GetId() int32 { @@ -5641,7 +5759,7 @@ type DB_GameSubsidyArray struct { func (x *DB_GameSubsidyArray) Reset() { *x = DB_GameSubsidyArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[65] + mi := &file_protocol_server_pbdata_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5654,7 +5772,7 @@ func (x *DB_GameSubsidyArray) String() string { func (*DB_GameSubsidyArray) ProtoMessage() {} func (x *DB_GameSubsidyArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[65] + mi := &file_protocol_server_pbdata_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5667,7 +5785,7 @@ func (x *DB_GameSubsidyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GameSubsidyArray.ProtoReflect.Descriptor instead. func (*DB_GameSubsidyArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{65} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{67} } func (x *DB_GameSubsidyArray) GetArr() []*DB_GameSubsidy { @@ -5693,7 +5811,7 @@ type DB_Game_Drop struct { func (x *DB_Game_Drop) Reset() { *x = DB_Game_Drop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[66] + mi := &file_protocol_server_pbdata_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5706,7 +5824,7 @@ func (x *DB_Game_Drop) String() string { func (*DB_Game_Drop) ProtoMessage() {} func (x *DB_Game_Drop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[66] + mi := &file_protocol_server_pbdata_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5719,7 +5837,7 @@ func (x *DB_Game_Drop) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Drop.ProtoReflect.Descriptor instead. func (*DB_Game_Drop) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{66} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{68} } func (x *DB_Game_Drop) GetId() int32 { @@ -5775,7 +5893,7 @@ type DB_Game_DropArray struct { func (x *DB_Game_DropArray) Reset() { *x = DB_Game_DropArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[67] + mi := &file_protocol_server_pbdata_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5788,7 +5906,7 @@ func (x *DB_Game_DropArray) String() string { func (*DB_Game_DropArray) ProtoMessage() {} func (x *DB_Game_DropArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[67] + mi := &file_protocol_server_pbdata_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5801,7 +5919,7 @@ func (x *DB_Game_DropArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_DropArray.ProtoReflect.Descriptor instead. func (*DB_Game_DropArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{67} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{69} } func (x *DB_Game_DropArray) GetArr() []*DB_Game_Drop { @@ -5827,7 +5945,7 @@ type DB_Game_Introduction struct { func (x *DB_Game_Introduction) Reset() { *x = DB_Game_Introduction{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[68] + mi := &file_protocol_server_pbdata_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5840,7 +5958,7 @@ func (x *DB_Game_Introduction) String() string { func (*DB_Game_Introduction) ProtoMessage() {} func (x *DB_Game_Introduction) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[68] + mi := &file_protocol_server_pbdata_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5853,7 +5971,7 @@ func (x *DB_Game_Introduction) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Introduction.ProtoReflect.Descriptor instead. func (*DB_Game_Introduction) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{68} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{70} } func (x *DB_Game_Introduction) GetId() int32 { @@ -5909,7 +6027,7 @@ type DB_Game_IntroductionArray struct { func (x *DB_Game_IntroductionArray) Reset() { *x = DB_Game_IntroductionArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[69] + mi := &file_protocol_server_pbdata_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5922,7 +6040,7 @@ func (x *DB_Game_IntroductionArray) String() string { func (*DB_Game_IntroductionArray) ProtoMessage() {} func (x *DB_Game_IntroductionArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[69] + mi := &file_protocol_server_pbdata_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5935,7 +6053,7 @@ func (x *DB_Game_IntroductionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_IntroductionArray.ProtoReflect.Descriptor instead. func (*DB_Game_IntroductionArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{69} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{71} } func (x *DB_Game_IntroductionArray) GetArr() []*DB_Game_Introduction { @@ -5965,7 +6083,7 @@ type DB_Game_Pet struct { func (x *DB_Game_Pet) Reset() { *x = DB_Game_Pet{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[70] + mi := &file_protocol_server_pbdata_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5978,7 +6096,7 @@ func (x *DB_Game_Pet) String() string { func (*DB_Game_Pet) ProtoMessage() {} func (x *DB_Game_Pet) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[70] + mi := &file_protocol_server_pbdata_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5991,7 +6109,7 @@ func (x *DB_Game_Pet) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Pet.ProtoReflect.Descriptor instead. func (*DB_Game_Pet) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{70} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{72} } func (x *DB_Game_Pet) GetId() int32 { @@ -6075,7 +6193,7 @@ type DB_Game_PetArray struct { func (x *DB_Game_PetArray) Reset() { *x = DB_Game_PetArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[71] + mi := &file_protocol_server_pbdata_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6088,7 +6206,7 @@ func (x *DB_Game_PetArray) String() string { func (*DB_Game_PetArray) ProtoMessage() {} func (x *DB_Game_PetArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[71] + mi := &file_protocol_server_pbdata_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6101,7 +6219,7 @@ func (x *DB_Game_PetArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_PetArray.ProtoReflect.Descriptor instead. func (*DB_Game_PetArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{71} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{73} } func (x *DB_Game_PetArray) GetArr() []*DB_Game_Pet { @@ -6131,7 +6249,7 @@ type DB_Game_Role struct { func (x *DB_Game_Role) Reset() { *x = DB_Game_Role{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[72] + mi := &file_protocol_server_pbdata_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6144,7 +6262,7 @@ func (x *DB_Game_Role) String() string { func (*DB_Game_Role) ProtoMessage() {} func (x *DB_Game_Role) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[72] + mi := &file_protocol_server_pbdata_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6157,7 +6275,7 @@ func (x *DB_Game_Role) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_Role.ProtoReflect.Descriptor instead. func (*DB_Game_Role) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{72} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{74} } func (x *DB_Game_Role) GetId() int32 { @@ -6241,7 +6359,7 @@ type DB_Game_RoleArray struct { func (x *DB_Game_RoleArray) Reset() { *x = DB_Game_RoleArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[73] + mi := &file_protocol_server_pbdata_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6254,7 +6372,7 @@ func (x *DB_Game_RoleArray) String() string { func (*DB_Game_RoleArray) ProtoMessage() {} func (x *DB_Game_RoleArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[73] + mi := &file_protocol_server_pbdata_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6267,7 +6385,7 @@ func (x *DB_Game_RoleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Game_RoleArray.ProtoReflect.Descriptor instead. func (*DB_Game_RoleArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{73} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{75} } func (x *DB_Game_RoleArray) GetArr() []*DB_Game_Role { @@ -6290,7 +6408,7 @@ type DB_GiftBox struct { func (x *DB_GiftBox) Reset() { *x = DB_GiftBox{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[74] + mi := &file_protocol_server_pbdata_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6303,7 +6421,7 @@ func (x *DB_GiftBox) String() string { func (*DB_GiftBox) ProtoMessage() {} func (x *DB_GiftBox) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[74] + mi := &file_protocol_server_pbdata_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6316,7 +6434,7 @@ func (x *DB_GiftBox) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftBox.ProtoReflect.Descriptor instead. func (*DB_GiftBox) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{74} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{76} } func (x *DB_GiftBox) GetId() int32 { @@ -6351,7 +6469,7 @@ type DB_GiftBoxArray struct { func (x *DB_GiftBoxArray) Reset() { *x = DB_GiftBoxArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[75] + mi := &file_protocol_server_pbdata_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6364,7 +6482,7 @@ func (x *DB_GiftBoxArray) String() string { func (*DB_GiftBoxArray) ProtoMessage() {} func (x *DB_GiftBoxArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[75] + mi := &file_protocol_server_pbdata_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6377,7 +6495,7 @@ func (x *DB_GiftBoxArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftBoxArray.ProtoReflect.Descriptor instead. func (*DB_GiftBoxArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{75} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{77} } func (x *DB_GiftBoxArray) GetArr() []*DB_GiftBox { @@ -6404,7 +6522,7 @@ type DB_GiftCard struct { func (x *DB_GiftCard) Reset() { *x = DB_GiftCard{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[76] + mi := &file_protocol_server_pbdata_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6417,7 +6535,7 @@ func (x *DB_GiftCard) String() string { func (*DB_GiftCard) ProtoMessage() {} func (x *DB_GiftCard) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[76] + mi := &file_protocol_server_pbdata_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6430,7 +6548,7 @@ func (x *DB_GiftCard) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftCard.ProtoReflect.Descriptor instead. func (*DB_GiftCard) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{76} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{78} } func (x *DB_GiftCard) GetId() int32 { @@ -6493,7 +6611,7 @@ type DB_GiftCardArray struct { func (x *DB_GiftCardArray) Reset() { *x = DB_GiftCardArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[77] + mi := &file_protocol_server_pbdata_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6506,7 +6624,7 @@ func (x *DB_GiftCardArray) String() string { func (*DB_GiftCardArray) ProtoMessage() {} func (x *DB_GiftCardArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[77] + mi := &file_protocol_server_pbdata_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6519,7 +6637,7 @@ func (x *DB_GiftCardArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_GiftCardArray.ProtoReflect.Descriptor instead. func (*DB_GiftCardArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{77} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{79} } func (x *DB_GiftCardArray) GetArr() []*DB_GiftCard { @@ -6543,7 +6661,7 @@ type DB_IceAgeElementRate struct { func (x *DB_IceAgeElementRate) Reset() { *x = DB_IceAgeElementRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[78] + mi := &file_protocol_server_pbdata_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6556,7 +6674,7 @@ func (x *DB_IceAgeElementRate) String() string { func (*DB_IceAgeElementRate) ProtoMessage() {} func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[78] + mi := &file_protocol_server_pbdata_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6569,7 +6687,7 @@ func (x *DB_IceAgeElementRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRate.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{78} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{80} } func (x *DB_IceAgeElementRate) GetId() int32 { @@ -6611,7 +6729,7 @@ type DB_IceAgeElementRateArray struct { func (x *DB_IceAgeElementRateArray) Reset() { *x = DB_IceAgeElementRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[79] + mi := &file_protocol_server_pbdata_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6624,7 +6742,7 @@ func (x *DB_IceAgeElementRateArray) String() string { func (*DB_IceAgeElementRateArray) ProtoMessage() {} func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[79] + mi := &file_protocol_server_pbdata_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6637,7 +6755,7 @@ func (x *DB_IceAgeElementRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_IceAgeElementRateArray.ProtoReflect.Descriptor instead. func (*DB_IceAgeElementRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{79} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{81} } func (x *DB_IceAgeElementRateArray) GetArr() []*DB_IceAgeElementRate { @@ -6662,7 +6780,7 @@ type DB_Legend_Odds struct { func (x *DB_Legend_Odds) Reset() { *x = DB_Legend_Odds{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[80] + mi := &file_protocol_server_pbdata_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6675,7 +6793,7 @@ func (x *DB_Legend_Odds) String() string { func (*DB_Legend_Odds) ProtoMessage() {} func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[80] + mi := &file_protocol_server_pbdata_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6688,7 +6806,7 @@ func (x *DB_Legend_Odds) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Odds.ProtoReflect.Descriptor instead. func (*DB_Legend_Odds) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{80} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{82} } func (x *DB_Legend_Odds) GetId() int32 { @@ -6737,7 +6855,7 @@ type DB_Legend_OddsArray struct { func (x *DB_Legend_OddsArray) Reset() { *x = DB_Legend_OddsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[81] + mi := &file_protocol_server_pbdata_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6750,7 +6868,7 @@ func (x *DB_Legend_OddsArray) String() string { func (*DB_Legend_OddsArray) ProtoMessage() {} func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[81] + mi := &file_protocol_server_pbdata_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6763,7 +6881,7 @@ func (x *DB_Legend_OddsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_OddsArray.ProtoReflect.Descriptor instead. func (*DB_Legend_OddsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{81} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{83} } func (x *DB_Legend_OddsArray) GetArr() []*DB_Legend_Odds { @@ -6787,7 +6905,7 @@ type DB_Legend_TurnRate struct { func (x *DB_Legend_TurnRate) Reset() { *x = DB_Legend_TurnRate{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[82] + mi := &file_protocol_server_pbdata_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6800,7 +6918,7 @@ func (x *DB_Legend_TurnRate) String() string { func (*DB_Legend_TurnRate) ProtoMessage() {} func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[82] + mi := &file_protocol_server_pbdata_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6813,7 +6931,7 @@ func (x *DB_Legend_TurnRate) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRate.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRate) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{82} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{84} } func (x *DB_Legend_TurnRate) GetId() int32 { @@ -6855,7 +6973,7 @@ type DB_Legend_TurnRateArray struct { func (x *DB_Legend_TurnRateArray) Reset() { *x = DB_Legend_TurnRateArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[83] + mi := &file_protocol_server_pbdata_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6868,7 +6986,7 @@ func (x *DB_Legend_TurnRateArray) String() string { func (*DB_Legend_TurnRateArray) ProtoMessage() {} func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[83] + mi := &file_protocol_server_pbdata_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6881,7 +6999,7 @@ func (x *DB_Legend_TurnRateArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_TurnRateArray.ProtoReflect.Descriptor instead. func (*DB_Legend_TurnRateArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{83} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{85} } func (x *DB_Legend_TurnRateArray) GetArr() []*DB_Legend_TurnRate { @@ -6904,7 +7022,7 @@ type DB_Legend_Weight struct { func (x *DB_Legend_Weight) Reset() { *x = DB_Legend_Weight{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[84] + mi := &file_protocol_server_pbdata_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6917,7 +7035,7 @@ func (x *DB_Legend_Weight) String() string { func (*DB_Legend_Weight) ProtoMessage() {} func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[84] + mi := &file_protocol_server_pbdata_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6930,7 +7048,7 @@ func (x *DB_Legend_Weight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_Weight.ProtoReflect.Descriptor instead. func (*DB_Legend_Weight) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{84} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{86} } func (x *DB_Legend_Weight) GetId() int32 { @@ -6965,7 +7083,7 @@ type DB_Legend_WeightArray struct { func (x *DB_Legend_WeightArray) Reset() { *x = DB_Legend_WeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[85] + mi := &file_protocol_server_pbdata_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6978,7 +7096,7 @@ func (x *DB_Legend_WeightArray) String() string { func (*DB_Legend_WeightArray) ProtoMessage() {} func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[85] + mi := &file_protocol_server_pbdata_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6991,7 +7109,7 @@ func (x *DB_Legend_WeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{85} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{87} } func (x *DB_Legend_WeightArray) GetArr() []*DB_Legend_Weight { @@ -7016,7 +7134,7 @@ type DB_Legend_WeightCondition struct { func (x *DB_Legend_WeightCondition) Reset() { *x = DB_Legend_WeightCondition{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[86] + mi := &file_protocol_server_pbdata_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7029,7 +7147,7 @@ func (x *DB_Legend_WeightCondition) String() string { func (*DB_Legend_WeightCondition) ProtoMessage() {} func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[86] + mi := &file_protocol_server_pbdata_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7042,7 +7160,7 @@ func (x *DB_Legend_WeightCondition) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightCondition.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightCondition) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{86} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{88} } func (x *DB_Legend_WeightCondition) GetId() int32 { @@ -7091,7 +7209,7 @@ type DB_Legend_WeightConditionArray struct { func (x *DB_Legend_WeightConditionArray) Reset() { *x = DB_Legend_WeightConditionArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[87] + mi := &file_protocol_server_pbdata_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7104,7 +7222,7 @@ func (x *DB_Legend_WeightConditionArray) String() string { func (*DB_Legend_WeightConditionArray) ProtoMessage() {} func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[87] + mi := &file_protocol_server_pbdata_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7117,7 +7235,7 @@ func (x *DB_Legend_WeightConditionArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Legend_WeightConditionArray.ProtoReflect.Descriptor instead. func (*DB_Legend_WeightConditionArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{87} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{89} } func (x *DB_Legend_WeightConditionArray) GetArr() []*DB_Legend_WeightCondition { @@ -7139,7 +7257,7 @@ type DB_MatchRank struct { func (x *DB_MatchRank) Reset() { *x = DB_MatchRank{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[88] + mi := &file_protocol_server_pbdata_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7152,7 +7270,7 @@ func (x *DB_MatchRank) String() string { func (*DB_MatchRank) ProtoMessage() {} func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[88] + mi := &file_protocol_server_pbdata_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7165,7 +7283,7 @@ func (x *DB_MatchRank) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRank.ProtoReflect.Descriptor instead. func (*DB_MatchRank) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{88} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{90} } func (x *DB_MatchRank) GetId() int32 { @@ -7193,7 +7311,7 @@ type DB_MatchRankArray struct { func (x *DB_MatchRankArray) Reset() { *x = DB_MatchRankArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[89] + mi := &file_protocol_server_pbdata_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7206,7 +7324,7 @@ func (x *DB_MatchRankArray) String() string { func (*DB_MatchRankArray) ProtoMessage() {} func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[89] + mi := &file_protocol_server_pbdata_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7219,7 +7337,7 @@ func (x *DB_MatchRankArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_MatchRankArray.ProtoReflect.Descriptor instead. func (*DB_MatchRankArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{89} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{91} } func (x *DB_MatchRankArray) GetArr() []*DB_MatchRank { @@ -7241,7 +7359,7 @@ type DB_Name struct { func (x *DB_Name) Reset() { *x = DB_Name{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[90] + mi := &file_protocol_server_pbdata_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7254,7 +7372,7 @@ func (x *DB_Name) String() string { func (*DB_Name) ProtoMessage() {} func (x *DB_Name) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[90] + mi := &file_protocol_server_pbdata_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7267,7 +7385,7 @@ func (x *DB_Name) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Name.ProtoReflect.Descriptor instead. func (*DB_Name) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{90} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{92} } func (x *DB_Name) GetId() int32 { @@ -7295,7 +7413,7 @@ type DB_NameArray struct { func (x *DB_NameArray) Reset() { *x = DB_NameArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[91] + mi := &file_protocol_server_pbdata_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7308,7 +7426,7 @@ func (x *DB_NameArray) String() string { func (*DB_NameArray) ProtoMessage() {} func (x *DB_NameArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[91] + mi := &file_protocol_server_pbdata_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7321,7 +7439,7 @@ func (x *DB_NameArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameArray.ProtoReflect.Descriptor instead. func (*DB_NameArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{91} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{93} } func (x *DB_NameArray) GetArr() []*DB_Name { @@ -7343,7 +7461,7 @@ type DB_NameBoy struct { func (x *DB_NameBoy) Reset() { *x = DB_NameBoy{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[92] + mi := &file_protocol_server_pbdata_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7356,7 +7474,7 @@ func (x *DB_NameBoy) String() string { func (*DB_NameBoy) ProtoMessage() {} func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[92] + mi := &file_protocol_server_pbdata_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7369,7 +7487,7 @@ func (x *DB_NameBoy) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoy.ProtoReflect.Descriptor instead. func (*DB_NameBoy) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{92} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{94} } func (x *DB_NameBoy) GetId() int32 { @@ -7397,7 +7515,7 @@ type DB_NameBoyArray struct { func (x *DB_NameBoyArray) Reset() { *x = DB_NameBoyArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[93] + mi := &file_protocol_server_pbdata_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7410,7 +7528,7 @@ func (x *DB_NameBoyArray) String() string { func (*DB_NameBoyArray) ProtoMessage() {} func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[93] + mi := &file_protocol_server_pbdata_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7423,7 +7541,7 @@ func (x *DB_NameBoyArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameBoyArray.ProtoReflect.Descriptor instead. func (*DB_NameBoyArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{93} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{95} } func (x *DB_NameBoyArray) GetArr() []*DB_NameBoy { @@ -7445,7 +7563,7 @@ type DB_NameGirl struct { func (x *DB_NameGirl) Reset() { *x = DB_NameGirl{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[94] + mi := &file_protocol_server_pbdata_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7458,7 +7576,7 @@ func (x *DB_NameGirl) String() string { func (*DB_NameGirl) ProtoMessage() {} func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[94] + mi := &file_protocol_server_pbdata_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7471,7 +7589,7 @@ func (x *DB_NameGirl) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirl.ProtoReflect.Descriptor instead. func (*DB_NameGirl) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{94} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{96} } func (x *DB_NameGirl) GetId() int32 { @@ -7499,7 +7617,7 @@ type DB_NameGirlArray struct { func (x *DB_NameGirlArray) Reset() { *x = DB_NameGirlArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[95] + mi := &file_protocol_server_pbdata_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7512,7 +7630,7 @@ func (x *DB_NameGirlArray) String() string { func (*DB_NameGirlArray) ProtoMessage() {} func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[95] + mi := &file_protocol_server_pbdata_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7525,7 +7643,7 @@ func (x *DB_NameGirlArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NameGirlArray.ProtoReflect.Descriptor instead. func (*DB_NameGirlArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{95} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{97} } func (x *DB_NameGirlArray) GetArr() []*DB_NameGirl { @@ -7555,7 +7673,7 @@ type DB_NewPlayer struct { func (x *DB_NewPlayer) Reset() { *x = DB_NewPlayer{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[96] + mi := &file_protocol_server_pbdata_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7568,7 +7686,7 @@ func (x *DB_NewPlayer) String() string { func (*DB_NewPlayer) ProtoMessage() {} func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[96] + mi := &file_protocol_server_pbdata_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7581,7 +7699,7 @@ func (x *DB_NewPlayer) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayer.ProtoReflect.Descriptor instead. func (*DB_NewPlayer) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{96} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{98} } func (x *DB_NewPlayer) GetId() int32 { @@ -7665,7 +7783,7 @@ type DB_NewPlayerArray struct { func (x *DB_NewPlayerArray) Reset() { *x = DB_NewPlayerArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[97] + mi := &file_protocol_server_pbdata_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7678,7 +7796,7 @@ func (x *DB_NewPlayerArray) String() string { func (*DB_NewPlayerArray) ProtoMessage() {} func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[97] + mi := &file_protocol_server_pbdata_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7691,7 +7809,7 @@ func (x *DB_NewPlayerArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_NewPlayerArray.ProtoReflect.Descriptor instead. func (*DB_NewPlayerArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{97} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{99} } func (x *DB_NewPlayerArray) GetArr() []*DB_NewPlayer { @@ -7701,6 +7819,124 @@ func (x *DB_NewPlayerArray) GetArr() []*DB_NewPlayer { return nil } +type DB_NewYearActivity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + PorpName string `protobuf:"bytes,2,opt,name=PorpName,proto3" json:"PorpName,omitempty"` + PropValue string `protobuf:"bytes,3,opt,name=PropValue,proto3" json:"PropValue,omitempty"` + PropDec string `protobuf:"bytes,4,opt,name=PropDec,proto3" json:"PropDec,omitempty"` +} + +func (x *DB_NewYearActivity) Reset() { + *x = DB_NewYearActivity{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_server_pbdata_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_NewYearActivity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_NewYearActivity) ProtoMessage() {} + +func (x *DB_NewYearActivity) ProtoReflect() protoreflect.Message { + mi := &file_protocol_server_pbdata_proto_msgTypes[100] + 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 DB_NewYearActivity.ProtoReflect.Descriptor instead. +func (*DB_NewYearActivity) Descriptor() ([]byte, []int) { + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{100} +} + +func (x *DB_NewYearActivity) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *DB_NewYearActivity) GetPorpName() string { + if x != nil { + return x.PorpName + } + return "" +} + +func (x *DB_NewYearActivity) GetPropValue() string { + if x != nil { + return x.PropValue + } + return "" +} + +func (x *DB_NewYearActivity) GetPropDec() string { + if x != nil { + return x.PropDec + } + return "" +} + +type DB_NewYearActivityArray struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Arr []*DB_NewYearActivity `protobuf:"bytes,1,rep,name=Arr,proto3" json:"Arr,omitempty"` +} + +func (x *DB_NewYearActivityArray) Reset() { + *x = DB_NewYearActivityArray{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_server_pbdata_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DB_NewYearActivityArray) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DB_NewYearActivityArray) ProtoMessage() {} + +func (x *DB_NewYearActivityArray) ProtoReflect() protoreflect.Message { + mi := &file_protocol_server_pbdata_proto_msgTypes[101] + 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 DB_NewYearActivityArray.ProtoReflect.Descriptor instead. +func (*DB_NewYearActivityArray) Descriptor() ([]byte, []int) { + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{101} +} + +func (x *DB_NewYearActivityArray) GetArr() []*DB_NewYearActivity { + if x != nil { + return x.Arr + } + return nil +} + type DB_PassShow struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7715,7 +7951,7 @@ type DB_PassShow struct { func (x *DB_PassShow) Reset() { *x = DB_PassShow{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[98] + mi := &file_protocol_server_pbdata_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7728,7 +7964,7 @@ func (x *DB_PassShow) String() string { func (*DB_PassShow) ProtoMessage() {} func (x *DB_PassShow) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[98] + mi := &file_protocol_server_pbdata_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7741,7 +7977,7 @@ func (x *DB_PassShow) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PassShow.ProtoReflect.Descriptor instead. func (*DB_PassShow) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{98} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{102} } func (x *DB_PassShow) GetId() int32 { @@ -7783,7 +8019,7 @@ type DB_PassShowArray struct { func (x *DB_PassShowArray) Reset() { *x = DB_PassShowArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[99] + mi := &file_protocol_server_pbdata_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7796,7 +8032,7 @@ func (x *DB_PassShowArray) String() string { func (*DB_PassShowArray) ProtoMessage() {} func (x *DB_PassShowArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[99] + mi := &file_protocol_server_pbdata_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7809,7 +8045,7 @@ func (x *DB_PassShowArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PassShowArray.ProtoReflect.Descriptor instead. func (*DB_PassShowArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{99} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{103} } func (x *DB_PassShowArray) GetArr() []*DB_PassShow { @@ -7838,7 +8074,7 @@ type DB_PetSkill struct { func (x *DB_PetSkill) Reset() { *x = DB_PetSkill{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[100] + mi := &file_protocol_server_pbdata_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7851,7 +8087,7 @@ func (x *DB_PetSkill) String() string { func (*DB_PetSkill) ProtoMessage() {} func (x *DB_PetSkill) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[100] + mi := &file_protocol_server_pbdata_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7864,7 +8100,7 @@ func (x *DB_PetSkill) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PetSkill.ProtoReflect.Descriptor instead. func (*DB_PetSkill) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{100} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{104} } func (x *DB_PetSkill) GetId() int32 { @@ -7941,7 +8177,7 @@ type DB_PetSkillArray struct { func (x *DB_PetSkillArray) Reset() { *x = DB_PetSkillArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[101] + mi := &file_protocol_server_pbdata_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7954,7 +8190,7 @@ func (x *DB_PetSkillArray) String() string { func (*DB_PetSkillArray) ProtoMessage() {} func (x *DB_PetSkillArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[101] + mi := &file_protocol_server_pbdata_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7967,7 +8203,7 @@ func (x *DB_PetSkillArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PetSkillArray.ProtoReflect.Descriptor instead. func (*DB_PetSkillArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{101} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{105} } func (x *DB_PetSkillArray) GetArr() []*DB_PetSkill { @@ -7999,7 +8235,7 @@ type DB_PhoneLottery struct { func (x *DB_PhoneLottery) Reset() { *x = DB_PhoneLottery{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[102] + mi := &file_protocol_server_pbdata_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8012,7 +8248,7 @@ func (x *DB_PhoneLottery) String() string { func (*DB_PhoneLottery) ProtoMessage() {} func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[102] + mi := &file_protocol_server_pbdata_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8025,7 +8261,7 @@ func (x *DB_PhoneLottery) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLottery.ProtoReflect.Descriptor instead. func (*DB_PhoneLottery) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{102} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{106} } func (x *DB_PhoneLottery) GetId() int32 { @@ -8123,7 +8359,7 @@ type DB_PhoneLotteryArray struct { func (x *DB_PhoneLotteryArray) Reset() { *x = DB_PhoneLotteryArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[103] + mi := &file_protocol_server_pbdata_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8136,7 +8372,7 @@ func (x *DB_PhoneLotteryArray) String() string { func (*DB_PhoneLotteryArray) ProtoMessage() {} func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[103] + mi := &file_protocol_server_pbdata_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8149,7 +8385,7 @@ func (x *DB_PhoneLotteryArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PhoneLotteryArray.ProtoReflect.Descriptor instead. func (*DB_PhoneLotteryArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{103} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{107} } func (x *DB_PhoneLotteryArray) GetArr() []*DB_PhoneLottery { @@ -8164,22 +8400,24 @@ type DB_PigBank_Diamond struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` - BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` - BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` - CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` - MaxGold int32 `protobuf:"varint,5,opt,name=MaxGold,proto3" json:"MaxGold,omitempty"` - MaxDiamond int32 `protobuf:"varint,6,opt,name=MaxDiamond,proto3" json:"MaxDiamond,omitempty"` - DiamondId int32 `protobuf:"varint,7,opt,name=DiamondId,proto3" json:"DiamondId,omitempty"` - CoinPrice int32 `protobuf:"varint,8,opt,name=CoinPrice,proto3" json:"CoinPrice,omitempty"` - DiamondPrice int32 `protobuf:"varint,9,opt,name=DiamondPrice,proto3" json:"DiamondPrice,omitempty"` - DiamondNowPrice int32 `protobuf:"varint,10,opt,name=DiamondNowPrice,proto3" json:"DiamondNowPrice,omitempty"` + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` + BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` + CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` + MaxGold int32 `protobuf:"varint,5,opt,name=MaxGold,proto3" json:"MaxGold,omitempty"` + GoldExc map[int64]int64 `protobuf:"bytes,6,rep,name=GoldExc,proto3" json:"GoldExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + MaxDiamond int32 `protobuf:"varint,7,opt,name=MaxDiamond,proto3" json:"MaxDiamond,omitempty"` + DiamondId int32 `protobuf:"varint,8,opt,name=DiamondId,proto3" json:"DiamondId,omitempty"` + DiamondExc map[int64]int64 `protobuf:"bytes,9,rep,name=DiamondExc,proto3" json:"DiamondExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + CoinPrice int32 `protobuf:"varint,10,opt,name=CoinPrice,proto3" json:"CoinPrice,omitempty"` + DiamondPrice int32 `protobuf:"varint,11,opt,name=DiamondPrice,proto3" json:"DiamondPrice,omitempty"` + DiamondNowPrice int32 `protobuf:"varint,12,opt,name=DiamondNowPrice,proto3" json:"DiamondNowPrice,omitempty"` } func (x *DB_PigBank_Diamond) Reset() { *x = DB_PigBank_Diamond{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[104] + mi := &file_protocol_server_pbdata_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8192,7 +8430,7 @@ func (x *DB_PigBank_Diamond) String() string { func (*DB_PigBank_Diamond) ProtoMessage() {} func (x *DB_PigBank_Diamond) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[104] + mi := &file_protocol_server_pbdata_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8205,7 +8443,7 @@ func (x *DB_PigBank_Diamond) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PigBank_Diamond.ProtoReflect.Descriptor instead. func (*DB_PigBank_Diamond) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{104} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{108} } func (x *DB_PigBank_Diamond) GetId() int32 { @@ -8243,6 +8481,13 @@ func (x *DB_PigBank_Diamond) GetMaxGold() int32 { return 0 } +func (x *DB_PigBank_Diamond) GetGoldExc() map[int64]int64 { + if x != nil { + return x.GoldExc + } + return nil +} + func (x *DB_PigBank_Diamond) GetMaxDiamond() int32 { if x != nil { return x.MaxDiamond @@ -8257,6 +8502,13 @@ func (x *DB_PigBank_Diamond) GetDiamondId() int32 { return 0 } +func (x *DB_PigBank_Diamond) GetDiamondExc() map[int64]int64 { + if x != nil { + return x.DiamondExc + } + return nil +} + func (x *DB_PigBank_Diamond) GetCoinPrice() int32 { if x != nil { return x.CoinPrice @@ -8289,7 +8541,7 @@ type DB_PigBank_DiamondArray struct { func (x *DB_PigBank_DiamondArray) Reset() { *x = DB_PigBank_DiamondArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[105] + mi := &file_protocol_server_pbdata_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8302,7 +8554,7 @@ func (x *DB_PigBank_DiamondArray) String() string { func (*DB_PigBank_DiamondArray) ProtoMessage() {} func (x *DB_PigBank_DiamondArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[105] + mi := &file_protocol_server_pbdata_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8315,7 +8567,7 @@ func (x *DB_PigBank_DiamondArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PigBank_DiamondArray.ProtoReflect.Descriptor instead. func (*DB_PigBank_DiamondArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{105} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{109} } func (x *DB_PigBank_DiamondArray) GetArr() []*DB_PigBank_Diamond { @@ -8338,7 +8590,7 @@ type DB_Pigbank_Prop struct { func (x *DB_Pigbank_Prop) Reset() { *x = DB_Pigbank_Prop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[106] + mi := &file_protocol_server_pbdata_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8351,7 +8603,7 @@ func (x *DB_Pigbank_Prop) String() string { func (*DB_Pigbank_Prop) ProtoMessage() {} func (x *DB_Pigbank_Prop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[106] + mi := &file_protocol_server_pbdata_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8364,7 +8616,7 @@ func (x *DB_Pigbank_Prop) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Pigbank_Prop.ProtoReflect.Descriptor instead. func (*DB_Pigbank_Prop) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{106} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{110} } func (x *DB_Pigbank_Prop) GetId() int32 { @@ -8399,7 +8651,7 @@ type DB_Pigbank_PropArray struct { func (x *DB_Pigbank_PropArray) Reset() { *x = DB_Pigbank_PropArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[107] + mi := &file_protocol_server_pbdata_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8412,7 +8664,7 @@ func (x *DB_Pigbank_PropArray) String() string { func (*DB_Pigbank_PropArray) ProtoMessage() {} func (x *DB_Pigbank_PropArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[107] + mi := &file_protocol_server_pbdata_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8425,7 +8677,7 @@ func (x *DB_Pigbank_PropArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Pigbank_PropArray.ProtoReflect.Descriptor instead. func (*DB_Pigbank_PropArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{107} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{111} } func (x *DB_Pigbank_PropArray) GetArr() []*DB_Pigbank_Prop { @@ -8447,7 +8699,7 @@ type DB_PlayerExp struct { func (x *DB_PlayerExp) Reset() { *x = DB_PlayerExp{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[108] + mi := &file_protocol_server_pbdata_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8460,7 +8712,7 @@ func (x *DB_PlayerExp) String() string { func (*DB_PlayerExp) ProtoMessage() {} func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[108] + mi := &file_protocol_server_pbdata_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8473,7 +8725,7 @@ func (x *DB_PlayerExp) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExp.ProtoReflect.Descriptor instead. func (*DB_PlayerExp) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{108} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{112} } func (x *DB_PlayerExp) GetId() int32 { @@ -8501,7 +8753,7 @@ type DB_PlayerExpArray struct { func (x *DB_PlayerExpArray) Reset() { *x = DB_PlayerExpArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[109] + mi := &file_protocol_server_pbdata_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8514,7 +8766,7 @@ func (x *DB_PlayerExpArray) String() string { func (*DB_PlayerExpArray) ProtoMessage() {} func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[109] + mi := &file_protocol_server_pbdata_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8527,7 +8779,7 @@ func (x *DB_PlayerExpArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerExpArray.ProtoReflect.Descriptor instead. func (*DB_PlayerExpArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{109} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{113} } func (x *DB_PlayerExpArray) GetArr() []*DB_PlayerExp { @@ -8565,7 +8817,7 @@ type DB_PlayerType struct { func (x *DB_PlayerType) Reset() { *x = DB_PlayerType{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[110] + mi := &file_protocol_server_pbdata_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8578,7 +8830,7 @@ func (x *DB_PlayerType) String() string { func (*DB_PlayerType) ProtoMessage() {} func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[110] + mi := &file_protocol_server_pbdata_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8591,7 +8843,7 @@ func (x *DB_PlayerType) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerType.ProtoReflect.Descriptor instead. func (*DB_PlayerType) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{110} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{114} } func (x *DB_PlayerType) GetId() int32 { @@ -8731,7 +8983,7 @@ type DB_PlayerTypeArray struct { func (x *DB_PlayerTypeArray) Reset() { *x = DB_PlayerTypeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[111] + mi := &file_protocol_server_pbdata_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8744,7 +8996,7 @@ func (x *DB_PlayerTypeArray) String() string { func (*DB_PlayerTypeArray) ProtoMessage() {} func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[111] + mi := &file_protocol_server_pbdata_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8757,7 +9009,7 @@ func (x *DB_PlayerTypeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PlayerTypeArray.ProtoReflect.Descriptor instead. func (*DB_PlayerTypeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{111} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{115} } func (x *DB_PlayerTypeArray) GetArr() []*DB_PlayerType { @@ -8781,7 +9033,7 @@ type DB_PotOdd struct { func (x *DB_PotOdd) Reset() { *x = DB_PotOdd{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[112] + mi := &file_protocol_server_pbdata_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8794,7 +9046,7 @@ func (x *DB_PotOdd) String() string { func (*DB_PotOdd) ProtoMessage() {} func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[112] + mi := &file_protocol_server_pbdata_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8807,7 +9059,7 @@ func (x *DB_PotOdd) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOdd.ProtoReflect.Descriptor instead. func (*DB_PotOdd) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{112} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{116} } func (x *DB_PotOdd) GetId() int32 { @@ -8849,7 +9101,7 @@ type DB_PotOddArray struct { func (x *DB_PotOddArray) Reset() { *x = DB_PotOddArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[113] + mi := &file_protocol_server_pbdata_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8862,7 +9114,7 @@ func (x *DB_PotOddArray) String() string { func (*DB_PotOddArray) ProtoMessage() {} func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[113] + mi := &file_protocol_server_pbdata_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8875,7 +9127,7 @@ func (x *DB_PotOddArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PotOddArray.ProtoReflect.Descriptor instead. func (*DB_PotOddArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{113} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{117} } func (x *DB_PotOddArray) GetArr() []*DB_PotOdd { @@ -8894,12 +9146,13 @@ type DB_PropExchange struct { Group int32 `protobuf:"varint,2,opt,name=Group,proto3" json:"Group,omitempty"` Cost map[int64]int64 `protobuf:"bytes,3,rep,name=Cost,proto3" json:"Cost,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` Gain map[int64]int64 `protobuf:"bytes,4,rep,name=Gain,proto3" json:"Gain,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Times int32 `protobuf:"varint,5,opt,name=Times,proto3" json:"Times,omitempty"` } func (x *DB_PropExchange) Reset() { *x = DB_PropExchange{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[114] + mi := &file_protocol_server_pbdata_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8912,7 +9165,7 @@ func (x *DB_PropExchange) String() string { func (*DB_PropExchange) ProtoMessage() {} func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[114] + mi := &file_protocol_server_pbdata_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8925,7 +9178,7 @@ func (x *DB_PropExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PropExchange.ProtoReflect.Descriptor instead. func (*DB_PropExchange) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{114} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{118} } func (x *DB_PropExchange) GetId() int32 { @@ -8956,6 +9209,13 @@ func (x *DB_PropExchange) GetGain() map[int64]int64 { return nil } +func (x *DB_PropExchange) GetTimes() int32 { + if x != nil { + return x.Times + } + return 0 +} + type DB_PropExchangeArray struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -8967,7 +9227,7 @@ type DB_PropExchangeArray struct { func (x *DB_PropExchangeArray) Reset() { *x = DB_PropExchangeArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[115] + mi := &file_protocol_server_pbdata_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8980,7 +9240,7 @@ func (x *DB_PropExchangeArray) String() string { func (*DB_PropExchangeArray) ProtoMessage() {} func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[115] + mi := &file_protocol_server_pbdata_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8993,7 +9253,7 @@ func (x *DB_PropExchangeArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_PropExchangeArray.ProtoReflect.Descriptor instead. func (*DB_PropExchangeArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{115} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{119} } func (x *DB_PropExchangeArray) GetArr() []*DB_PropExchange { @@ -9016,7 +9276,7 @@ type DB_RankCycle struct { func (x *DB_RankCycle) Reset() { *x = DB_RankCycle{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[116] + mi := &file_protocol_server_pbdata_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9029,7 +9289,7 @@ func (x *DB_RankCycle) String() string { func (*DB_RankCycle) ProtoMessage() {} func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[116] + mi := &file_protocol_server_pbdata_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9042,7 +9302,7 @@ func (x *DB_RankCycle) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycle.ProtoReflect.Descriptor instead. func (*DB_RankCycle) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{116} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{120} } func (x *DB_RankCycle) GetId() int32 { @@ -9077,7 +9337,7 @@ type DB_RankCycleArray struct { func (x *DB_RankCycleArray) Reset() { *x = DB_RankCycleArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[117] + mi := &file_protocol_server_pbdata_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9090,7 +9350,7 @@ func (x *DB_RankCycleArray) String() string { func (*DB_RankCycleArray) ProtoMessage() {} func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[117] + mi := &file_protocol_server_pbdata_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9103,7 +9363,7 @@ func (x *DB_RankCycleArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankCycleArray.ProtoReflect.Descriptor instead. func (*DB_RankCycleArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{117} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{121} } func (x *DB_RankCycleArray) GetArr() []*DB_RankCycle { @@ -9128,7 +9388,7 @@ type DB_RankLevel struct { func (x *DB_RankLevel) Reset() { *x = DB_RankLevel{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[118] + mi := &file_protocol_server_pbdata_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9141,7 +9401,7 @@ func (x *DB_RankLevel) String() string { func (*DB_RankLevel) ProtoMessage() {} func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[118] + mi := &file_protocol_server_pbdata_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9154,7 +9414,7 @@ func (x *DB_RankLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevel.ProtoReflect.Descriptor instead. func (*DB_RankLevel) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{118} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{122} } func (x *DB_RankLevel) GetId() int32 { @@ -9203,7 +9463,7 @@ type DB_RankLevelArray struct { func (x *DB_RankLevelArray) Reset() { *x = DB_RankLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[119] + mi := &file_protocol_server_pbdata_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9216,7 +9476,7 @@ func (x *DB_RankLevelArray) String() string { func (*DB_RankLevelArray) ProtoMessage() {} func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[119] + mi := &file_protocol_server_pbdata_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9229,7 +9489,7 @@ func (x *DB_RankLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankLevelArray.ProtoReflect.Descriptor instead. func (*DB_RankLevelArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{119} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{123} } func (x *DB_RankLevelArray) GetArr() []*DB_RankLevel { @@ -9258,7 +9518,7 @@ type DB_RankReward struct { func (x *DB_RankReward) Reset() { *x = DB_RankReward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[120] + mi := &file_protocol_server_pbdata_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9271,7 +9531,7 @@ func (x *DB_RankReward) String() string { func (*DB_RankReward) ProtoMessage() {} func (x *DB_RankReward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[120] + mi := &file_protocol_server_pbdata_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9284,7 +9544,7 @@ func (x *DB_RankReward) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankReward.ProtoReflect.Descriptor instead. func (*DB_RankReward) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{120} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{124} } func (x *DB_RankReward) GetId() int32 { @@ -9361,7 +9621,7 @@ type DB_RankRewardArray struct { func (x *DB_RankRewardArray) Reset() { *x = DB_RankRewardArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[121] + mi := &file_protocol_server_pbdata_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9374,7 +9634,7 @@ func (x *DB_RankRewardArray) String() string { func (*DB_RankRewardArray) ProtoMessage() {} func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[121] + mi := &file_protocol_server_pbdata_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9387,7 +9647,7 @@ func (x *DB_RankRewardArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_RankRewardArray.ProtoReflect.Descriptor instead. func (*DB_RankRewardArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{121} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{125} } func (x *DB_RankRewardArray) GetArr() []*DB_RankReward { @@ -9409,7 +9669,7 @@ type DB_Sensitive_Words struct { func (x *DB_Sensitive_Words) Reset() { *x = DB_Sensitive_Words{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[122] + mi := &file_protocol_server_pbdata_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9422,7 +9682,7 @@ func (x *DB_Sensitive_Words) String() string { func (*DB_Sensitive_Words) ProtoMessage() {} func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[122] + mi := &file_protocol_server_pbdata_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9435,7 +9695,7 @@ func (x *DB_Sensitive_Words) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_Words.ProtoReflect.Descriptor instead. func (*DB_Sensitive_Words) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{122} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{126} } func (x *DB_Sensitive_Words) GetId() int32 { @@ -9463,7 +9723,7 @@ type DB_Sensitive_WordsArray struct { func (x *DB_Sensitive_WordsArray) Reset() { *x = DB_Sensitive_WordsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[123] + mi := &file_protocol_server_pbdata_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9476,7 +9736,7 @@ func (x *DB_Sensitive_WordsArray) String() string { func (*DB_Sensitive_WordsArray) ProtoMessage() {} func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[123] + mi := &file_protocol_server_pbdata_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9489,7 +9749,7 @@ func (x *DB_Sensitive_WordsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Sensitive_WordsArray.ProtoReflect.Descriptor instead. func (*DB_Sensitive_WordsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{123} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{127} } func (x *DB_Sensitive_WordsArray) GetArr() []*DB_Sensitive_Words { @@ -9523,7 +9783,7 @@ type DB_Skin struct { func (x *DB_Skin) Reset() { *x = DB_Skin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[124] + mi := &file_protocol_server_pbdata_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9536,7 +9796,7 @@ func (x *DB_Skin) String() string { func (*DB_Skin) ProtoMessage() {} func (x *DB_Skin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[124] + mi := &file_protocol_server_pbdata_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9549,7 +9809,7 @@ func (x *DB_Skin) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Skin.ProtoReflect.Descriptor instead. func (*DB_Skin) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{124} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{128} } func (x *DB_Skin) GetId() int32 { @@ -9661,7 +9921,7 @@ type DB_SkinArray struct { func (x *DB_SkinArray) Reset() { *x = DB_SkinArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[125] + mi := &file_protocol_server_pbdata_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9674,7 +9934,7 @@ func (x *DB_SkinArray) String() string { func (*DB_SkinArray) ProtoMessage() {} func (x *DB_SkinArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[125] + mi := &file_protocol_server_pbdata_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9687,7 +9947,7 @@ func (x *DB_SkinArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SkinArray.ProtoReflect.Descriptor instead. func (*DB_SkinArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{125} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{129} } func (x *DB_SkinArray) GetArr() []*DB_Skin { @@ -9715,7 +9975,7 @@ type DB_SkinLevel struct { func (x *DB_SkinLevel) Reset() { *x = DB_SkinLevel{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[126] + mi := &file_protocol_server_pbdata_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9728,7 +9988,7 @@ func (x *DB_SkinLevel) String() string { func (*DB_SkinLevel) ProtoMessage() {} func (x *DB_SkinLevel) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[126] + mi := &file_protocol_server_pbdata_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9741,7 +10001,7 @@ func (x *DB_SkinLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SkinLevel.ProtoReflect.Descriptor instead. func (*DB_SkinLevel) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{126} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{130} } func (x *DB_SkinLevel) GetId() int32 { @@ -9811,7 +10071,7 @@ type DB_SkinLevelArray struct { func (x *DB_SkinLevelArray) Reset() { *x = DB_SkinLevelArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[127] + mi := &file_protocol_server_pbdata_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9824,7 +10084,7 @@ func (x *DB_SkinLevelArray) String() string { func (*DB_SkinLevelArray) ProtoMessage() {} func (x *DB_SkinLevelArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[127] + mi := &file_protocol_server_pbdata_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9837,7 +10097,7 @@ func (x *DB_SkinLevelArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SkinLevelArray.ProtoReflect.Descriptor instead. func (*DB_SkinLevelArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{127} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{131} } func (x *DB_SkinLevelArray) GetArr() []*DB_SkinLevel { @@ -9873,7 +10133,7 @@ type DB_SlotRateWeight struct { func (x *DB_SlotRateWeight) Reset() { *x = DB_SlotRateWeight{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[128] + mi := &file_protocol_server_pbdata_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9886,7 +10146,7 @@ func (x *DB_SlotRateWeight) String() string { func (*DB_SlotRateWeight) ProtoMessage() {} func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[128] + mi := &file_protocol_server_pbdata_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9899,7 +10159,7 @@ func (x *DB_SlotRateWeight) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeight.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeight) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{128} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{132} } func (x *DB_SlotRateWeight) GetId() int32 { @@ -10025,7 +10285,7 @@ type DB_SlotRateWeightArray struct { func (x *DB_SlotRateWeightArray) Reset() { *x = DB_SlotRateWeightArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[129] + mi := &file_protocol_server_pbdata_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10038,7 +10298,7 @@ func (x *DB_SlotRateWeightArray) String() string { func (*DB_SlotRateWeightArray) ProtoMessage() {} func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[129] + mi := &file_protocol_server_pbdata_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10051,7 +10311,7 @@ func (x *DB_SlotRateWeightArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SlotRateWeightArray.ProtoReflect.Descriptor instead. func (*DB_SlotRateWeightArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{129} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{133} } func (x *DB_SlotRateWeightArray) GetArr() []*DB_SlotRateWeight { @@ -10076,7 +10336,7 @@ type DB_SystemChance struct { func (x *DB_SystemChance) Reset() { *x = DB_SystemChance{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[130] + mi := &file_protocol_server_pbdata_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10089,7 +10349,7 @@ func (x *DB_SystemChance) String() string { func (*DB_SystemChance) ProtoMessage() {} func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[130] + mi := &file_protocol_server_pbdata_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10102,7 +10362,7 @@ func (x *DB_SystemChance) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChance.ProtoReflect.Descriptor instead. func (*DB_SystemChance) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{130} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{134} } func (x *DB_SystemChance) GetId() int32 { @@ -10151,7 +10411,7 @@ type DB_SystemChanceArray struct { func (x *DB_SystemChanceArray) Reset() { *x = DB_SystemChanceArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[131] + mi := &file_protocol_server_pbdata_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10164,7 +10424,7 @@ func (x *DB_SystemChanceArray) String() string { func (*DB_SystemChanceArray) ProtoMessage() {} func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[131] + mi := &file_protocol_server_pbdata_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10177,7 +10437,7 @@ func (x *DB_SystemChanceArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_SystemChanceArray.ProtoReflect.Descriptor instead. func (*DB_SystemChanceArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{131} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{135} } func (x *DB_SystemChanceArray) GetArr() []*DB_SystemChance { @@ -10208,7 +10468,7 @@ type DB_Task struct { func (x *DB_Task) Reset() { *x = DB_Task{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[132] + mi := &file_protocol_server_pbdata_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10221,7 +10481,7 @@ func (x *DB_Task) String() string { func (*DB_Task) ProtoMessage() {} func (x *DB_Task) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[132] + mi := &file_protocol_server_pbdata_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10234,7 +10494,7 @@ func (x *DB_Task) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Task.ProtoReflect.Descriptor instead. func (*DB_Task) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{132} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{136} } func (x *DB_Task) GetId() int32 { @@ -10325,7 +10585,7 @@ type DB_TaskArray struct { func (x *DB_TaskArray) Reset() { *x = DB_TaskArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[133] + mi := &file_protocol_server_pbdata_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10338,7 +10598,7 @@ func (x *DB_TaskArray) String() string { func (*DB_TaskArray) ProtoMessage() {} func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[133] + mi := &file_protocol_server_pbdata_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10351,7 +10611,7 @@ func (x *DB_TaskArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TaskArray.ProtoReflect.Descriptor instead. func (*DB_TaskArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{133} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{137} } func (x *DB_TaskArray) GetArr() []*DB_Task { @@ -10378,7 +10638,7 @@ type DB_ThirdPlatformGameMapping struct { func (x *DB_ThirdPlatformGameMapping) Reset() { *x = DB_ThirdPlatformGameMapping{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[134] + mi := &file_protocol_server_pbdata_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10391,7 +10651,7 @@ func (x *DB_ThirdPlatformGameMapping) String() string { func (*DB_ThirdPlatformGameMapping) ProtoMessage() {} func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[134] + mi := &file_protocol_server_pbdata_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10404,7 +10664,7 @@ func (x *DB_ThirdPlatformGameMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMapping.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMapping) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{134} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{138} } func (x *DB_ThirdPlatformGameMapping) GetId() int32 { @@ -10467,7 +10727,7 @@ type DB_ThirdPlatformGameMappingArray struct { func (x *DB_ThirdPlatformGameMappingArray) Reset() { *x = DB_ThirdPlatformGameMappingArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[135] + mi := &file_protocol_server_pbdata_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10480,7 +10740,7 @@ func (x *DB_ThirdPlatformGameMappingArray) String() string { func (*DB_ThirdPlatformGameMappingArray) ProtoMessage() {} func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[135] + mi := &file_protocol_server_pbdata_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10493,7 +10753,7 @@ func (x *DB_ThirdPlatformGameMappingArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_ThirdPlatformGameMappingArray.ProtoReflect.Descriptor instead. func (*DB_ThirdPlatformGameMappingArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{135} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{139} } func (x *DB_ThirdPlatformGameMappingArray) GetArr() []*DB_ThirdPlatformGameMapping { @@ -10516,7 +10776,7 @@ type DB_Tips struct { func (x *DB_Tips) Reset() { *x = DB_Tips{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[136] + mi := &file_protocol_server_pbdata_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10529,7 +10789,7 @@ func (x *DB_Tips) String() string { func (*DB_Tips) ProtoMessage() {} func (x *DB_Tips) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[136] + mi := &file_protocol_server_pbdata_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10542,7 +10802,7 @@ func (x *DB_Tips) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_Tips.ProtoReflect.Descriptor instead. func (*DB_Tips) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{136} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{140} } func (x *DB_Tips) GetId() int32 { @@ -10577,7 +10837,7 @@ type DB_TipsArray struct { func (x *DB_TipsArray) Reset() { *x = DB_TipsArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[137] + mi := &file_protocol_server_pbdata_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10590,7 +10850,7 @@ func (x *DB_TipsArray) String() string { func (*DB_TipsArray) ProtoMessage() {} func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[137] + mi := &file_protocol_server_pbdata_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10603,7 +10863,7 @@ func (x *DB_TipsArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_TipsArray.ProtoReflect.Descriptor instead. func (*DB_TipsArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{137} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{141} } func (x *DB_TipsArray) GetArr() []*DB_Tips { @@ -10645,7 +10905,7 @@ type DB_VIP struct { func (x *DB_VIP) Reset() { *x = DB_VIP{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[138] + mi := &file_protocol_server_pbdata_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10658,7 +10918,7 @@ func (x *DB_VIP) String() string { func (*DB_VIP) ProtoMessage() {} func (x *DB_VIP) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[138] + mi := &file_protocol_server_pbdata_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10671,7 +10931,7 @@ func (x *DB_VIP) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIP.ProtoReflect.Descriptor instead. func (*DB_VIP) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{138} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{142} } func (x *DB_VIP) GetId() int32 { @@ -10839,7 +11099,7 @@ type DB_VIPArray struct { func (x *DB_VIPArray) Reset() { *x = DB_VIPArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[139] + mi := &file_protocol_server_pbdata_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10852,7 +11112,7 @@ func (x *DB_VIPArray) String() string { func (*DB_VIPArray) ProtoMessage() {} func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[139] + mi := &file_protocol_server_pbdata_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10865,7 +11125,7 @@ func (x *DB_VIPArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPArray.ProtoReflect.Descriptor instead. func (*DB_VIPArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{139} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{143} } func (x *DB_VIPArray) GetArr() []*DB_VIP { @@ -10890,7 +11150,7 @@ type DB_VIPShow struct { func (x *DB_VIPShow) Reset() { *x = DB_VIPShow{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[140] + mi := &file_protocol_server_pbdata_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10903,7 +11163,7 @@ func (x *DB_VIPShow) String() string { func (*DB_VIPShow) ProtoMessage() {} func (x *DB_VIPShow) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[140] + mi := &file_protocol_server_pbdata_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10916,7 +11176,7 @@ func (x *DB_VIPShow) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPShow.ProtoReflect.Descriptor instead. func (*DB_VIPShow) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{140} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{144} } func (x *DB_VIPShow) GetId() int32 { @@ -10965,7 +11225,7 @@ type DB_VIPShowArray struct { func (x *DB_VIPShowArray) Reset() { *x = DB_VIPShowArray{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_server_pbdata_proto_msgTypes[141] + mi := &file_protocol_server_pbdata_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10978,7 +11238,7 @@ func (x *DB_VIPShowArray) String() string { func (*DB_VIPShowArray) ProtoMessage() {} func (x *DB_VIPShowArray) ProtoReflect() protoreflect.Message { - mi := &file_protocol_server_pbdata_proto_msgTypes[141] + mi := &file_protocol_server_pbdata_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10991,7 +11251,7 @@ func (x *DB_VIPShowArray) ProtoReflect() protoreflect.Message { // Deprecated: Use DB_VIPShowArray.ProtoReflect.Descriptor instead. func (*DB_VIPShowArray) Descriptor() ([]byte, []int) { - return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{141} + return file_protocol_server_pbdata_proto_rawDescGZIP(), []int{145} } func (x *DB_VIPShowArray) GetArr() []*DB_VIPShow { @@ -11006,471 +11266,967 @@ var File_protocol_server_pbdata_proto protoreflect.FileDescriptor var file_protocol_server_pbdata_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x62, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x73, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, - 0x53, 0x69, 0x67, 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, 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, 0x22, 0x37, 0x0a, 0x0f, 0x44, - 0x42, 0x5f, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 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, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x86, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x43, 0x6f, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x43, 0x6f, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, 0x12, 0x12, 0x0a, - 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x54, 0x79, 0x70, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, - 0x11, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x31, 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, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x31, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x56, 0x0a, 0x0e, 0x44, 0x42, - 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 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, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, - 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x28, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0xb9, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x41, 0x43, + 0x54, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 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, 0x34, 0x0a, + 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x50, 0x75, 0x73, 0x68, 0x43, + 0x6f, 0x69, 0x6e, 0x2e, 0x47, 0x61, 0x69, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x47, + 0x61, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 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, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 0x69, 0x6e, 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, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x62, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, - 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, 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, 0x44, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, - 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 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, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, - 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf6, 0x03, 0x0a, - 0x10, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, + 0x44, 0x42, 0x5f, 0x41, 0x43, 0x54, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x73, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 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, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, - 0x69, 0x63, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, - 0x63, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, - 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, - 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x4e, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, - 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x47, - 0x6f, 0x6c, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x63, - 0x6f, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, - 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, - 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x6e, 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, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, - 0x79, 0x53, 0x6b, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0d, 0x44, 0x42, - 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, - 0x6c, 0x61, 0x63, 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, - 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x68, 0x69, - 0x74, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x57, 0x68, - 0x69, 0x74, 0x65, 0x4f, 0x64, 0x64, 0x73, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x42, 0x6c, - 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 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, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x4a, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, - 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, - 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, - 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x43, 0x61, 0x72, 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, - 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, - 0x64, 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x37, 0x0a, - 0x0f, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x44, 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, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, - 0x44, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x96, 0x04, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, - 0x0a, 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, - 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, - 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x43, 0x61, 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, - 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, - 0x61, 0x72, 0x64, 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, - 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, - 0x64, 0x34, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, - 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, - 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, - 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 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, 0x43, 0x61, - 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd1, 0x01, 0x0a, - 0x13, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, - 0x75, 0x6c, 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x65, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x22, 0x49, 0x0a, 0x18, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, - 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x03, - 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, - 0x64, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, - 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, - 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77, - 0x53, 0x74, 0x65, 0x70, 0x12, 0x30, 0x0a, 0x13, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x48, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x13, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x67, - 0x68, 0x74, 0x53, 0x74, 0x65, 0x70, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 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, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, - 0x48, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, - 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, - 0x43, 0x68, 0x65, 0x73, 0x73, 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, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, - 0x6b, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x78, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, - 0x65, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, - 0x56, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, - 0x56, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, - 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 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, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa9, 0x01, - 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 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, 0x39, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 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, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 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, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, - 0x42, 0x6f, 0x78, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x37, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 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, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, - 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 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, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, - 0x61, 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x43, - 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 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, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 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, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, - 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, - 0x47, 0x6f, 0x6c, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x52, - 0x03, 0x41, 0x72, 0x72, 0x22, 0x91, 0x07, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, - 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, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, - 0x6c, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, - 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, - 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, - 0x65, 0x6c, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x72, 0x61, 0x6d, - 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, - 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, - 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, - 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x68, 0x6f, 0x77, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, - 0x50, 0x6f, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, - 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0f, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x44, 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, - 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, - 0x69, 0x65, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x45, - 0x66, 0x66, 0x65, 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, - 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, - 0x6b, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, - 0x6b, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x6f, - 0x73, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x69, 0x65, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x18, 0x1c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, - 0x73, 0x50, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x4a, 0x73, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, - 0x6e, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, - 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, - 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x46, 0x69, 0x73, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x64, - 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x61, - 0x6e, 0x64, 0x6f, 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 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, 0x46, 0x69, 0x73, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0a, - 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, - 0x63, 0x65, 0x6e, 0x65, 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, 0x10, 0x0a, 0x03, - 0x45, 0x78, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, - 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, - 0x74, 0x68, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x52, - 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, - 0x70, 0x65, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 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, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0x63, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, - 0x74, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, - 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, - 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 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, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x03, - 0x41, 0x72, 0x72, 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, - 0x6f, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 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, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x53, - 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, - 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, - 0x6c, 0x64, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, - 0x6c, 0x64, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x42, - 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x4c, - 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, - 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, - 0x6f, 0x73, 0x73, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, - 0x6f, 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, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xda, - 0x03, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 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, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x49, - 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x47, 0x43, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x47, 0x43, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, - 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x75, 0x74, - 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x75, - 0x74, 0x65, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x72, 0x79, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x75, 0x72, 0x79, 0x22, 0x3b, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 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, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, - 0x69, 0x6c, 0x6c, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, - 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 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, 0x47, 0x0a, - 0x17, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, - 0x64, 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, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, - 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x46, 0x6f, - 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 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, 0x4f, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, - 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, - 0x72, 0x72, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, - 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, - 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, - 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, + 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, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x41, + 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 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, 0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x86, 0x02, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x54, 0x75, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, + 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x73, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x73, 0x74, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x54, 0x79, 0x70, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, + 0x79, 0x70, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x72, 0x6f, 0x70, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x47, 0x65, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, + 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x31, 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, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x31, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x56, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x41, 0x6e, + 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 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, 0x20, 0x0a, + 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, + 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 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, + 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x62, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, + 0x52, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x68, 0x65, 0x6c, 0x6c, 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, 0x44, 0x65, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x44, 0x65, 0x73, 0x63, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, + 0x6c, 0x65, 0x72, 0x79, 0x52, 0x61, 0x74, 0x65, 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, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, + 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xf6, 0x03, 0x0a, 0x10, 0x44, 0x42, + 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x6e, 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, 0x4b, 0x0a, 0x19, 0x44, 0x42, - 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 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, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x1d, 0x44, 0x42, 0x5f, 0x46, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x69, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x49, + 0x63, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x49, 0x63, + 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x4e, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x4e, + 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x44, + 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x6e, 0x63, 0x6f, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, + 0x70, 0x65, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x43, 0x61, 0x75, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x49, 0x6e, 0x74, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x22, 0x43, 0x0a, 0x15, 0x44, 0x42, 0x5f, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, + 0x72, 0x79, 0x53, 0x6b, 0x69, 0x6e, 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, 0x41, 0x72, 0x74, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x79, 0x53, 0x6b, + 0x69, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x5b, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x42, 0x6c, + 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6c, 0x61, 0x63, + 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x42, 0x6c, 0x61, + 0x63, 0x6b, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x57, 0x68, 0x69, 0x74, 0x65, 0x4f, + 0x64, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x57, 0x68, 0x69, 0x74, 0x65, + 0x4f, 0x64, 0x64, 0x73, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b, + 0x57, 0x68, 0x69, 0x74, 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, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x57, 0x68, 0x69, 0x74, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x4a, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, + 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x32, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, + 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, + 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, + 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, + 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, + 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, + 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, + 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x44, 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, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4a, 0x44, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x96, 0x04, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x59, 0x75, 0x4c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, + 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x43, 0x61, 0x72, 0x64, 0x31, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, + 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x31, 0x43, 0x61, 0x72, + 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, + 0x72, 0x64, 0x32, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x43, 0x61, 0x72, 0x64, 0x32, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x32, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x43, 0x61, 0x72, 0x64, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x33, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, + 0x33, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x33, 0x48, + 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, + 0x72, 0x64, 0x33, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x33, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, + 0x61, 0x72, 0x64, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x34, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x34, 0x48, 0x61, 0x6e, + 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x72, 0x64, + 0x34, 0x48, 0x61, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x34, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x11, + 0x44, 0x42, 0x5f, 0x43, 0x61, 0x72, 0x64, 0x73, 0x59, 0x75, 0x4c, 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, 0x43, 0x61, 0x72, 0x64, 0x73, + 0x59, 0x75, 0x4c, 0x65, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd1, 0x01, 0x0a, 0x13, 0x44, 0x42, + 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x65, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, 0x65, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x72, 0x61, 0x77, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, + 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x49, 0x0a, + 0x18, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x2d, 0x0a, 0x03, 0x41, 0x72, 0x72, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x75, + 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, + 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x4c, 0x6f, 0x77, 0x53, 0x74, 0x65, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x11, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77, 0x53, 0x74, 0x65, + 0x70, 0x12, 0x30, 0x0a, 0x13, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, + 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x67, 0x68, 0x74, 0x53, + 0x74, 0x65, 0x70, 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 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, 0x43, 0x68, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x48, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x68, 0x65, + 0x73, 0x73, 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, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x78, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x56, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x46, 0x6c, + 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x63, 0x6b, 0x56, 0x65, 0x72, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x22, 0x3b, 0x0a, + 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 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, 0x43, 0x6c, 0x69, 0x65, + 0x6e, 0x74, 0x56, 0x65, 0x72, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xa9, 0x01, 0x0a, 0x0d, 0x44, + 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 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, 0x39, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x44, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 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, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 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, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x37, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, 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, 0x22, 0x45, + 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, + 0x61, 0x69, 0x6e, 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, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x6f, 0x78, 0x47, 0x61, 0x69, 0x6e, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x4a, 0x0a, 0x0e, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, + 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x22, 0x3f, 0x0a, 0x13, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 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, 0x43, 0x72, 0x61, 0x73, 0x68, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x03, 0x41, + 0x72, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x72, 0x6f, 0x6f, 0x6d, 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, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x6f, 0x6c, 0x64, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x47, 0x6f, 0x6c, + 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, + 0x6f, 0x6f, 0x6d, 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, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, + 0x72, 0x22, 0x91, 0x07, 0x0a, 0x07, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 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, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, + 0x63, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x49, 0x63, 0x6f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x43, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x43, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x77, 0x53, + 0x63, 0x61, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, 0x6f, 0x77, + 0x53, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x6f, 0x73, + 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x44, + 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, + 0x69, 0x65, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x52, 0x6f, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x69, 0x65, 0x45, 0x66, 0x66, 0x65, + 0x63, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x65, 0x45, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x69, 0x65, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x14, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x70, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x52, 0x65, 0x73, 0x49, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x65, + 0x73, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x44, 0x69, 0x65, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x68, + 0x61, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x53, 0x68, 0x61, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x46, 0x69, 0x73, 0x68, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x52, 0x65, 0x73, 0x50, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x52, 0x65, 0x73, 0x50, 0x6c, + 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x73, 0x6f, + 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4a, + 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x18, 0x1f, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x41, 0x69, 0x6d, 0x49, 0x63, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x20, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x21, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x69, 0x73, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x69, 0x73, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x61, 0x6e, 0x64, 0x6f, + 0x6d, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x31, 0x0a, 0x0c, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, + 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, 0x46, + 0x69, 0x73, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfc, 0x01, 0x0a, 0x0a, 0x44, 0x42, 0x5f, + 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, + 0x65, 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, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x74, 0x68, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x70, 0x65, 0x65, + 0x64, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x46, 0x69, + 0x73, 0x68, 0x4f, 0x75, 0x74, 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, 0x46, 0x69, 0x73, 0x68, 0x4f, 0x75, 0x74, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0x63, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x24, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x70, 0x70, 0x65, 0x61, + 0x72, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, + 0x50, 0x61, 0x74, 0x68, 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, 0x46, 0x69, 0x73, 0x68, 0x50, 0x61, 0x74, 0x68, 0x52, 0x03, 0x41, 0x72, 0x72, + 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 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, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, + 0x6f, 0x6c, 0x64, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, + 0x6f, 0x6c, 0x64, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x33, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x33, + 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x34, 0x12, 0x1a, 0x0a, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x53, 0x75, 0x6d, 0x47, 0x6f, 0x6c, 0x64, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x6f, 0x73, 0x73, + 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x42, 0x6f, + 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x4c, 0x69, 0x74, 0x74, + 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x10, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x43, 0x44, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x6f, + 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x6f, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, + 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x74, 0x74, 0x6c, 0x65, 0x42, 0x6f, 0x73, 0x73, + 0x22, 0x39, 0x0a, 0x10, 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x52, 0x6f, 0x6f, 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, 0x46, 0x69, + 0x73, 0x68, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xda, 0x03, 0x0a, 0x0c, + 0x44, 0x42, 0x5f, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 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, + 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, + 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x49, 0x74, 0x65, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x72, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, + 0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x10, 0x0a, 0x03, 0x47, 0x43, 0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x47, + 0x43, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x16, + 0x0a, 0x06, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x42, 0x6f, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x75, 0x74, 0x65, 0x78, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x75, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x46, 0x75, 0x72, 0x79, 0x22, 0x3b, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x46, + 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 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, 0x46, 0x69, 0x73, 0x68, 0x53, 0x6b, 0x69, 0x6c, 0x6c, + 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x92, 0x01, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, + 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 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, 0x47, 0x0a, 0x17, 0x44, 0x42, + 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 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, 0x46, + 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x4f, 0x64, 0x64, 0x73, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, + 0x6e, 0x65, 0x47, 0x6f, 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, 0x4f, 0x0a, 0x1b, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, + 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x12, 0x30, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, + 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x52, 0x03, + 0x41, 0x72, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, + 0x65, 0x47, 0x6f, 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, 0x4b, 0x0a, 0x19, 0x44, 0x42, 0x5f, 0x46, 0x6f, + 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 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, 0x46, 0x6f, + 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x03, 0x41, 0x72, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x1d, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, + 0x75, 0x6e, 0x65, 0x47, 0x6f, 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, 0x5d, 0x0a, 0x22, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x37, + 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, + 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xdf, 0x02, 0x0a, 0x0d, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x74, 0x61, + 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, 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, 0x61, 0x72, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, 0x12, 0x1e, 0x0a, + 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x12, 0x1a, 0x0a, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x33, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x33, 0x12, + 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x22, 0x3d, 0x0a, 0x12, 0x44, 0x42, 0x5f, + 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 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, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4c, 0x56, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x11, 0x44, 0x42, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, 0x79, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, + 0x65, 0x44, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, + 0x44, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, 0x75, 0x6d, 0x22, + 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, + 0x70, 0x74, 0x63, 0x79, 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, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, + 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfb, 0x02, 0x0a, 0x0f, 0x44, 0x42, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x49, 0x6e, + 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 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, 0x07, 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, 0x08, 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, 0x09, 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, 0x0a, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, + 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 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, 0xf5, 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, 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, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, 0x64, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, + 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x6b, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x65, 0x73, + 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, + 0x77, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x77, 0x49, + 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, + 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, + 0x4b, 0x69, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, + 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, + 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x42, + 0x65, 0x74, 0x44, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x42, 0x65, 0x74, + 0x44, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x6f, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x03, 0x42, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x69, 0x18, 0x1a, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x02, 0x41, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x18, + 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, + 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x52, + 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1f, + 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, + 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, 0x67, 0x18, 0x21, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, + 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, + 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x03, 0x28, 0x03, 0x52, + 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x24, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x54, + 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x54, 0x61, + 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x61, 0x6d, 0x65, + 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, + 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, + 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x50, + 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x2c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x24, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, + 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, + 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x2f, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, 0x65, + 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, + 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, + 0x61, 0x74, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, + 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4a, 0x61, 0x63, + 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x36, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1e, 0x0a, + 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x37, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, + 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x38, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x49, + 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x18, 0x3b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, + 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, + 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, + 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, + 0x28, 0x0a, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, + 0x65, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, + 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x72, 0x61, + 0x77, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x12, 0x1c, 0x0a, + 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x46, + 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x40, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x12, + 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x41, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x43, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, 0x44, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, + 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x18, 0x45, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, + 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x61, 0x78, + 0x18, 0x46, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x65, 0x67, 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, 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, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x4a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 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, 0xc1, 0x05, 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, 0x12, 0x3d, 0x0a, 0x08, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 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, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 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, 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, 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, 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, @@ -11479,543 +12235,75 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 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, 0x5d, 0x0a, 0x22, 0x44, - 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x72, 0x72, 0x61, - 0x79, 0x12, 0x37, 0x0a, 0x03, 0x41, 0x72, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x46, 0x6f, 0x72, 0x74, 0x75, - 0x6e, 0x65, 0x47, 0x6f, 0x64, 0x5f, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xdf, 0x02, 0x0a, 0x0d, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x74, 0x61, 0x72, - 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, 0x61, 0x72, 0x32, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x49, 0x64, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x31, - 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x32, - 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, - 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x54, 0x79, 0x70, 0x65, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, - 0x64, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x33, 0x22, 0x3d, 0x0a, 0x12, - 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 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, 0x47, 0x61, 0x6d, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x4c, 0x56, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0x75, 0x0a, 0x11, 0x44, - 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, 0x79, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, - 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x4e, - 0x75, 0x6d, 0x22, 0x45, 0x0a, 0x16, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x61, 0x6e, - 0x6b, 0x72, 0x75, 0x70, 0x74, 0x63, 0x79, 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, 0x42, 0x61, 0x6e, 0x6b, 0x72, 0x75, - 0x70, 0x74, 0x63, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xfb, 0x02, 0x0a, 0x0f, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, - 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, - 0x09, 0x49, 0x6e, 0x69, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 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, 0x03, 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, 0x04, 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, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, - 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x06, 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, 0x07, 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, 0x08, - 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, - 0x09, 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, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x74, 0x72, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x12, - 0x26, 0x0a, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x49, 0x6e, 0x69, 0x74, 0x4e, 0x6f, 0x76, - 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x41, 0x0a, 0x14, 0x44, 0x42, 0x5f, 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, 0xf5, 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, 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, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x04, - 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, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x72, 0x65, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x72, 0x65, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x61, - 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x61, - 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, - 0x64, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x41, - 0x64, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x44, 0x65, 0x73, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, 0x75, 0x62, 0x53, 0x68, 0x6f, 0x77, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, - 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x68, 0x6f, 0x77, 0x49, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x68, - 0x6f, 0x77, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, - 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x46, 0x65, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x54, - 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, - 0x6f, 0x77, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x4b, 0x69, 0x63, 0x6b, 0x12, 0x1c, 0x0a, 0x09, - 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x75, - 0x72, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x75, 0x72, 0x6e, 0x12, 0x16, - 0x0a, 0x06, 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x42, 0x65, 0x74, 0x44, 0x65, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x6f, 0x74, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x42, 0x6f, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x69, 0x18, 0x1a, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x41, 0x69, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x61, 0x6e, 0x6b, - 0x65, 0x72, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x4d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x70, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x74, - 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1d, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x03, 0x52, 0x10, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, - 0x0a, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0f, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4a, 0x61, 0x63, 0x6b, - 0x70, 0x6f, 0x74, 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x4a, 0x61, 0x63, 0x6b, 0x70, - 0x6f, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, 0x6d, 0x52, 0x6e, - 0x67, 0x18, 0x21, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4e, 0x75, - 0x6d, 0x52, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x54, 0x61, 0x6b, - 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x52, 0x6f, 0x62, - 0x6f, 0x74, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x6f, - 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x23, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x24, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x42, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x54, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x53, 0x61, 0x6d, 0x65, - 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x53, - 0x61, 0x6d, 0x65, 0x49, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x61, - 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x27, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0e, 0x53, 0x61, 0x6d, 0x65, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x18, 0x28, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x12, 0x1c, 0x0a, 0x09, - 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x2b, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x78, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, - 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x2c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, - 0x4e, 0x75, 0x6d, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x72, 0x75, 0x65, 0x4d, 0x61, 0x6e, 0x12, 0x28, 0x0a, 0x0f, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, - 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x61, 0x74, - 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, - 0x6f, 0x64, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x52, - 0x61, 0x74, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4b, 0x69, 0x6c, 0x6c, 0x69, - 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x65, 0x74, 0x57, 0x61, 0x74, - 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x42, 0x65, - 0x74, 0x57, 0x61, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, - 0x74, 0x74, 0x65, 0x72, 0x79, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4c, 0x6f, 0x74, - 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x35, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x36, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x12, 0x1e, 0x0a, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, 0x18, 0x37, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x4d, 0x69, 0x6e, - 0x12, 0x28, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x38, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, - 0x47, 0x72, 0x61, 0x64, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x18, 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x44, 0x65, 0x64, 0x75, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0b, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x18, 0x3a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x12, 0x28, - 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, - 0x6e, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, - 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x75, - 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x18, 0x3c, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0f, 0x49, 0x6e, 0x74, 0x75, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x6e, 0x4d, - 0x61, 0x78, 0x12, 0x28, 0x0a, 0x0f, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, - 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x42, 0x6f, 0x73, - 0x73, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x44, 0x72, 0x61, 0x77, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, - 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x18, 0x3f, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x12, 0x22, - 0x0a, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x40, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x46, 0x6c, 0x75, 0x63, 0x74, 0x75, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x41, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x69, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x42, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x69, 0x6e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x43, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, 0x65, 0x74, 0x18, - 0x44, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x67, 0x65, 0x42, - 0x65, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x44, 0x72, 0x6f, - 0x70, 0x18, 0x45, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x44, 0x72, 0x6f, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x4d, 0x61, 0x78, 0x18, 0x46, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4e, 0x65, 0x67, 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, 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, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 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, 0xc1, 0x05, - 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, 0x12, 0x3d, 0x0a, 0x08, - 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 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, 0x1a, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 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, 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, 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, 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, + 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, 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, + 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, 0x78, 0x0a, 0x12, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, + 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 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, 0x09, 0x52, 0x09, 0x50, 0x72, 0x6f, + 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x70, 0x44, 0x65, + 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x72, 0x6f, 0x70, 0x44, 0x65, 0x63, + 0x22, 0x47, 0x0a, 0x17, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 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, + 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x4e, 0x65, 0x77, 0x59, 0x65, 0x61, 0x72, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 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, @@ -12075,7 +12363,7 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 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, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, 0x03, 0x41, 0x72, 0x72, 0x22, 0xd8, 0x04, 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, @@ -12086,105 +12374,123 @@ var file_protocol_server_pbdata_proto_rawDesc = []byte{ 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, + 0x64, 0x12, 0x41, 0x0a, 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 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, 0x2e, 0x47, + 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x47, 0x6f, 0x6c, + 0x64, 0x45, 0x78, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x18, 0x07, 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, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 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, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x12, 0x1c, + 0x0a, 0x09, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 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, 0x0b, 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, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x1a, 0x3a, 0x0a, 0x0c, 0x47, 0x6f, + 0x6c, 0x64, 0x45, 0x78, 0x63, 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, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x45, 0x78, 0x63, 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, 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, 0xad, 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, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x54, 0x69, 0x6d, 0x65, 0x73, 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, @@ -12493,256 +12799,268 @@ func file_protocol_server_pbdata_proto_rawDescGZIP() []byte { return file_protocol_server_pbdata_proto_rawDescData } -var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 156) +var file_protocol_server_pbdata_proto_msgTypes = make([]protoimpl.MessageInfo, 163) var file_protocol_server_pbdata_proto_goTypes = []interface{}{ - (*DB_ActSign)(nil), // 0: server.DB_ActSign - (*DB_ActSignArray)(nil), // 1: server.DB_ActSignArray - (*DB_Activity1)(nil), // 2: server.DB_Activity1 - (*DB_Activity1Array)(nil), // 3: server.DB_Activity1Array - (*DB_AnimalColor)(nil), // 4: server.DB_AnimalColor - (*DB_AnimalColorArray)(nil), // 5: server.DB_AnimalColorArray - (*DB_ArtilleryRate)(nil), // 6: server.DB_ArtilleryRate - (*DB_ArtilleryRateArray)(nil), // 7: server.DB_ArtilleryRateArray - (*DB_ArtillerySkin)(nil), // 8: server.DB_ArtillerySkin - (*DB_ArtillerySkinArray)(nil), // 9: server.DB_ArtillerySkinArray - (*DB_BlackWhite)(nil), // 10: server.DB_BlackWhite - (*DB_BlackWhiteArray)(nil), // 11: server.DB_BlackWhiteArray - (*DB_CardsJD)(nil), // 12: server.DB_CardsJD - (*DB_CardsJDArray)(nil), // 13: server.DB_CardsJDArray - (*DB_CardsYuLe)(nil), // 14: server.DB_CardsYuLe - (*DB_CardsYuLeArray)(nil), // 15: server.DB_CardsYuLeArray - (*DB_ChessBilledRules)(nil), // 16: server.DB_ChessBilledRules - (*DB_ChessBilledRulesArray)(nil), // 17: server.DB_ChessBilledRulesArray - (*DB_ChessMatchRules)(nil), // 18: server.DB_ChessMatchRules - (*DB_ChessMatchRulesArray)(nil), // 19: server.DB_ChessMatchRulesArray - (*DB_ChessRank)(nil), // 20: server.DB_ChessRank - (*DB_ChessRankArray)(nil), // 21: server.DB_ChessRankArray - (*DB_ClientVer)(nil), // 22: server.DB_ClientVer - (*DB_ClientVerArray)(nil), // 23: server.DB_ClientVerArray - (*DB_CollectBox)(nil), // 24: server.DB_CollectBox - (*DB_CollectBoxArray)(nil), // 25: server.DB_CollectBoxArray - (*DB_CollectBoxGain)(nil), // 26: server.DB_CollectBoxGain - (*DB_CollectBoxGainArray)(nil), // 27: server.DB_CollectBoxGainArray - (*DB_CrashSearch)(nil), // 28: server.DB_CrashSearch - (*DB_CrashSearchArray)(nil), // 29: server.DB_CrashSearchArray - (*DB_Createroom)(nil), // 30: server.DB_Createroom - (*DB_CreateroomArray)(nil), // 31: server.DB_CreateroomArray - (*DB_Fish)(nil), // 32: server.DB_Fish - (*DB_FishArray)(nil), // 33: server.DB_FishArray - (*DB_FishOut)(nil), // 34: server.DB_FishOut - (*DB_FishOutArray)(nil), // 35: server.DB_FishOutArray - (*DB_FishPath)(nil), // 36: server.DB_FishPath - (*DB_FishPathArray)(nil), // 37: server.DB_FishPathArray - (*DB_FishRoom)(nil), // 38: server.DB_FishRoom - (*DB_FishRoomArray)(nil), // 39: server.DB_FishRoomArray - (*DB_FishSkill)(nil), // 40: server.DB_FishSkill - (*DB_FishSkillArray)(nil), // 41: server.DB_FishSkillArray - (*DB_FortuneGod_Odds)(nil), // 42: server.DB_FortuneGod_Odds - (*DB_FortuneGod_OddsArray)(nil), // 43: server.DB_FortuneGod_OddsArray - (*DB_FortuneGod_TurnRate)(nil), // 44: server.DB_FortuneGod_TurnRate - (*DB_FortuneGod_TurnRateArray)(nil), // 45: server.DB_FortuneGod_TurnRateArray - (*DB_FortuneGod_Weight)(nil), // 46: server.DB_FortuneGod_Weight - (*DB_FortuneGod_WeightArray)(nil), // 47: server.DB_FortuneGod_WeightArray - (*DB_FortuneGod_WeightCondition)(nil), // 48: server.DB_FortuneGod_WeightCondition - (*DB_FortuneGod_WeightConditionArray)(nil), // 49: server.DB_FortuneGod_WeightConditionArray - (*DB_GamMatchLV)(nil), // 50: server.DB_GamMatchLV - (*DB_GamMatchLVArray)(nil), // 51: server.DB_GamMatchLVArray - (*DB_GameBankruptcy)(nil), // 52: server.DB_GameBankruptcy - (*DB_GameBankruptcyArray)(nil), // 53: server.DB_GameBankruptcyArray - (*DB_GameCoinPool)(nil), // 54: server.DB_GameCoinPool - (*DB_GameCoinPoolArray)(nil), // 55: server.DB_GameCoinPoolArray - (*DB_GameFree)(nil), // 56: server.DB_GameFree - (*DB_GameFreeArray)(nil), // 57: server.DB_GameFreeArray - (*DB_GameItem)(nil), // 58: server.DB_GameItem - (*DB_GameItemArray)(nil), // 59: server.DB_GameItemArray - (*DB_GameMatchLevel)(nil), // 60: server.DB_GameMatchLevel - (*DB_GameMatchLevelArray)(nil), // 61: server.DB_GameMatchLevelArray - (*DB_GameRule)(nil), // 62: server.DB_GameRule - (*DB_GameRuleArray)(nil), // 63: server.DB_GameRuleArray - (*DB_GameSubsidy)(nil), // 64: server.DB_GameSubsidy - (*DB_GameSubsidyArray)(nil), // 65: server.DB_GameSubsidyArray - (*DB_Game_Drop)(nil), // 66: server.DB_Game_Drop - (*DB_Game_DropArray)(nil), // 67: server.DB_Game_DropArray - (*DB_Game_Introduction)(nil), // 68: server.DB_Game_Introduction - (*DB_Game_IntroductionArray)(nil), // 69: server.DB_Game_IntroductionArray - (*DB_Game_Pet)(nil), // 70: server.DB_Game_Pet - (*DB_Game_PetArray)(nil), // 71: server.DB_Game_PetArray - (*DB_Game_Role)(nil), // 72: server.DB_Game_Role - (*DB_Game_RoleArray)(nil), // 73: server.DB_Game_RoleArray - (*DB_GiftBox)(nil), // 74: server.DB_GiftBox - (*DB_GiftBoxArray)(nil), // 75: server.DB_GiftBoxArray - (*DB_GiftCard)(nil), // 76: server.DB_GiftCard - (*DB_GiftCardArray)(nil), // 77: server.DB_GiftCardArray - (*DB_IceAgeElementRate)(nil), // 78: server.DB_IceAgeElementRate - (*DB_IceAgeElementRateArray)(nil), // 79: server.DB_IceAgeElementRateArray - (*DB_Legend_Odds)(nil), // 80: server.DB_Legend_Odds - (*DB_Legend_OddsArray)(nil), // 81: server.DB_Legend_OddsArray - (*DB_Legend_TurnRate)(nil), // 82: server.DB_Legend_TurnRate - (*DB_Legend_TurnRateArray)(nil), // 83: server.DB_Legend_TurnRateArray - (*DB_Legend_Weight)(nil), // 84: server.DB_Legend_Weight - (*DB_Legend_WeightArray)(nil), // 85: server.DB_Legend_WeightArray - (*DB_Legend_WeightCondition)(nil), // 86: server.DB_Legend_WeightCondition - (*DB_Legend_WeightConditionArray)(nil), // 87: server.DB_Legend_WeightConditionArray - (*DB_MatchRank)(nil), // 88: server.DB_MatchRank - (*DB_MatchRankArray)(nil), // 89: server.DB_MatchRankArray - (*DB_Name)(nil), // 90: server.DB_Name - (*DB_NameArray)(nil), // 91: server.DB_NameArray - (*DB_NameBoy)(nil), // 92: server.DB_NameBoy - (*DB_NameBoyArray)(nil), // 93: server.DB_NameBoyArray - (*DB_NameGirl)(nil), // 94: server.DB_NameGirl - (*DB_NameGirlArray)(nil), // 95: server.DB_NameGirlArray - (*DB_NewPlayer)(nil), // 96: server.DB_NewPlayer - (*DB_NewPlayerArray)(nil), // 97: server.DB_NewPlayerArray - (*DB_PassShow)(nil), // 98: server.DB_PassShow - (*DB_PassShowArray)(nil), // 99: server.DB_PassShowArray - (*DB_PetSkill)(nil), // 100: server.DB_PetSkill - (*DB_PetSkillArray)(nil), // 101: server.DB_PetSkillArray - (*DB_PhoneLottery)(nil), // 102: server.DB_PhoneLottery - (*DB_PhoneLotteryArray)(nil), // 103: server.DB_PhoneLotteryArray - (*DB_PigBank_Diamond)(nil), // 104: server.DB_PigBank_Diamond - (*DB_PigBank_DiamondArray)(nil), // 105: server.DB_PigBank_DiamondArray - (*DB_Pigbank_Prop)(nil), // 106: server.DB_Pigbank_Prop - (*DB_Pigbank_PropArray)(nil), // 107: server.DB_Pigbank_PropArray - (*DB_PlayerExp)(nil), // 108: server.DB_PlayerExp - (*DB_PlayerExpArray)(nil), // 109: server.DB_PlayerExpArray - (*DB_PlayerType)(nil), // 110: server.DB_PlayerType - (*DB_PlayerTypeArray)(nil), // 111: server.DB_PlayerTypeArray - (*DB_PotOdd)(nil), // 112: server.DB_PotOdd - (*DB_PotOddArray)(nil), // 113: server.DB_PotOddArray - (*DB_PropExchange)(nil), // 114: server.DB_PropExchange - (*DB_PropExchangeArray)(nil), // 115: server.DB_PropExchangeArray - (*DB_RankCycle)(nil), // 116: server.DB_RankCycle - (*DB_RankCycleArray)(nil), // 117: server.DB_RankCycleArray - (*DB_RankLevel)(nil), // 118: server.DB_RankLevel - (*DB_RankLevelArray)(nil), // 119: server.DB_RankLevelArray - (*DB_RankReward)(nil), // 120: server.DB_RankReward - (*DB_RankRewardArray)(nil), // 121: server.DB_RankRewardArray - (*DB_Sensitive_Words)(nil), // 122: server.DB_Sensitive_Words - (*DB_Sensitive_WordsArray)(nil), // 123: server.DB_Sensitive_WordsArray - (*DB_Skin)(nil), // 124: server.DB_Skin - (*DB_SkinArray)(nil), // 125: server.DB_SkinArray - (*DB_SkinLevel)(nil), // 126: server.DB_SkinLevel - (*DB_SkinLevelArray)(nil), // 127: server.DB_SkinLevelArray - (*DB_SlotRateWeight)(nil), // 128: server.DB_SlotRateWeight - (*DB_SlotRateWeightArray)(nil), // 129: server.DB_SlotRateWeightArray - (*DB_SystemChance)(nil), // 130: server.DB_SystemChance - (*DB_SystemChanceArray)(nil), // 131: server.DB_SystemChanceArray - (*DB_Task)(nil), // 132: server.DB_Task - (*DB_TaskArray)(nil), // 133: server.DB_TaskArray - (*DB_ThirdPlatformGameMapping)(nil), // 134: server.DB_ThirdPlatformGameMapping - (*DB_ThirdPlatformGameMappingArray)(nil), // 135: server.DB_ThirdPlatformGameMappingArray - (*DB_Tips)(nil), // 136: server.DB_Tips - (*DB_TipsArray)(nil), // 137: server.DB_TipsArray - (*DB_VIP)(nil), // 138: server.DB_VIP - (*DB_VIPArray)(nil), // 139: server.DB_VIPArray - (*DB_VIPShow)(nil), // 140: server.DB_VIPShow - (*DB_VIPShowArray)(nil), // 141: server.DB_VIPShowArray - nil, // 142: server.DB_CollectBox.ItemIDEntry - nil, // 143: server.DB_GameItem.GainEntry - nil, // 144: server.DB_GameItem.CompoundEntry - nil, // 145: server.DB_GiftBox.ItemIDEntry - nil, // 146: server.DB_GiftCard.RewardsEntry - nil, // 147: server.DB_GiftCard.DayRewardsEntry - nil, // 148: server.DB_PetSkill.ItemConsumEntry - nil, // 149: server.DB_PropExchange.CostEntry - nil, // 150: server.DB_PropExchange.GainEntry - nil, // 151: server.DB_Skin.UnlockItemEntry - nil, // 152: server.DB_SkinLevel.UpItemEntry - nil, // 153: server.DB_Task.AwardEntry - nil, // 154: server.DB_VIP.Privilege7Entry - nil, // 155: server.DB_VIP.AwardEntry + (*DB_ACTPushCoin)(nil), // 0: server.DB_ACTPushCoin + (*DB_ACTPushCoinArray)(nil), // 1: server.DB_ACTPushCoinArray + (*DB_ActSign)(nil), // 2: server.DB_ActSign + (*DB_ActSignArray)(nil), // 3: server.DB_ActSignArray + (*DB_Activity1)(nil), // 4: server.DB_Activity1 + (*DB_Activity1Array)(nil), // 5: server.DB_Activity1Array + (*DB_AnimalColor)(nil), // 6: server.DB_AnimalColor + (*DB_AnimalColorArray)(nil), // 7: server.DB_AnimalColorArray + (*DB_ArtilleryRate)(nil), // 8: server.DB_ArtilleryRate + (*DB_ArtilleryRateArray)(nil), // 9: server.DB_ArtilleryRateArray + (*DB_ArtillerySkin)(nil), // 10: server.DB_ArtillerySkin + (*DB_ArtillerySkinArray)(nil), // 11: server.DB_ArtillerySkinArray + (*DB_BlackWhite)(nil), // 12: server.DB_BlackWhite + (*DB_BlackWhiteArray)(nil), // 13: server.DB_BlackWhiteArray + (*DB_CardsJD)(nil), // 14: server.DB_CardsJD + (*DB_CardsJDArray)(nil), // 15: server.DB_CardsJDArray + (*DB_CardsYuLe)(nil), // 16: server.DB_CardsYuLe + (*DB_CardsYuLeArray)(nil), // 17: server.DB_CardsYuLeArray + (*DB_ChessBilledRules)(nil), // 18: server.DB_ChessBilledRules + (*DB_ChessBilledRulesArray)(nil), // 19: server.DB_ChessBilledRulesArray + (*DB_ChessMatchRules)(nil), // 20: server.DB_ChessMatchRules + (*DB_ChessMatchRulesArray)(nil), // 21: server.DB_ChessMatchRulesArray + (*DB_ChessRank)(nil), // 22: server.DB_ChessRank + (*DB_ChessRankArray)(nil), // 23: server.DB_ChessRankArray + (*DB_ClientVer)(nil), // 24: server.DB_ClientVer + (*DB_ClientVerArray)(nil), // 25: server.DB_ClientVerArray + (*DB_CollectBox)(nil), // 26: server.DB_CollectBox + (*DB_CollectBoxArray)(nil), // 27: server.DB_CollectBoxArray + (*DB_CollectBoxGain)(nil), // 28: server.DB_CollectBoxGain + (*DB_CollectBoxGainArray)(nil), // 29: server.DB_CollectBoxGainArray + (*DB_CrashSearch)(nil), // 30: server.DB_CrashSearch + (*DB_CrashSearchArray)(nil), // 31: server.DB_CrashSearchArray + (*DB_Createroom)(nil), // 32: server.DB_Createroom + (*DB_CreateroomArray)(nil), // 33: server.DB_CreateroomArray + (*DB_Fish)(nil), // 34: server.DB_Fish + (*DB_FishArray)(nil), // 35: server.DB_FishArray + (*DB_FishOut)(nil), // 36: server.DB_FishOut + (*DB_FishOutArray)(nil), // 37: server.DB_FishOutArray + (*DB_FishPath)(nil), // 38: server.DB_FishPath + (*DB_FishPathArray)(nil), // 39: server.DB_FishPathArray + (*DB_FishRoom)(nil), // 40: server.DB_FishRoom + (*DB_FishRoomArray)(nil), // 41: server.DB_FishRoomArray + (*DB_FishSkill)(nil), // 42: server.DB_FishSkill + (*DB_FishSkillArray)(nil), // 43: server.DB_FishSkillArray + (*DB_FortuneGod_Odds)(nil), // 44: server.DB_FortuneGod_Odds + (*DB_FortuneGod_OddsArray)(nil), // 45: server.DB_FortuneGod_OddsArray + (*DB_FortuneGod_TurnRate)(nil), // 46: server.DB_FortuneGod_TurnRate + (*DB_FortuneGod_TurnRateArray)(nil), // 47: server.DB_FortuneGod_TurnRateArray + (*DB_FortuneGod_Weight)(nil), // 48: server.DB_FortuneGod_Weight + (*DB_FortuneGod_WeightArray)(nil), // 49: server.DB_FortuneGod_WeightArray + (*DB_FortuneGod_WeightCondition)(nil), // 50: server.DB_FortuneGod_WeightCondition + (*DB_FortuneGod_WeightConditionArray)(nil), // 51: server.DB_FortuneGod_WeightConditionArray + (*DB_GamMatchLV)(nil), // 52: server.DB_GamMatchLV + (*DB_GamMatchLVArray)(nil), // 53: server.DB_GamMatchLVArray + (*DB_GameBankruptcy)(nil), // 54: server.DB_GameBankruptcy + (*DB_GameBankruptcyArray)(nil), // 55: server.DB_GameBankruptcyArray + (*DB_GameCoinPool)(nil), // 56: server.DB_GameCoinPool + (*DB_GameCoinPoolArray)(nil), // 57: server.DB_GameCoinPoolArray + (*DB_GameFree)(nil), // 58: server.DB_GameFree + (*DB_GameFreeArray)(nil), // 59: server.DB_GameFreeArray + (*DB_GameItem)(nil), // 60: server.DB_GameItem + (*DB_GameItemArray)(nil), // 61: server.DB_GameItemArray + (*DB_GameMatchLevel)(nil), // 62: server.DB_GameMatchLevel + (*DB_GameMatchLevelArray)(nil), // 63: server.DB_GameMatchLevelArray + (*DB_GameRule)(nil), // 64: server.DB_GameRule + (*DB_GameRuleArray)(nil), // 65: server.DB_GameRuleArray + (*DB_GameSubsidy)(nil), // 66: server.DB_GameSubsidy + (*DB_GameSubsidyArray)(nil), // 67: server.DB_GameSubsidyArray + (*DB_Game_Drop)(nil), // 68: server.DB_Game_Drop + (*DB_Game_DropArray)(nil), // 69: server.DB_Game_DropArray + (*DB_Game_Introduction)(nil), // 70: server.DB_Game_Introduction + (*DB_Game_IntroductionArray)(nil), // 71: server.DB_Game_IntroductionArray + (*DB_Game_Pet)(nil), // 72: server.DB_Game_Pet + (*DB_Game_PetArray)(nil), // 73: server.DB_Game_PetArray + (*DB_Game_Role)(nil), // 74: server.DB_Game_Role + (*DB_Game_RoleArray)(nil), // 75: server.DB_Game_RoleArray + (*DB_GiftBox)(nil), // 76: server.DB_GiftBox + (*DB_GiftBoxArray)(nil), // 77: server.DB_GiftBoxArray + (*DB_GiftCard)(nil), // 78: server.DB_GiftCard + (*DB_GiftCardArray)(nil), // 79: server.DB_GiftCardArray + (*DB_IceAgeElementRate)(nil), // 80: server.DB_IceAgeElementRate + (*DB_IceAgeElementRateArray)(nil), // 81: server.DB_IceAgeElementRateArray + (*DB_Legend_Odds)(nil), // 82: server.DB_Legend_Odds + (*DB_Legend_OddsArray)(nil), // 83: server.DB_Legend_OddsArray + (*DB_Legend_TurnRate)(nil), // 84: server.DB_Legend_TurnRate + (*DB_Legend_TurnRateArray)(nil), // 85: server.DB_Legend_TurnRateArray + (*DB_Legend_Weight)(nil), // 86: server.DB_Legend_Weight + (*DB_Legend_WeightArray)(nil), // 87: server.DB_Legend_WeightArray + (*DB_Legend_WeightCondition)(nil), // 88: server.DB_Legend_WeightCondition + (*DB_Legend_WeightConditionArray)(nil), // 89: server.DB_Legend_WeightConditionArray + (*DB_MatchRank)(nil), // 90: server.DB_MatchRank + (*DB_MatchRankArray)(nil), // 91: server.DB_MatchRankArray + (*DB_Name)(nil), // 92: server.DB_Name + (*DB_NameArray)(nil), // 93: server.DB_NameArray + (*DB_NameBoy)(nil), // 94: server.DB_NameBoy + (*DB_NameBoyArray)(nil), // 95: server.DB_NameBoyArray + (*DB_NameGirl)(nil), // 96: server.DB_NameGirl + (*DB_NameGirlArray)(nil), // 97: server.DB_NameGirlArray + (*DB_NewPlayer)(nil), // 98: server.DB_NewPlayer + (*DB_NewPlayerArray)(nil), // 99: server.DB_NewPlayerArray + (*DB_NewYearActivity)(nil), // 100: server.DB_NewYearActivity + (*DB_NewYearActivityArray)(nil), // 101: server.DB_NewYearActivityArray + (*DB_PassShow)(nil), // 102: server.DB_PassShow + (*DB_PassShowArray)(nil), // 103: server.DB_PassShowArray + (*DB_PetSkill)(nil), // 104: server.DB_PetSkill + (*DB_PetSkillArray)(nil), // 105: server.DB_PetSkillArray + (*DB_PhoneLottery)(nil), // 106: server.DB_PhoneLottery + (*DB_PhoneLotteryArray)(nil), // 107: server.DB_PhoneLotteryArray + (*DB_PigBank_Diamond)(nil), // 108: server.DB_PigBank_Diamond + (*DB_PigBank_DiamondArray)(nil), // 109: server.DB_PigBank_DiamondArray + (*DB_Pigbank_Prop)(nil), // 110: server.DB_Pigbank_Prop + (*DB_Pigbank_PropArray)(nil), // 111: server.DB_Pigbank_PropArray + (*DB_PlayerExp)(nil), // 112: server.DB_PlayerExp + (*DB_PlayerExpArray)(nil), // 113: server.DB_PlayerExpArray + (*DB_PlayerType)(nil), // 114: server.DB_PlayerType + (*DB_PlayerTypeArray)(nil), // 115: server.DB_PlayerTypeArray + (*DB_PotOdd)(nil), // 116: server.DB_PotOdd + (*DB_PotOddArray)(nil), // 117: server.DB_PotOddArray + (*DB_PropExchange)(nil), // 118: server.DB_PropExchange + (*DB_PropExchangeArray)(nil), // 119: server.DB_PropExchangeArray + (*DB_RankCycle)(nil), // 120: server.DB_RankCycle + (*DB_RankCycleArray)(nil), // 121: server.DB_RankCycleArray + (*DB_RankLevel)(nil), // 122: server.DB_RankLevel + (*DB_RankLevelArray)(nil), // 123: server.DB_RankLevelArray + (*DB_RankReward)(nil), // 124: server.DB_RankReward + (*DB_RankRewardArray)(nil), // 125: server.DB_RankRewardArray + (*DB_Sensitive_Words)(nil), // 126: server.DB_Sensitive_Words + (*DB_Sensitive_WordsArray)(nil), // 127: server.DB_Sensitive_WordsArray + (*DB_Skin)(nil), // 128: server.DB_Skin + (*DB_SkinArray)(nil), // 129: server.DB_SkinArray + (*DB_SkinLevel)(nil), // 130: server.DB_SkinLevel + (*DB_SkinLevelArray)(nil), // 131: server.DB_SkinLevelArray + (*DB_SlotRateWeight)(nil), // 132: server.DB_SlotRateWeight + (*DB_SlotRateWeightArray)(nil), // 133: server.DB_SlotRateWeightArray + (*DB_SystemChance)(nil), // 134: server.DB_SystemChance + (*DB_SystemChanceArray)(nil), // 135: server.DB_SystemChanceArray + (*DB_Task)(nil), // 136: server.DB_Task + (*DB_TaskArray)(nil), // 137: server.DB_TaskArray + (*DB_ThirdPlatformGameMapping)(nil), // 138: server.DB_ThirdPlatformGameMapping + (*DB_ThirdPlatformGameMappingArray)(nil), // 139: server.DB_ThirdPlatformGameMappingArray + (*DB_Tips)(nil), // 140: server.DB_Tips + (*DB_TipsArray)(nil), // 141: server.DB_TipsArray + (*DB_VIP)(nil), // 142: server.DB_VIP + (*DB_VIPArray)(nil), // 143: server.DB_VIPArray + (*DB_VIPShow)(nil), // 144: server.DB_VIPShow + (*DB_VIPShowArray)(nil), // 145: server.DB_VIPShowArray + nil, // 146: server.DB_ACTPushCoin.GainEntry + nil, // 147: server.DB_CollectBox.ItemIDEntry + nil, // 148: server.DB_GameItem.GainEntry + nil, // 149: server.DB_GameItem.CompoundEntry + nil, // 150: server.DB_GiftBox.ItemIDEntry + nil, // 151: server.DB_GiftCard.RewardsEntry + nil, // 152: server.DB_GiftCard.DayRewardsEntry + nil, // 153: server.DB_PetSkill.ItemConsumEntry + nil, // 154: server.DB_PigBank_Diamond.GoldExcEntry + nil, // 155: server.DB_PigBank_Diamond.DiamondExcEntry + nil, // 156: server.DB_PropExchange.CostEntry + nil, // 157: server.DB_PropExchange.GainEntry + nil, // 158: server.DB_Skin.UnlockItemEntry + nil, // 159: server.DB_SkinLevel.UpItemEntry + nil, // 160: server.DB_Task.AwardEntry + nil, // 161: server.DB_VIP.Privilege7Entry + nil, // 162: server.DB_VIP.AwardEntry } var file_protocol_server_pbdata_proto_depIdxs = []int32{ - 0, // 0: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign - 2, // 1: server.DB_Activity1Array.Arr:type_name -> server.DB_Activity1 - 4, // 2: server.DB_AnimalColorArray.Arr:type_name -> server.DB_AnimalColor - 6, // 3: server.DB_ArtilleryRateArray.Arr:type_name -> server.DB_ArtilleryRate - 8, // 4: server.DB_ArtillerySkinArray.Arr:type_name -> server.DB_ArtillerySkin - 10, // 5: server.DB_BlackWhiteArray.Arr:type_name -> server.DB_BlackWhite - 12, // 6: server.DB_CardsJDArray.Arr:type_name -> server.DB_CardsJD - 14, // 7: server.DB_CardsYuLeArray.Arr:type_name -> server.DB_CardsYuLe - 16, // 8: server.DB_ChessBilledRulesArray.Arr:type_name -> server.DB_ChessBilledRules - 18, // 9: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules - 20, // 10: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank - 22, // 11: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer - 142, // 12: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry - 24, // 13: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox - 26, // 14: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain - 28, // 15: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch - 30, // 16: server.DB_CreateroomArray.Arr:type_name -> server.DB_Createroom - 32, // 17: server.DB_FishArray.Arr:type_name -> server.DB_Fish - 34, // 18: server.DB_FishOutArray.Arr:type_name -> server.DB_FishOut - 36, // 19: server.DB_FishPathArray.Arr:type_name -> server.DB_FishPath - 38, // 20: server.DB_FishRoomArray.Arr:type_name -> server.DB_FishRoom - 40, // 21: server.DB_FishSkillArray.Arr:type_name -> server.DB_FishSkill - 42, // 22: server.DB_FortuneGod_OddsArray.Arr:type_name -> server.DB_FortuneGod_Odds - 44, // 23: server.DB_FortuneGod_TurnRateArray.Arr:type_name -> server.DB_FortuneGod_TurnRate - 46, // 24: server.DB_FortuneGod_WeightArray.Arr:type_name -> server.DB_FortuneGod_Weight - 48, // 25: server.DB_FortuneGod_WeightConditionArray.Arr:type_name -> server.DB_FortuneGod_WeightCondition - 50, // 26: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV - 52, // 27: server.DB_GameBankruptcyArray.Arr:type_name -> server.DB_GameBankruptcy - 54, // 28: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool - 56, // 29: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree - 143, // 30: server.DB_GameItem.Gain:type_name -> server.DB_GameItem.GainEntry - 144, // 31: server.DB_GameItem.Compound:type_name -> server.DB_GameItem.CompoundEntry - 58, // 32: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem - 60, // 33: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel - 62, // 34: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule - 64, // 35: server.DB_GameSubsidyArray.Arr:type_name -> server.DB_GameSubsidy - 66, // 36: server.DB_Game_DropArray.Arr:type_name -> server.DB_Game_Drop - 68, // 37: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction - 70, // 38: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet - 72, // 39: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role - 145, // 40: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry - 74, // 41: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox - 146, // 42: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry - 147, // 43: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry - 76, // 44: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard - 78, // 45: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate - 80, // 46: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds - 82, // 47: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate - 84, // 48: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight - 86, // 49: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition - 88, // 50: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank - 90, // 51: server.DB_NameArray.Arr:type_name -> server.DB_Name - 92, // 52: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy - 94, // 53: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl - 96, // 54: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer - 98, // 55: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow - 148, // 56: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry - 100, // 57: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill - 102, // 58: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery - 104, // 59: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond - 106, // 60: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop - 108, // 61: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp - 110, // 62: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType - 112, // 63: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd - 149, // 64: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry - 150, // 65: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry - 114, // 66: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange - 116, // 67: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle - 118, // 68: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel - 120, // 69: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward - 122, // 70: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words - 151, // 71: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry - 124, // 72: server.DB_SkinArray.Arr:type_name -> server.DB_Skin - 152, // 73: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry - 126, // 74: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel - 128, // 75: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight - 130, // 76: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance - 153, // 77: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry - 132, // 78: server.DB_TaskArray.Arr:type_name -> server.DB_Task - 134, // 79: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping - 136, // 80: server.DB_TipsArray.Arr:type_name -> server.DB_Tips - 154, // 81: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry - 155, // 82: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry - 138, // 83: server.DB_VIPArray.Arr:type_name -> server.DB_VIP - 140, // 84: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow - 85, // [85:85] is the sub-list for method output_type - 85, // [85:85] is the sub-list for method input_type - 85, // [85:85] is the sub-list for extension type_name - 85, // [85:85] is the sub-list for extension extendee - 0, // [0:85] is the sub-list for field type_name + 146, // 0: server.DB_ACTPushCoin.Gain:type_name -> server.DB_ACTPushCoin.GainEntry + 0, // 1: server.DB_ACTPushCoinArray.Arr:type_name -> server.DB_ACTPushCoin + 2, // 2: server.DB_ActSignArray.Arr:type_name -> server.DB_ActSign + 4, // 3: server.DB_Activity1Array.Arr:type_name -> server.DB_Activity1 + 6, // 4: server.DB_AnimalColorArray.Arr:type_name -> server.DB_AnimalColor + 8, // 5: server.DB_ArtilleryRateArray.Arr:type_name -> server.DB_ArtilleryRate + 10, // 6: server.DB_ArtillerySkinArray.Arr:type_name -> server.DB_ArtillerySkin + 12, // 7: server.DB_BlackWhiteArray.Arr:type_name -> server.DB_BlackWhite + 14, // 8: server.DB_CardsJDArray.Arr:type_name -> server.DB_CardsJD + 16, // 9: server.DB_CardsYuLeArray.Arr:type_name -> server.DB_CardsYuLe + 18, // 10: server.DB_ChessBilledRulesArray.Arr:type_name -> server.DB_ChessBilledRules + 20, // 11: server.DB_ChessMatchRulesArray.Arr:type_name -> server.DB_ChessMatchRules + 22, // 12: server.DB_ChessRankArray.Arr:type_name -> server.DB_ChessRank + 24, // 13: server.DB_ClientVerArray.Arr:type_name -> server.DB_ClientVer + 147, // 14: server.DB_CollectBox.ItemID:type_name -> server.DB_CollectBox.ItemIDEntry + 26, // 15: server.DB_CollectBoxArray.Arr:type_name -> server.DB_CollectBox + 28, // 16: server.DB_CollectBoxGainArray.Arr:type_name -> server.DB_CollectBoxGain + 30, // 17: server.DB_CrashSearchArray.Arr:type_name -> server.DB_CrashSearch + 32, // 18: server.DB_CreateroomArray.Arr:type_name -> server.DB_Createroom + 34, // 19: server.DB_FishArray.Arr:type_name -> server.DB_Fish + 36, // 20: server.DB_FishOutArray.Arr:type_name -> server.DB_FishOut + 38, // 21: server.DB_FishPathArray.Arr:type_name -> server.DB_FishPath + 40, // 22: server.DB_FishRoomArray.Arr:type_name -> server.DB_FishRoom + 42, // 23: server.DB_FishSkillArray.Arr:type_name -> server.DB_FishSkill + 44, // 24: server.DB_FortuneGod_OddsArray.Arr:type_name -> server.DB_FortuneGod_Odds + 46, // 25: server.DB_FortuneGod_TurnRateArray.Arr:type_name -> server.DB_FortuneGod_TurnRate + 48, // 26: server.DB_FortuneGod_WeightArray.Arr:type_name -> server.DB_FortuneGod_Weight + 50, // 27: server.DB_FortuneGod_WeightConditionArray.Arr:type_name -> server.DB_FortuneGod_WeightCondition + 52, // 28: server.DB_GamMatchLVArray.Arr:type_name -> server.DB_GamMatchLV + 54, // 29: server.DB_GameBankruptcyArray.Arr:type_name -> server.DB_GameBankruptcy + 56, // 30: server.DB_GameCoinPoolArray.Arr:type_name -> server.DB_GameCoinPool + 58, // 31: server.DB_GameFreeArray.Arr:type_name -> server.DB_GameFree + 148, // 32: server.DB_GameItem.Gain:type_name -> server.DB_GameItem.GainEntry + 149, // 33: server.DB_GameItem.Compound:type_name -> server.DB_GameItem.CompoundEntry + 60, // 34: server.DB_GameItemArray.Arr:type_name -> server.DB_GameItem + 62, // 35: server.DB_GameMatchLevelArray.Arr:type_name -> server.DB_GameMatchLevel + 64, // 36: server.DB_GameRuleArray.Arr:type_name -> server.DB_GameRule + 66, // 37: server.DB_GameSubsidyArray.Arr:type_name -> server.DB_GameSubsidy + 68, // 38: server.DB_Game_DropArray.Arr:type_name -> server.DB_Game_Drop + 70, // 39: server.DB_Game_IntroductionArray.Arr:type_name -> server.DB_Game_Introduction + 72, // 40: server.DB_Game_PetArray.Arr:type_name -> server.DB_Game_Pet + 74, // 41: server.DB_Game_RoleArray.Arr:type_name -> server.DB_Game_Role + 150, // 42: server.DB_GiftBox.ItemID:type_name -> server.DB_GiftBox.ItemIDEntry + 76, // 43: server.DB_GiftBoxArray.Arr:type_name -> server.DB_GiftBox + 151, // 44: server.DB_GiftCard.Rewards:type_name -> server.DB_GiftCard.RewardsEntry + 152, // 45: server.DB_GiftCard.DayRewards:type_name -> server.DB_GiftCard.DayRewardsEntry + 78, // 46: server.DB_GiftCardArray.Arr:type_name -> server.DB_GiftCard + 80, // 47: server.DB_IceAgeElementRateArray.Arr:type_name -> server.DB_IceAgeElementRate + 82, // 48: server.DB_Legend_OddsArray.Arr:type_name -> server.DB_Legend_Odds + 84, // 49: server.DB_Legend_TurnRateArray.Arr:type_name -> server.DB_Legend_TurnRate + 86, // 50: server.DB_Legend_WeightArray.Arr:type_name -> server.DB_Legend_Weight + 88, // 51: server.DB_Legend_WeightConditionArray.Arr:type_name -> server.DB_Legend_WeightCondition + 90, // 52: server.DB_MatchRankArray.Arr:type_name -> server.DB_MatchRank + 92, // 53: server.DB_NameArray.Arr:type_name -> server.DB_Name + 94, // 54: server.DB_NameBoyArray.Arr:type_name -> server.DB_NameBoy + 96, // 55: server.DB_NameGirlArray.Arr:type_name -> server.DB_NameGirl + 98, // 56: server.DB_NewPlayerArray.Arr:type_name -> server.DB_NewPlayer + 100, // 57: server.DB_NewYearActivityArray.Arr:type_name -> server.DB_NewYearActivity + 102, // 58: server.DB_PassShowArray.Arr:type_name -> server.DB_PassShow + 153, // 59: server.DB_PetSkill.ItemConsum:type_name -> server.DB_PetSkill.ItemConsumEntry + 104, // 60: server.DB_PetSkillArray.Arr:type_name -> server.DB_PetSkill + 106, // 61: server.DB_PhoneLotteryArray.Arr:type_name -> server.DB_PhoneLottery + 154, // 62: server.DB_PigBank_Diamond.GoldExc:type_name -> server.DB_PigBank_Diamond.GoldExcEntry + 155, // 63: server.DB_PigBank_Diamond.DiamondExc:type_name -> server.DB_PigBank_Diamond.DiamondExcEntry + 108, // 64: server.DB_PigBank_DiamondArray.Arr:type_name -> server.DB_PigBank_Diamond + 110, // 65: server.DB_Pigbank_PropArray.Arr:type_name -> server.DB_Pigbank_Prop + 112, // 66: server.DB_PlayerExpArray.Arr:type_name -> server.DB_PlayerExp + 114, // 67: server.DB_PlayerTypeArray.Arr:type_name -> server.DB_PlayerType + 116, // 68: server.DB_PotOddArray.Arr:type_name -> server.DB_PotOdd + 156, // 69: server.DB_PropExchange.Cost:type_name -> server.DB_PropExchange.CostEntry + 157, // 70: server.DB_PropExchange.Gain:type_name -> server.DB_PropExchange.GainEntry + 118, // 71: server.DB_PropExchangeArray.Arr:type_name -> server.DB_PropExchange + 120, // 72: server.DB_RankCycleArray.Arr:type_name -> server.DB_RankCycle + 122, // 73: server.DB_RankLevelArray.Arr:type_name -> server.DB_RankLevel + 124, // 74: server.DB_RankRewardArray.Arr:type_name -> server.DB_RankReward + 126, // 75: server.DB_Sensitive_WordsArray.Arr:type_name -> server.DB_Sensitive_Words + 158, // 76: server.DB_Skin.UnlockItem:type_name -> server.DB_Skin.UnlockItemEntry + 128, // 77: server.DB_SkinArray.Arr:type_name -> server.DB_Skin + 159, // 78: server.DB_SkinLevel.UpItem:type_name -> server.DB_SkinLevel.UpItemEntry + 130, // 79: server.DB_SkinLevelArray.Arr:type_name -> server.DB_SkinLevel + 132, // 80: server.DB_SlotRateWeightArray.Arr:type_name -> server.DB_SlotRateWeight + 134, // 81: server.DB_SystemChanceArray.Arr:type_name -> server.DB_SystemChance + 160, // 82: server.DB_Task.Award:type_name -> server.DB_Task.AwardEntry + 136, // 83: server.DB_TaskArray.Arr:type_name -> server.DB_Task + 138, // 84: server.DB_ThirdPlatformGameMappingArray.Arr:type_name -> server.DB_ThirdPlatformGameMapping + 140, // 85: server.DB_TipsArray.Arr:type_name -> server.DB_Tips + 161, // 86: server.DB_VIP.Privilege7:type_name -> server.DB_VIP.Privilege7Entry + 162, // 87: server.DB_VIP.Award:type_name -> server.DB_VIP.AwardEntry + 142, // 88: server.DB_VIPArray.Arr:type_name -> server.DB_VIP + 144, // 89: server.DB_VIPShowArray.Arr:type_name -> server.DB_VIPShow + 90, // [90:90] is the sub-list for method output_type + 90, // [90:90] is the sub-list for method input_type + 90, // [90:90] is the sub-list for extension type_name + 90, // [90:90] is the sub-list for extension extendee + 0, // [0:90] is the sub-list for field type_name } func init() { file_protocol_server_pbdata_proto_init() } @@ -12752,7 +13070,7 @@ func file_protocol_server_pbdata_proto_init() { } if !protoimpl.UnsafeEnabled { file_protocol_server_pbdata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ActSign); i { + switch v := v.(*DB_ACTPushCoin); i { case 0: return &v.state case 1: @@ -12764,7 +13082,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ActSignArray); i { + switch v := v.(*DB_ACTPushCoinArray); i { case 0: return &v.state case 1: @@ -12776,7 +13094,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Activity1); i { + switch v := v.(*DB_ActSign); i { case 0: return &v.state case 1: @@ -12788,7 +13106,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Activity1Array); i { + switch v := v.(*DB_ActSignArray); i { case 0: return &v.state case 1: @@ -12800,7 +13118,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_AnimalColor); i { + switch v := v.(*DB_Activity1); i { case 0: return &v.state case 1: @@ -12812,7 +13130,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_AnimalColorArray); i { + switch v := v.(*DB_Activity1Array); i { case 0: return &v.state case 1: @@ -12824,7 +13142,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtilleryRate); i { + switch v := v.(*DB_AnimalColor); i { case 0: return &v.state case 1: @@ -12836,7 +13154,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtilleryRateArray); i { + switch v := v.(*DB_AnimalColorArray); i { case 0: return &v.state case 1: @@ -12848,7 +13166,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtillerySkin); i { + switch v := v.(*DB_ArtilleryRate); i { case 0: return &v.state case 1: @@ -12860,7 +13178,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ArtillerySkinArray); i { + switch v := v.(*DB_ArtilleryRateArray); i { case 0: return &v.state case 1: @@ -12872,7 +13190,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_BlackWhite); i { + switch v := v.(*DB_ArtillerySkin); i { case 0: return &v.state case 1: @@ -12884,7 +13202,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_BlackWhiteArray); i { + switch v := v.(*DB_ArtillerySkinArray); i { case 0: return &v.state case 1: @@ -12896,7 +13214,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsJD); i { + switch v := v.(*DB_BlackWhite); i { case 0: return &v.state case 1: @@ -12908,7 +13226,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsJDArray); i { + switch v := v.(*DB_BlackWhiteArray); i { case 0: return &v.state case 1: @@ -12920,7 +13238,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsYuLe); i { + switch v := v.(*DB_CardsJD); i { case 0: return &v.state case 1: @@ -12932,7 +13250,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CardsYuLeArray); i { + switch v := v.(*DB_CardsJDArray); i { case 0: return &v.state case 1: @@ -12944,7 +13262,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessBilledRules); i { + switch v := v.(*DB_CardsYuLe); i { case 0: return &v.state case 1: @@ -12956,7 +13274,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessBilledRulesArray); i { + switch v := v.(*DB_CardsYuLeArray); i { case 0: return &v.state case 1: @@ -12968,7 +13286,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessMatchRules); i { + switch v := v.(*DB_ChessBilledRules); i { case 0: return &v.state case 1: @@ -12980,7 +13298,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessMatchRulesArray); i { + switch v := v.(*DB_ChessBilledRulesArray); i { case 0: return &v.state case 1: @@ -12992,7 +13310,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessRank); i { + switch v := v.(*DB_ChessMatchRules); i { case 0: return &v.state case 1: @@ -13004,7 +13322,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ChessRankArray); i { + switch v := v.(*DB_ChessMatchRulesArray); i { case 0: return &v.state case 1: @@ -13016,7 +13334,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ClientVer); i { + switch v := v.(*DB_ChessRank); i { case 0: return &v.state case 1: @@ -13028,7 +13346,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ClientVerArray); i { + switch v := v.(*DB_ChessRankArray); i { case 0: return &v.state case 1: @@ -13040,7 +13358,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBox); i { + switch v := v.(*DB_ClientVer); i { case 0: return &v.state case 1: @@ -13052,7 +13370,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBoxArray); i { + switch v := v.(*DB_ClientVerArray); i { case 0: return &v.state case 1: @@ -13064,7 +13382,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBoxGain); i { + switch v := v.(*DB_CollectBox); i { case 0: return &v.state case 1: @@ -13076,7 +13394,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CollectBoxGainArray); i { + switch v := v.(*DB_CollectBoxArray); i { case 0: return &v.state case 1: @@ -13088,7 +13406,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CrashSearch); i { + switch v := v.(*DB_CollectBoxGain); i { case 0: return &v.state case 1: @@ -13100,7 +13418,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CrashSearchArray); i { + switch v := v.(*DB_CollectBoxGainArray); i { case 0: return &v.state case 1: @@ -13112,7 +13430,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Createroom); i { + switch v := v.(*DB_CrashSearch); i { case 0: return &v.state case 1: @@ -13124,7 +13442,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_CreateroomArray); i { + switch v := v.(*DB_CrashSearchArray); i { case 0: return &v.state case 1: @@ -13136,7 +13454,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Fish); i { + switch v := v.(*DB_Createroom); i { case 0: return &v.state case 1: @@ -13148,7 +13466,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishArray); i { + switch v := v.(*DB_CreateroomArray); i { case 0: return &v.state case 1: @@ -13160,7 +13478,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishOut); i { + switch v := v.(*DB_Fish); i { case 0: return &v.state case 1: @@ -13172,7 +13490,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishOutArray); i { + switch v := v.(*DB_FishArray); i { case 0: return &v.state case 1: @@ -13184,7 +13502,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishPath); i { + switch v := v.(*DB_FishOut); i { case 0: return &v.state case 1: @@ -13196,7 +13514,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishPathArray); i { + switch v := v.(*DB_FishOutArray); i { case 0: return &v.state case 1: @@ -13208,7 +13526,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishRoom); i { + switch v := v.(*DB_FishPath); i { case 0: return &v.state case 1: @@ -13220,7 +13538,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishRoomArray); i { + switch v := v.(*DB_FishPathArray); i { case 0: return &v.state case 1: @@ -13232,7 +13550,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishSkill); i { + switch v := v.(*DB_FishRoom); i { case 0: return &v.state case 1: @@ -13244,7 +13562,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FishSkillArray); i { + switch v := v.(*DB_FishRoomArray); i { case 0: return &v.state case 1: @@ -13256,7 +13574,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_Odds); i { + switch v := v.(*DB_FishSkill); i { case 0: return &v.state case 1: @@ -13268,7 +13586,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_OddsArray); i { + switch v := v.(*DB_FishSkillArray); i { case 0: return &v.state case 1: @@ -13280,7 +13598,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_TurnRate); i { + switch v := v.(*DB_FortuneGod_Odds); i { case 0: return &v.state case 1: @@ -13292,7 +13610,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_TurnRateArray); i { + switch v := v.(*DB_FortuneGod_OddsArray); i { case 0: return &v.state case 1: @@ -13304,7 +13622,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_Weight); i { + switch v := v.(*DB_FortuneGod_TurnRate); i { case 0: return &v.state case 1: @@ -13316,7 +13634,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightArray); i { + switch v := v.(*DB_FortuneGod_TurnRateArray); i { case 0: return &v.state case 1: @@ -13328,7 +13646,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightCondition); i { + switch v := v.(*DB_FortuneGod_Weight); i { case 0: return &v.state case 1: @@ -13340,7 +13658,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_FortuneGod_WeightConditionArray); i { + switch v := v.(*DB_FortuneGod_WeightArray); i { case 0: return &v.state case 1: @@ -13352,7 +13670,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GamMatchLV); i { + switch v := v.(*DB_FortuneGod_WeightCondition); i { case 0: return &v.state case 1: @@ -13364,7 +13682,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GamMatchLVArray); i { + switch v := v.(*DB_FortuneGod_WeightConditionArray); i { case 0: return &v.state case 1: @@ -13376,7 +13694,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameBankruptcy); i { + switch v := v.(*DB_GamMatchLV); i { case 0: return &v.state case 1: @@ -13388,7 +13706,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameBankruptcyArray); i { + switch v := v.(*DB_GamMatchLVArray); i { case 0: return &v.state case 1: @@ -13400,7 +13718,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameCoinPool); i { + switch v := v.(*DB_GameBankruptcy); i { case 0: return &v.state case 1: @@ -13412,7 +13730,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameCoinPoolArray); i { + switch v := v.(*DB_GameBankruptcyArray); i { case 0: return &v.state case 1: @@ -13424,7 +13742,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameFree); i { + switch v := v.(*DB_GameCoinPool); i { case 0: return &v.state case 1: @@ -13436,7 +13754,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameFreeArray); i { + switch v := v.(*DB_GameCoinPoolArray); i { case 0: return &v.state case 1: @@ -13448,7 +13766,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameItem); i { + switch v := v.(*DB_GameFree); i { case 0: return &v.state case 1: @@ -13460,7 +13778,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameItemArray); i { + switch v := v.(*DB_GameFreeArray); i { case 0: return &v.state case 1: @@ -13472,7 +13790,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameMatchLevel); i { + switch v := v.(*DB_GameItem); i { case 0: return &v.state case 1: @@ -13484,7 +13802,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameMatchLevelArray); i { + switch v := v.(*DB_GameItemArray); i { case 0: return &v.state case 1: @@ -13496,7 +13814,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameRule); i { + switch v := v.(*DB_GameMatchLevel); i { case 0: return &v.state case 1: @@ -13508,7 +13826,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameRuleArray); i { + switch v := v.(*DB_GameMatchLevelArray); i { case 0: return &v.state case 1: @@ -13520,7 +13838,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameSubsidy); i { + switch v := v.(*DB_GameRule); i { case 0: return &v.state case 1: @@ -13532,7 +13850,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GameSubsidyArray); i { + switch v := v.(*DB_GameRuleArray); i { case 0: return &v.state case 1: @@ -13544,7 +13862,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Drop); i { + switch v := v.(*DB_GameSubsidy); i { case 0: return &v.state case 1: @@ -13556,7 +13874,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_DropArray); i { + switch v := v.(*DB_GameSubsidyArray); i { case 0: return &v.state case 1: @@ -13568,7 +13886,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Introduction); i { + switch v := v.(*DB_Game_Drop); i { case 0: return &v.state case 1: @@ -13580,7 +13898,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_IntroductionArray); i { + switch v := v.(*DB_Game_DropArray); i { case 0: return &v.state case 1: @@ -13592,7 +13910,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Pet); i { + switch v := v.(*DB_Game_Introduction); i { case 0: return &v.state case 1: @@ -13604,7 +13922,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_PetArray); i { + switch v := v.(*DB_Game_IntroductionArray); i { case 0: return &v.state case 1: @@ -13616,7 +13934,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_Role); i { + switch v := v.(*DB_Game_Pet); i { case 0: return &v.state case 1: @@ -13628,7 +13946,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Game_RoleArray); i { + switch v := v.(*DB_Game_PetArray); i { case 0: return &v.state case 1: @@ -13640,7 +13958,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftBox); i { + switch v := v.(*DB_Game_Role); i { case 0: return &v.state case 1: @@ -13652,7 +13970,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftBoxArray); i { + switch v := v.(*DB_Game_RoleArray); i { case 0: return &v.state case 1: @@ -13664,7 +13982,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftCard); i { + switch v := v.(*DB_GiftBox); i { case 0: return &v.state case 1: @@ -13676,7 +13994,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_GiftCardArray); i { + switch v := v.(*DB_GiftBoxArray); i { case 0: return &v.state case 1: @@ -13688,7 +14006,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_IceAgeElementRate); i { + switch v := v.(*DB_GiftCard); i { case 0: return &v.state case 1: @@ -13700,7 +14018,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_IceAgeElementRateArray); i { + switch v := v.(*DB_GiftCardArray); i { case 0: return &v.state case 1: @@ -13712,7 +14030,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_Odds); i { + switch v := v.(*DB_IceAgeElementRate); i { case 0: return &v.state case 1: @@ -13724,7 +14042,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_OddsArray); i { + switch v := v.(*DB_IceAgeElementRateArray); i { case 0: return &v.state case 1: @@ -13736,7 +14054,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_TurnRate); i { + switch v := v.(*DB_Legend_Odds); i { case 0: return &v.state case 1: @@ -13748,7 +14066,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_TurnRateArray); i { + switch v := v.(*DB_Legend_OddsArray); i { case 0: return &v.state case 1: @@ -13760,7 +14078,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_Weight); i { + switch v := v.(*DB_Legend_TurnRate); i { case 0: return &v.state case 1: @@ -13772,7 +14090,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightArray); i { + switch v := v.(*DB_Legend_TurnRateArray); i { case 0: return &v.state case 1: @@ -13784,7 +14102,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightCondition); i { + switch v := v.(*DB_Legend_Weight); i { case 0: return &v.state case 1: @@ -13796,7 +14114,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Legend_WeightConditionArray); i { + switch v := v.(*DB_Legend_WeightArray); i { case 0: return &v.state case 1: @@ -13808,7 +14126,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_MatchRank); i { + switch v := v.(*DB_Legend_WeightCondition); i { case 0: return &v.state case 1: @@ -13820,7 +14138,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_MatchRankArray); i { + switch v := v.(*DB_Legend_WeightConditionArray); i { case 0: return &v.state case 1: @@ -13832,7 +14150,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Name); i { + switch v := v.(*DB_MatchRank); i { case 0: return &v.state case 1: @@ -13844,7 +14162,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameArray); i { + switch v := v.(*DB_MatchRankArray); i { case 0: return &v.state case 1: @@ -13856,7 +14174,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameBoy); i { + switch v := v.(*DB_Name); i { case 0: return &v.state case 1: @@ -13868,7 +14186,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameBoyArray); i { + switch v := v.(*DB_NameArray); i { case 0: return &v.state case 1: @@ -13880,7 +14198,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameGirl); i { + switch v := v.(*DB_NameBoy); i { case 0: return &v.state case 1: @@ -13892,7 +14210,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NameGirlArray); i { + switch v := v.(*DB_NameBoyArray); i { case 0: return &v.state case 1: @@ -13904,7 +14222,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewPlayer); i { + switch v := v.(*DB_NameGirl); i { case 0: return &v.state case 1: @@ -13916,7 +14234,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_NewPlayerArray); i { + switch v := v.(*DB_NameGirlArray); i { case 0: return &v.state case 1: @@ -13928,7 +14246,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PassShow); i { + switch v := v.(*DB_NewPlayer); i { case 0: return &v.state case 1: @@ -13940,7 +14258,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PassShowArray); i { + switch v := v.(*DB_NewPlayerArray); i { case 0: return &v.state case 1: @@ -13952,7 +14270,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PetSkill); i { + switch v := v.(*DB_NewYearActivity); i { case 0: return &v.state case 1: @@ -13964,7 +14282,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PetSkillArray); i { + switch v := v.(*DB_NewYearActivityArray); i { case 0: return &v.state case 1: @@ -13976,7 +14294,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLottery); i { + switch v := v.(*DB_PassShow); i { case 0: return &v.state case 1: @@ -13988,7 +14306,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PhoneLotteryArray); i { + switch v := v.(*DB_PassShowArray); i { case 0: return &v.state case 1: @@ -14000,7 +14318,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PigBank_Diamond); i { + switch v := v.(*DB_PetSkill); i { case 0: return &v.state case 1: @@ -14012,7 +14330,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PigBank_DiamondArray); i { + switch v := v.(*DB_PetSkillArray); i { case 0: return &v.state case 1: @@ -14024,7 +14342,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Pigbank_Prop); i { + switch v := v.(*DB_PhoneLottery); i { case 0: return &v.state case 1: @@ -14036,7 +14354,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Pigbank_PropArray); i { + switch v := v.(*DB_PhoneLotteryArray); i { case 0: return &v.state case 1: @@ -14048,7 +14366,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExp); i { + switch v := v.(*DB_PigBank_Diamond); i { case 0: return &v.state case 1: @@ -14060,7 +14378,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerExpArray); i { + switch v := v.(*DB_PigBank_DiamondArray); i { case 0: return &v.state case 1: @@ -14072,7 +14390,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerType); i { + switch v := v.(*DB_Pigbank_Prop); i { case 0: return &v.state case 1: @@ -14084,7 +14402,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PlayerTypeArray); i { + switch v := v.(*DB_Pigbank_PropArray); i { case 0: return &v.state case 1: @@ -14096,7 +14414,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOdd); i { + switch v := v.(*DB_PlayerExp); i { case 0: return &v.state case 1: @@ -14108,7 +14426,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PotOddArray); i { + switch v := v.(*DB_PlayerExpArray); i { case 0: return &v.state case 1: @@ -14120,7 +14438,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PropExchange); i { + switch v := v.(*DB_PlayerType); i { case 0: return &v.state case 1: @@ -14132,7 +14450,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_PropExchangeArray); i { + switch v := v.(*DB_PlayerTypeArray); i { case 0: return &v.state case 1: @@ -14144,7 +14462,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycle); i { + switch v := v.(*DB_PotOdd); i { case 0: return &v.state case 1: @@ -14156,7 +14474,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankCycleArray); i { + switch v := v.(*DB_PotOddArray); i { case 0: return &v.state case 1: @@ -14168,7 +14486,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevel); i { + switch v := v.(*DB_PropExchange); i { case 0: return &v.state case 1: @@ -14180,7 +14498,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankLevelArray); i { + switch v := v.(*DB_PropExchangeArray); i { case 0: return &v.state case 1: @@ -14192,7 +14510,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankReward); i { + switch v := v.(*DB_RankCycle); i { case 0: return &v.state case 1: @@ -14204,7 +14522,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_RankRewardArray); i { + switch v := v.(*DB_RankCycleArray); i { case 0: return &v.state case 1: @@ -14216,7 +14534,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_Words); i { + switch v := v.(*DB_RankLevel); i { case 0: return &v.state case 1: @@ -14228,7 +14546,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Sensitive_WordsArray); i { + switch v := v.(*DB_RankLevelArray); i { case 0: return &v.state case 1: @@ -14240,7 +14558,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Skin); i { + switch v := v.(*DB_RankReward); i { case 0: return &v.state case 1: @@ -14252,7 +14570,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SkinArray); i { + switch v := v.(*DB_RankRewardArray); i { case 0: return &v.state case 1: @@ -14264,7 +14582,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SkinLevel); i { + switch v := v.(*DB_Sensitive_Words); i { case 0: return &v.state case 1: @@ -14276,7 +14594,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SkinLevelArray); i { + switch v := v.(*DB_Sensitive_WordsArray); i { case 0: return &v.state case 1: @@ -14288,7 +14606,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeight); i { + switch v := v.(*DB_Skin); i { case 0: return &v.state case 1: @@ -14300,7 +14618,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SlotRateWeightArray); i { + switch v := v.(*DB_SkinArray); i { case 0: return &v.state case 1: @@ -14312,7 +14630,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChance); i { + switch v := v.(*DB_SkinLevel); i { case 0: return &v.state case 1: @@ -14324,7 +14642,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_SystemChanceArray); i { + switch v := v.(*DB_SkinLevelArray); i { case 0: return &v.state case 1: @@ -14336,7 +14654,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Task); i { + switch v := v.(*DB_SlotRateWeight); i { case 0: return &v.state case 1: @@ -14348,7 +14666,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TaskArray); i { + switch v := v.(*DB_SlotRateWeightArray); i { case 0: return &v.state case 1: @@ -14360,7 +14678,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMapping); i { + switch v := v.(*DB_SystemChance); i { case 0: return &v.state case 1: @@ -14372,7 +14690,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_ThirdPlatformGameMappingArray); i { + switch v := v.(*DB_SystemChanceArray); i { case 0: return &v.state case 1: @@ -14384,7 +14702,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_Tips); i { + switch v := v.(*DB_Task); i { case 0: return &v.state case 1: @@ -14396,7 +14714,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_TipsArray); i { + switch v := v.(*DB_TaskArray); i { case 0: return &v.state case 1: @@ -14408,7 +14726,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIP); i { + switch v := v.(*DB_ThirdPlatformGameMapping); i { case 0: return &v.state case 1: @@ -14420,7 +14738,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIPArray); i { + switch v := v.(*DB_ThirdPlatformGameMappingArray); i { case 0: return &v.state case 1: @@ -14432,7 +14750,7 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DB_VIPShow); i { + switch v := v.(*DB_Tips); i { case 0: return &v.state case 1: @@ -14444,6 +14762,54 @@ func file_protocol_server_pbdata_proto_init() { } } file_protocol_server_pbdata_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_TipsArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_server_pbdata_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIP); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_server_pbdata_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIPArray); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_server_pbdata_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DB_VIPShow); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_server_pbdata_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DB_VIPShowArray); i { case 0: return &v.state @@ -14462,7 +14828,7 @@ func file_protocol_server_pbdata_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_server_pbdata_proto_rawDesc, NumEnums: 0, - NumMessages: 156, + NumMessages: 163, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/server/pbdata.proto b/protocol/server/pbdata.proto index a9d003a..fba7d4f 100644 --- a/protocol/server/pbdata.proto +++ b/protocol/server/pbdata.proto @@ -5,6 +5,22 @@ syntax = "proto3"; package server; option go_package = "mongo.games.com/game/protocol/server"; +message DB_ACTPushCoin { + + int32 Id = 1; + + int32 Rate = 2; + + map Gain = 3; + + int64 Value = 4; + +} + +message DB_ACTPushCoinArray { + repeated DB_ACTPushCoin Arr = 1; +} + message DB_ActSign { int32 Id = 1; @@ -1263,6 +1279,22 @@ message DB_NewPlayerArray { repeated DB_NewPlayer Arr = 1; } +message DB_NewYearActivity { + + int32 Id = 1; + + string PorpName = 2; + + string PropValue = 3; + + string PropDec = 4; + +} + +message DB_NewYearActivityArray { + repeated DB_NewYearActivity Arr = 1; +} + message DB_PassShow { int32 Id = 1; @@ -1349,15 +1381,19 @@ message DB_PigBank_Diamond { int32 MaxGold = 5; - int32 MaxDiamond = 6; + map GoldExc = 6; - int32 DiamondId = 7; + int32 MaxDiamond = 7; - int32 CoinPrice = 8; + int32 DiamondId = 8; - int32 DiamondPrice = 9; + map DiamondExc = 9; - int32 DiamondNowPrice = 10; + int32 CoinPrice = 10; + + int32 DiamondPrice = 11; + + int32 DiamondNowPrice = 12; } @@ -1461,6 +1497,8 @@ message DB_PropExchange { map Gain = 4; + int32 Times = 5; + } message DB_PropExchangeArray { diff --git a/protocol/task/task.pb.go b/protocol/task/task.pb.go index ec0ff8d..c0b3d90 100644 --- a/protocol/task/task.pb.go +++ b/protocol/task/task.pb.go @@ -227,7 +227,7 @@ type CSTaskList struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8:年兽每日任务 9:年兽活动任务 10:累计消耗任务 } func (x *CSTaskList) Reset() { @@ -275,8 +275,11 @@ type SCTaskList struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 - List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 + List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 + StartTs int64 `protobuf:"varint,3,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始时间 + EndTs int64 `protobuf:"varint,4,opt,name=EndTs,proto3" json:"EndTs,omitempty"` // 结束时间 + On bool `protobuf:"varint,5,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 } func (x *SCTaskList) Reset() { @@ -325,6 +328,27 @@ func (x *SCTaskList) GetList() []*TaskData { return nil } +func (x *SCTaskList) GetStartTs() int64 { + if x != nil { + return x.StartTs + } + return 0 +} + +func (x *SCTaskList) GetEndTs() int64 { + if x != nil { + return x.EndTs + } + return 0 +} + +func (x *SCTaskList) GetOn() bool { + if x != nil { + return x.On + } + return false +} + // 领取任务奖励 // PACKET_CSTaskReward type CSTaskReward struct { @@ -332,7 +356,7 @@ type CSTaskReward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id; 0 表示一键领取 } @@ -461,7 +485,7 @@ type SCTaskChange struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表 } @@ -516,7 +540,7 @@ type CSTaskDebugInc struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id AddNum int32 `protobuf:"varint,3,opt,name=AddNum,proto3" json:"AddNum,omitempty"` // 直接增加次数 } @@ -642,59 +666,63 @@ var file_protocol_task_task_proto_rawDesc = []byte{ 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, 0x1c, 0x0a, 0x0a, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x40, 0x0a, 0x0a, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, + 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x80, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x54, 0x61, 0x73, + 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x43, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, + 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, + 0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 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, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x43, + 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, + 0x0a, 0x0b, 0x52, 0x65, 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, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54, + 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, + 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, + 0x0e, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, + 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, + 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73, + 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 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, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x43, 0x54, - 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a, - 0x0b, 0x52, 0x65, 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, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x61, - 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, - 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0e, - 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x0e, - 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, - 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, - 0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe3, - 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, - 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, - 0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 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, 0x74, 0x61, 0x73, - 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, + 0x69, 0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, + 0xe3, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, + 0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, + 0x63, 0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 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, 0x74, 0x61, + 0x73, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/task/task.proto b/protocol/task/task.proto index 2f7f359..cd0f26e 100644 --- a/protocol/task/task.proto +++ b/protocol/task/task.proto @@ -33,18 +33,21 @@ message TaskData{ // 任务列表 // PACKET_CSTaskList message CSTaskList{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8:年兽每日任务 9:年兽活动任务 10:累计消耗任务 } // PACKET_SCTaskList message SCTaskList{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 repeated TaskData List = 2; // 任务列表 + int64 StartTs = 3; // 开始时间 + int64 EndTs = 4; // 结束时间 + bool On = 5; // 活动开关 } // 领取任务奖励 // PACKET_CSTaskReward message CSTaskReward{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 + int32 Tp = 1; // 任务类型 int32 Id = 2; // 任务id; 0 表示一键领取 } // PACKET_SCTaskReward @@ -58,12 +61,12 @@ message SCTaskReward{ // 任务变更通知 // PACKET_SCTaskChange message SCTaskChange{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 repeated TaskData List = 2; // 任务列表 } message CSTaskDebugInc{ - int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 + int32 Tp = 1; // 任务类型 int32 Id = 2; // 任务id int32 AddNum = 3; // 直接增加次数 } diff --git a/protocol/tienlen/tienlen.pb.go b/protocol/tienlen/tienlen.pb.go index 89fc586..cc833fc 100644 --- a/protocol/tienlen/tienlen.pb.go +++ b/protocol/tienlen/tienlen.pb.go @@ -662,6 +662,8 @@ type SCTienLenRoomInfo struct { 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"` //房间密码 + // 房卡场配置 + IsSmallCard bool `protobuf:"varint,40,opt,name=IsSmallCard,proto3" json:"IsSmallCard,omitempty"` //必出最小牌 } func (x *SCTienLenRoomInfo) Reset() { @@ -948,6 +950,13 @@ func (x *SCTienLenRoomInfo) GetPassword() string { return "" } +func (x *SCTienLenRoomInfo) GetIsSmallCard() bool { + if x != nil { + return x.IsSmallCard + } + return false +} + //房间状态更新 type SCTienLenRoomState struct { state protoimpl.MessageState @@ -2140,7 +2149,8 @@ type SCTienLenFirstOpPos struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置 + Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置 + IsSmallCard bool `protobuf:"varint,2,opt,name=IsSmallCard,proto3" json:"IsSmallCard,omitempty"` //必出最小牌 } func (x *SCTienLenFirstOpPos) Reset() { @@ -2182,6 +2192,13 @@ func (x *SCTienLenFirstOpPos) GetPos() int32 { return 0 } +func (x *SCTienLenFirstOpPos) GetIsSmallCard() bool { + if x != nil { + return x.IsSmallCard + } + return false +} + //PACKET_SCTienLenThinkLongCnt type SCTienLenPlayerThinkLongCnt struct { state protoimpl.MessageState @@ -2608,7 +2625,7 @@ var file_protocol_tienlen_tienlen_proto_rawDesc = []byte{ 0x65, 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, 0xfd, 0x08, 0x0a, 0x11, 0x53, 0x43, + 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x9f, 0x09, 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, @@ -2680,262 +2697,267 @@ var file_protocol_tienlen_tienlen_proto_rawDesc = []byte{ 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, 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, + 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x53, + 0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x49, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x61, 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, 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, + 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, 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, 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, 0x49, 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, 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, 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, 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, + 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x61, + 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x53, 0x6d, 0x61, 0x6c, + 0x6c, 0x43, 0x61, 0x72, 0x64, 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, 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, + 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, 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 ( diff --git a/protocol/tienlen/tienlen.proto b/protocol/tienlen/tienlen.proto index a7894ff..e6c92a4 100644 --- a/protocol/tienlen/tienlen.proto +++ b/protocol/tienlen/tienlen.proto @@ -126,6 +126,7 @@ message SCTienLenRoomInfo { int32 Voice = 38; //是否开启语音 1开启 string Password = 39; //房间密码 // 房卡场配置 + bool IsSmallCard = 40; //必出最小牌 } //房间状态更新 @@ -257,6 +258,7 @@ message SCTienLenAIData { //PACKET_SCTienLenFirstOpPos message SCTienLenFirstOpPos { int32 Pos = 1;//座位位置 + bool IsSmallCard = 2; //必出最小牌 } //PACKET_SCTienLenThinkLongCnt diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index a8e4bfc..8852a95 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -9550,6 +9550,1103 @@ func (x *UserLottery) GetOn() int32 { return 0 } +type PigBankDiamondInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + BuyCountMin int32 `protobuf:"varint,2,opt,name=BuyCountMin,proto3" json:"BuyCountMin,omitempty"` + BuyCountMax int32 `protobuf:"varint,3,opt,name=BuyCountMax,proto3" json:"BuyCountMax,omitempty"` + CostDiamond int32 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` + MaxGold int32 `protobuf:"varint,5,opt,name=MaxGold,proto3" json:"MaxGold,omitempty"` + MaxDiamond int32 `protobuf:"varint,6,opt,name=MaxDiamond,proto3" json:"MaxDiamond,omitempty"` + DiamondId int32 `protobuf:"varint,7,opt,name=DiamondId,proto3" json:"DiamondId,omitempty"` + CoinPrice int32 `protobuf:"varint,8,opt,name=CoinPrice,proto3" json:"CoinPrice,omitempty"` + DiamondPrice int32 `protobuf:"varint,9,opt,name=DiamondPrice,proto3" json:"DiamondPrice,omitempty"` + DiamondNowPrice int32 `protobuf:"varint,10,opt,name=DiamondNowPrice,proto3" json:"DiamondNowPrice,omitempty"` + GoldExc []*ItemInfo `protobuf:"bytes,11,rep,name=GoldExc,proto3" json:"GoldExc,omitempty"` + DiamondExc []*ItemInfo `protobuf:"bytes,12,rep,name=DiamondExc,proto3" json:"DiamondExc,omitempty"` +} + +func (x *PigBankDiamondInfo) Reset() { + *x = PigBankDiamondInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankDiamondInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankDiamondInfo) ProtoMessage() {} + +func (x *PigBankDiamondInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[100] + 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 PigBankDiamondInfo.ProtoReflect.Descriptor instead. +func (*PigBankDiamondInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{100} +} + +func (x *PigBankDiamondInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PigBankDiamondInfo) GetBuyCountMin() int32 { + if x != nil { + return x.BuyCountMin + } + return 0 +} + +func (x *PigBankDiamondInfo) GetBuyCountMax() int32 { + if x != nil { + return x.BuyCountMax + } + return 0 +} + +func (x *PigBankDiamondInfo) GetCostDiamond() int32 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetMaxGold() int32 { + if x != nil { + return x.MaxGold + } + return 0 +} + +func (x *PigBankDiamondInfo) GetMaxDiamond() int32 { + if x != nil { + return x.MaxDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondId() int32 { + if x != nil { + return x.DiamondId + } + return 0 +} + +func (x *PigBankDiamondInfo) GetCoinPrice() int32 { + if x != nil { + return x.CoinPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondPrice() int32 { + if x != nil { + return x.DiamondPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondNowPrice() int32 { + if x != nil { + return x.DiamondNowPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetGoldExc() []*ItemInfo { + if x != nil { + return x.GoldExc + } + return nil +} + +func (x *PigBankDiamondInfo) GetDiamondExc() []*ItemInfo { + if x != nil { + return x.DiamondExc + } + return nil +} + +// etcd /game/pigbank_diamond +type GamePigBankDiamondConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + DiamondInfo []*PigBankDiamondInfo `protobuf:"bytes,2,rep,name=DiamondInfo,proto3" json:"DiamondInfo,omitempty"` // 存钱罐消耗信息 +} + +func (x *GamePigBankDiamondConfig) Reset() { + *x = GamePigBankDiamondConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GamePigBankDiamondConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GamePigBankDiamondConfig) ProtoMessage() {} + +func (x *GamePigBankDiamondConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[101] + 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 GamePigBankDiamondConfig.ProtoReflect.Descriptor instead. +func (*GamePigBankDiamondConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{101} +} + +func (x *GamePigBankDiamondConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GamePigBankDiamondConfig) GetDiamondInfo() []*PigBankDiamondInfo { + if x != nil { + return x.DiamondInfo + } + return nil +} + +type PigBankPropInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + PorpName string `protobuf:"bytes,2,opt,name=PorpName,proto3" json:"PorpName,omitempty"` + PropValue int32 `protobuf:"varint,3,opt,name=PropValue,proto3" json:"PropValue,omitempty"` +} + +func (x *PigBankPropInfo) Reset() { + *x = PigBankPropInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankPropInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankPropInfo) ProtoMessage() {} + +func (x *PigBankPropInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[102] + 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 PigBankPropInfo.ProtoReflect.Descriptor instead. +func (*PigBankPropInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{102} +} + +func (x *PigBankPropInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *PigBankPropInfo) GetPorpName() string { + if x != nil { + return x.PorpName + } + return "" +} + +func (x *PigBankPropInfo) GetPropValue() int32 { + if x != nil { + return x.PropValue + } + return 0 +} + +// etcd /game/pigbank_prop +type GamePigBankPropConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + PropInfo []*PigBankPropInfo `protobuf:"bytes,2,rep,name=PropInfo,proto3" json:"PropInfo,omitempty"` // 存钱罐属性 +} + +func (x *GamePigBankPropConfig) Reset() { + *x = GamePigBankPropConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GamePigBankPropConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GamePigBankPropConfig) ProtoMessage() {} + +func (x *GamePigBankPropConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[103] + 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 GamePigBankPropConfig.ProtoReflect.Descriptor instead. +func (*GamePigBankPropConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{103} +} + +func (x *GamePigBankPropConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *GamePigBankPropConfig) GetPropInfo() []*PigBankPropInfo { + if x != nil { + return x.PropInfo + } + return nil +} + +//etcd /game/activity_nian +type ActivityNianConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + List []*NianInfo `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` + Switch int32 `protobuf:"varint,3,opt,name=Switch,proto3" json:"Switch,omitempty"` // 活动开关 1.开启 2.关闭 +} + +func (x *ActivityNianConfig) Reset() { + *x = ActivityNianConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ActivityNianConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ActivityNianConfig) ProtoMessage() {} + +func (x *ActivityNianConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[104] + 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 ActivityNianConfig.ProtoReflect.Descriptor instead. +func (*ActivityNianConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{104} +} + +func (x *ActivityNianConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ActivityNianConfig) GetList() []*NianInfo { + if x != nil { + return x.List + } + return nil +} + +func (x *ActivityNianConfig) GetSwitch() int32 { + if x != nil { + return x.Switch + } + return 0 +} + +type NianInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ActivityStart string `protobuf:"bytes,1,opt,name=ActivityStart,proto3" json:"ActivityStart,omitempty"` // 活动开始时间 + ActivityEnd string `protobuf:"bytes,2,opt,name=ActivityEnd,proto3" json:"ActivityEnd,omitempty"` // 活动结束时间 + BuffStartTime int64 `protobuf:"varint,3,opt,name=BuffStartTime,proto3" json:"BuffStartTime,omitempty"` //Buff领取开始时间 18 + BuffEndTime int64 `protobuf:"varint,4,opt,name=BuffEndTime,proto3" json:"BuffEndTime,omitempty"` //Buff领取结束时间 21 + SignReward []*ItemInfo `protobuf:"bytes,5,rep,name=SignReward,proto3" json:"SignReward,omitempty"` // 签到奖励 + BossDieReward []*ItemInfo `protobuf:"bytes,6,rep,name=BossDieReward,proto3" json:"BossDieReward,omitempty"` // 击杀BOSS奖励 + BossDieOtherReward []*NianDropInfo `protobuf:"bytes,7,rep,name=BossDieOtherReward,proto3" json:"BossDieOtherReward,omitempty"` // 击杀Boss额外奖励 +} + +func (x *NianInfo) Reset() { + *x = NianInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianInfo) ProtoMessage() {} + +func (x *NianInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[105] + 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 NianInfo.ProtoReflect.Descriptor instead. +func (*NianInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{105} +} + +func (x *NianInfo) GetActivityStart() string { + if x != nil { + return x.ActivityStart + } + return "" +} + +func (x *NianInfo) GetActivityEnd() string { + if x != nil { + return x.ActivityEnd + } + return "" +} + +func (x *NianInfo) GetBuffStartTime() int64 { + if x != nil { + return x.BuffStartTime + } + return 0 +} + +func (x *NianInfo) GetBuffEndTime() int64 { + if x != nil { + return x.BuffEndTime + } + return 0 +} + +func (x *NianInfo) GetSignReward() []*ItemInfo { + if x != nil { + return x.SignReward + } + return nil +} + +func (x *NianInfo) GetBossDieReward() []*ItemInfo { + if x != nil { + return x.BossDieReward + } + return nil +} + +func (x *NianInfo) GetBossDieOtherReward() []*NianDropInfo { + if x != nil { + return x.BossDieOtherReward + } + return nil +} + +type NianDropInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` + ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 物品ID + ItemNum int64 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` // 物品数量 + DropRate int32 `protobuf:"varint,4,opt,name=DropRate,proto3" json:"DropRate,omitempty"` //掉落概率 + DropUp int32 `protobuf:"varint,5,opt,name=DropUp,proto3" json:"DropUp,omitempty"` //掉落上限 +} + +func (x *NianDropInfo) Reset() { + *x = NianDropInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianDropInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianDropInfo) ProtoMessage() {} + +func (x *NianDropInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[106] + 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 NianDropInfo.ProtoReflect.Descriptor instead. +func (*NianDropInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{106} +} + +func (x *NianDropInfo) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *NianDropInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *NianDropInfo) GetItemNum() int64 { + if x != nil { + return x.ItemNum + } + return 0 +} + +func (x *NianDropInfo) GetDropRate() int32 { + if x != nil { + return x.DropRate + } + return 0 +} + +func (x *NianDropInfo) GetDropUp() int32 { + if x != nil { + return x.DropUp + } + return 0 +} + +//年兽排行榜奖励 +//etcd /game/activity_nian_rank +type NianRankReward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + RankData []*NianRankData `protobuf:"bytes,2,rep,name=RankData,proto3" json:"RankData,omitempty"` +} + +func (x *NianRankReward) Reset() { + *x = NianRankReward{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankReward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankReward) ProtoMessage() {} + +func (x *NianRankReward) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[107] + 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 NianRankReward.ProtoReflect.Descriptor instead. +func (*NianRankReward) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{107} +} + +func (x *NianRankReward) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *NianRankReward) GetRankData() []*NianRankData { + if x != nil { + return x.RankData + } + return nil +} + +type NianRankData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TypeId int32 `protobuf:"varint,1,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-伤害榜 + RankInfo []*NianRankAwardInfo `protobuf:"bytes,2,rep,name=RankInfo,proto3" json:"RankInfo,omitempty"` +} + +func (x *NianRankData) Reset() { + *x = NianRankData{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankData) ProtoMessage() {} + +func (x *NianRankData) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[108] + 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 NianRankData.ProtoReflect.Descriptor instead. +func (*NianRankData) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{108} +} + +func (x *NianRankData) GetTypeId() int32 { + if x != nil { + return x.TypeId + } + return 0 +} + +func (x *NianRankData) GetRankInfo() []*NianRankAwardInfo { + if x != nil { + return x.RankInfo + } + return nil +} + +type NianRankAwardInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RankId int32 `protobuf:"varint,1,opt,name=RankId,proto3" json:"RankId,omitempty"` //排名 + Award []*ItemInfo `protobuf:"bytes,2,rep,name=Award,proto3" json:"Award,omitempty"` //奖励 +} + +func (x *NianRankAwardInfo) Reset() { + *x = NianRankAwardInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NianRankAwardInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NianRankAwardInfo) ProtoMessage() {} + +func (x *NianRankAwardInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[109] + 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 NianRankAwardInfo.ProtoReflect.Descriptor instead. +func (*NianRankAwardInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{109} +} + +func (x *NianRankAwardInfo) GetRankId() int32 { + if x != nil { + return x.RankId + } + return 0 +} + +func (x *NianRankAwardInfo) GetAward() []*ItemInfo { + if x != nil { + return x.Award + } + return nil +} + +// etcd /game/act_redpacket +type RedPacketConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + List []*RedPacketInfo `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 活动列表 + PlayerLimit int32 `protobuf:"varint,3,opt,name=PlayerLimit,proto3" json:"PlayerLimit,omitempty"` // 玩家最大领取红包次数 0无限制 +} + +func (x *RedPacketConfig) Reset() { + *x = RedPacketConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedPacketConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedPacketConfig) ProtoMessage() {} + +func (x *RedPacketConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[110] + 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 RedPacketConfig.ProtoReflect.Descriptor instead. +func (*RedPacketConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{110} +} + +func (x *RedPacketConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *RedPacketConfig) GetList() []*RedPacketInfo { + if x != nil { + return x.List + } + return nil +} + +func (x *RedPacketConfig) GetPlayerLimit() int32 { + if x != nil { + return x.PlayerLimit + } + return 0 +} + +type RedPacketInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id + On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 + StartHMS int64 `protobuf:"varint,3,opt,name=StartHMS,proto3" json:"StartHMS,omitempty"` // 开始时间,时*10000 + 分*100 + 秒 + EndHMS int64 `protobuf:"varint,4,opt,name=EndHMS,proto3" json:"EndHMS,omitempty"` // 结束时间,时*10000 + 分*100 + 秒 + StayTs int64 `protobuf:"varint,5,opt,name=StayTs,proto3" json:"StayTs,omitempty"` // 持续时长,单位秒 + MaxCount int64 `protobuf:"varint,6,opt,name=MaxCount,proto3" json:"MaxCount,omitempty"` // 每人最大领取次数 0无限制 + LessCount int64 `protobuf:"varint,7,opt,name=LessCount,proto3" json:"LessCount,omitempty"` // 保底红包个数 + ItemId int32 `protobuf:"varint,8,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 奖励类型(道具id,100001金币 100002钻石) + TotalNum int64 `protobuf:"varint,9,opt,name=TotalNum,proto3" json:"TotalNum,omitempty"` // 总奖励数量 + RedList []*RedInfo `protobuf:"bytes,10,rep,name=RedList,proto3" json:"RedList,omitempty"` // 红包奖励列表 +} + +func (x *RedPacketInfo) Reset() { + *x = RedPacketInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedPacketInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedPacketInfo) ProtoMessage() {} + +func (x *RedPacketInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[111] + 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 RedPacketInfo.ProtoReflect.Descriptor instead. +func (*RedPacketInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{111} +} + +func (x *RedPacketInfo) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *RedPacketInfo) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *RedPacketInfo) GetStartHMS() int64 { + if x != nil { + return x.StartHMS + } + return 0 +} + +func (x *RedPacketInfo) GetEndHMS() int64 { + if x != nil { + return x.EndHMS + } + return 0 +} + +func (x *RedPacketInfo) GetStayTs() int64 { + if x != nil { + return x.StayTs + } + return 0 +} + +func (x *RedPacketInfo) GetMaxCount() int64 { + if x != nil { + return x.MaxCount + } + return 0 +} + +func (x *RedPacketInfo) GetLessCount() int64 { + if x != nil { + return x.LessCount + } + return 0 +} + +func (x *RedPacketInfo) GetItemId() int32 { + if x != nil { + return x.ItemId + } + return 0 +} + +func (x *RedPacketInfo) GetTotalNum() int64 { + if x != nil { + return x.TotalNum + } + return 0 +} + +func (x *RedPacketInfo) GetRedList() []*RedInfo { + if x != nil { + return x.RedList + } + return nil +} + +type RedInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int64 `protobuf:"varint,1,opt,name=Num,proto3" json:"Num,omitempty"` // 数量 + Rate int64 `protobuf:"varint,2,opt,name=Rate,proto3" json:"Rate,omitempty"` // 概率,百分比 +} + +func (x *RedInfo) Reset() { + *x = RedInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedInfo) ProtoMessage() {} + +func (x *RedInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[112] + 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 RedInfo.ProtoReflect.Descriptor instead. +func (*RedInfo) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{112} +} + +func (x *RedInfo) GetNum() int64 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *RedInfo) GetRate() int64 { + if x != nil { + return x.Rate + } + return 0 +} + +// etcd /game/act_consume +type ConsumeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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.关闭 + StartTime string `protobuf:"bytes,3,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 活动开始时间 + EndTime string `protobuf:"bytes,4,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 活动结束时间 +} + +func (x *ConsumeConfig) Reset() { + *x = ConsumeConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConsumeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsumeConfig) ProtoMessage() {} + +func (x *ConsumeConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[113] + 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 ConsumeConfig.ProtoReflect.Descriptor instead. +func (*ConsumeConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{113} +} + +func (x *ConsumeConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ConsumeConfig) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *ConsumeConfig) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *ConsumeConfig) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + +// etcd /game/act_pushcoin +type PushCoinConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + 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.关闭 + StartTime string `protobuf:"bytes,3,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 活动开始时间 + EndTime string `protobuf:"bytes,4,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 活动结束时间 +} + +func (x *PushCoinConfig) Reset() { + *x = PushCoinConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_webapi_common_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PushCoinConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PushCoinConfig) ProtoMessage() {} + +func (x *PushCoinConfig) ProtoReflect() protoreflect.Message { + mi := &file_protocol_webapi_common_proto_msgTypes[114] + 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 PushCoinConfig.ProtoReflect.Descriptor instead. +func (*PushCoinConfig) Descriptor() ([]byte, []int) { + return file_protocol_webapi_common_proto_rawDescGZIP(), []int{114} +} + +func (x *PushCoinConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *PushCoinConfig) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *PushCoinConfig) GetStartTime() string { + if x != nil { + return x.StartTime + } + return "" +} + +func (x *PushCoinConfig) GetEndTime() string { + if x != nil { + return x.EndTime + } + return "" +} + var File_protocol_webapi_common_proto protoreflect.FileDescriptor var file_protocol_webapi_common_proto_rawDesc = []byte{ @@ -11030,10 +12127,153 @@ var file_protocol_webapi_common_proto_rawDesc = []byte{ 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x42, 0x26, 0x5a, 0x24, 0x6d, - 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, - 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0xac, 0x03, 0x0a, 0x12, + 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, + 0x66, 0x6f, 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, 0x12, 0x2a, 0x0a, 0x07, + 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x12, 0x30, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, 0x63, 0x22, 0x74, 0x0a, 0x18, 0x47, 0x61, + 0x6d, 0x65, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 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, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x22, 0x5b, 0x0a, 0x0f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x49, + 0x6e, 0x66, 0x6f, 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, 0x68, 0x0a, + 0x15, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x70, + 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, 0x33, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, + 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x50, + 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6e, 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x4e, 0x69, 0x61, 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, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 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, 0xca, 0x02, 0x0a, 0x08, 0x4e, 0x69, 0x61, 0x6e, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x45, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, + 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0d, 0x42, 0x75, 0x66, 0x66, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x75, 0x66, 0x66, 0x45, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x53, 0x69, 0x67, 0x6e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x69, + 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x0d, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x69, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x44, + 0x0a, 0x12, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x69, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x12, 0x42, 0x6f, 0x73, 0x73, 0x44, 0x69, 0x65, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x0c, 0x4e, 0x69, 0x61, 0x6e, 0x44, 0x72, 0x6f, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 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, 0x18, 0x0a, + 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, + 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x52, + 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x70, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x72, 0x6f, 0x70, 0x55, 0x70, 0x22, 0x5e, 0x0a, 0x0e, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x52, 0x61, 0x6e, + 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5d, 0x0a, 0x0c, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 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, 0x35, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4e, + 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x53, 0x0a, 0x11, 0x4e, 0x69, + 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 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, 0x26, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, + 0x7a, 0x0a, 0x0f, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 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, 0x29, + 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x94, 0x02, 0x0a, 0x0d, + 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, 0x64, + 0x48, 0x4d, 0x53, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x45, 0x6e, 0x64, 0x48, 0x4d, + 0x53, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x79, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x79, 0x54, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4d, 0x61, 0x78, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x07, 0x52, 0x65, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x52, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x52, 0x65, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x22, 0x2f, 0x0a, 0x07, 0x52, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, + 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, + 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x52, + 0x61, 0x74, 0x65, 0x22, 0x73, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x73, 0x75, 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, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68, + 0x43, 0x6f, 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, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 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 ( @@ -11048,7 +12288,7 @@ func file_protocol_webapi_common_proto_rawDescGZIP() []byte { return file_protocol_webapi_common_proto_rawDescData } -var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 110) +var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 125) var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -11150,32 +12390,47 @@ var file_protocol_webapi_common_proto_goTypes = []interface{}{ (*LotteryConfig)(nil), // 97: webapi.LotteryConfig (*LotteryInfo)(nil), // 98: webapi.LotteryInfo (*UserLottery)(nil), // 99: webapi.UserLottery - nil, // 100: webapi.Platform.BindTelRewardEntry - nil, // 101: webapi.PlayerData.RankScoreEntry - nil, // 102: webapi.ItemShop.AwardEntry - nil, // 103: webapi.VIPcfg.AwardEntry - nil, // 104: webapi.VIPcfg.Privilege1Entry - nil, // 105: webapi.VIPcfg.Privilege7Entry - nil, // 106: webapi.VIPcfg.Privilege9Entry - nil, // 107: webapi.ActInviteConfig.PayScoreEntry - nil, // 108: webapi.SkinLevel.UpItemEntry - nil, // 109: webapi.SkinItem.UnlockParamEntry - (*server.DB_GameFree)(nil), // 110: server.DB_GameFree - (*server.DB_GameItem)(nil), // 111: server.DB_GameItem + (*PigBankDiamondInfo)(nil), // 100: webapi.PigBankDiamondInfo + (*GamePigBankDiamondConfig)(nil), // 101: webapi.GamePigBankDiamondConfig + (*PigBankPropInfo)(nil), // 102: webapi.PigBankPropInfo + (*GamePigBankPropConfig)(nil), // 103: webapi.GamePigBankPropConfig + (*ActivityNianConfig)(nil), // 104: webapi.ActivityNianConfig + (*NianInfo)(nil), // 105: webapi.NianInfo + (*NianDropInfo)(nil), // 106: webapi.NianDropInfo + (*NianRankReward)(nil), // 107: webapi.NianRankReward + (*NianRankData)(nil), // 108: webapi.NianRankData + (*NianRankAwardInfo)(nil), // 109: webapi.NianRankAwardInfo + (*RedPacketConfig)(nil), // 110: webapi.RedPacketConfig + (*RedPacketInfo)(nil), // 111: webapi.RedPacketInfo + (*RedInfo)(nil), // 112: webapi.RedInfo + (*ConsumeConfig)(nil), // 113: webapi.ConsumeConfig + (*PushCoinConfig)(nil), // 114: webapi.PushCoinConfig + nil, // 115: webapi.Platform.BindTelRewardEntry + nil, // 116: webapi.PlayerData.RankScoreEntry + nil, // 117: webapi.ItemShop.AwardEntry + nil, // 118: webapi.VIPcfg.AwardEntry + nil, // 119: webapi.VIPcfg.Privilege1Entry + nil, // 120: webapi.VIPcfg.Privilege7Entry + nil, // 121: webapi.VIPcfg.Privilege9Entry + nil, // 122: webapi.ActInviteConfig.PayScoreEntry + nil, // 123: webapi.SkinLevel.UpItemEntry + nil, // 124: webapi.SkinItem.UnlockParamEntry + (*server.DB_GameFree)(nil), // 125: server.DB_GameFree + (*server.DB_GameItem)(nil), // 126: server.DB_GameItem } var file_protocol_webapi_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 - 100, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 115, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 110, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 125, // 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 - 110, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 101, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 125, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 116, // 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 @@ -11188,7 +12443,7 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 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 - 102, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 117, // 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 @@ -11209,14 +12464,14 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 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 - 103, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 104, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry - 105, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry - 106, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry + 118, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 119, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry + 120, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 121, // 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 - 107, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 122, // 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 @@ -11233,12 +12488,12 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 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 - 111, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem + 126, // 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 - 108, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry - 109, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry + 123, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry + 124, // 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 @@ -11253,11 +12508,24 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{ 96, // 86: webapi.PopUpWindowConfig.Info:type_name -> webapi.PopUpWindowInfo 98, // 87: webapi.LotteryConfig.List:type_name -> webapi.LotteryInfo 32, // 88: webapi.LotteryInfo.Reward:type_name -> webapi.ItemInfo - 89, // [89:89] is the sub-list for method output_type - 89, // [89:89] is the sub-list for method input_type - 89, // [89:89] is the sub-list for extension type_name - 89, // [89:89] is the sub-list for extension extendee - 0, // [0:89] is the sub-list for field type_name + 32, // 89: webapi.PigBankDiamondInfo.GoldExc:type_name -> webapi.ItemInfo + 32, // 90: webapi.PigBankDiamondInfo.DiamondExc:type_name -> webapi.ItemInfo + 100, // 91: webapi.GamePigBankDiamondConfig.DiamondInfo:type_name -> webapi.PigBankDiamondInfo + 102, // 92: webapi.GamePigBankPropConfig.PropInfo:type_name -> webapi.PigBankPropInfo + 105, // 93: webapi.ActivityNianConfig.List:type_name -> webapi.NianInfo + 32, // 94: webapi.NianInfo.SignReward:type_name -> webapi.ItemInfo + 32, // 95: webapi.NianInfo.BossDieReward:type_name -> webapi.ItemInfo + 106, // 96: webapi.NianInfo.BossDieOtherReward:type_name -> webapi.NianDropInfo + 108, // 97: webapi.NianRankReward.RankData:type_name -> webapi.NianRankData + 109, // 98: webapi.NianRankData.RankInfo:type_name -> webapi.NianRankAwardInfo + 32, // 99: webapi.NianRankAwardInfo.Award:type_name -> webapi.ItemInfo + 111, // 100: webapi.RedPacketConfig.List:type_name -> webapi.RedPacketInfo + 112, // 101: webapi.RedPacketInfo.RedList:type_name -> webapi.RedInfo + 102, // [102:102] is the sub-list for method output_type + 102, // [102:102] is the sub-list for method input_type + 102, // [102:102] is the sub-list for extension type_name + 102, // [102:102] is the sub-list for extension extendee + 0, // [0:102] is the sub-list for field type_name } func init() { file_protocol_webapi_common_proto_init() } @@ -12466,6 +13734,186 @@ func file_protocol_webapi_common_proto_init() { return nil } } + file_protocol_webapi_common_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PigBankDiamondInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePigBankDiamondConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PigBankPropInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePigBankPropConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActivityNianConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianDropInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankReward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NianRankAwardInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConsumeConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_webapi_common_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PushCoinConfig); 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{ @@ -12473,7 +13921,7 @@ func file_protocol_webapi_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_webapi_common_proto_rawDesc, NumEnums: 0, - NumMessages: 110, + NumMessages: 125, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index c1cb5fb..0c491a5 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -1046,4 +1046,132 @@ message UserLottery{ string Time = 4; // 抽奖时间 2006-01-02 15:04:05 int64 Num = 5; // 第几期 int32 On = 6; // 开关 1开启 2关闭 +} + +message PigBankDiamondInfo { + + int32 Id = 1; + + int32 BuyCountMin = 2; + + int32 BuyCountMax = 3; + + int32 CostDiamond = 4; + + int32 MaxGold = 5; + + int32 MaxDiamond = 6; + + int32 DiamondId = 7; + + int32 CoinPrice = 8; + + int32 DiamondPrice = 9; + + int32 DiamondNowPrice = 10; + + repeated ItemInfo GoldExc = 11; + + repeated ItemInfo DiamondExc = 12; +} + +// etcd /game/pigbank_diamond +message GamePigBankDiamondConfig{ + string Platform = 1; // 平台 + repeated PigBankDiamondInfo DiamondInfo = 2; // 存钱罐消耗信息 +} + + +message PigBankPropInfo { + + int32 Id = 1; + + string PorpName = 2; + + int32 PropValue = 3; + +} + +// etcd /game/pigbank_prop +message GamePigBankPropConfig{ + string Platform = 1; // 平台 + repeated PigBankPropInfo PropInfo = 2; // 存钱罐属性 +} +//etcd /game/activity_nian +message ActivityNianConfig { + string Platform = 1; // 平台 + repeated NianInfo List = 2; + int32 Switch = 3; // 活动开关 1.开启 2.关闭 +} + +message NianInfo{ + string ActivityStart = 1; // 活动开始时间 + string ActivityEnd = 2; // 活动结束时间 + int64 BuffStartTime = 3; //Buff领取开始时间 18 + int64 BuffEndTime = 4; //Buff领取结束时间 21 + repeated ItemInfo SignReward = 5; // 签到奖励 + repeated ItemInfo BossDieReward = 6; // 击杀BOSS奖励 + repeated NianDropInfo BossDieOtherReward = 7; // 击杀Boss额外奖励 +} +message NianDropInfo{ + int32 Id = 1; + int32 ItemId = 2; // 物品ID + int64 ItemNum = 3; // 物品数量 + int32 DropRate = 4;//掉落概率 + int32 DropUp = 5;//掉落上限 +} +//年兽排行榜奖励 +//etcd /game/activity_nian_rank +message NianRankReward{ + string Platform = 1; // 平台 + repeated NianRankData RankData = 2; +} +message NianRankData{ + int32 TypeId = 1; //1-幸运榜 2-伤害榜 + repeated NianRankAwardInfo RankInfo = 2; +} +message NianRankAwardInfo{ + int32 RankId =1;//排名 + repeated ItemInfo Award = 2; //奖励 +} + +// etcd /game/act_redpacket +message RedPacketConfig{ + string Platform = 1; // 平台 + repeated RedPacketInfo List = 2; // 活动列表 + int32 PlayerLimit = 3; // 玩家最大领取红包次数 0无限制 +} + +message RedPacketInfo{ + int64 Id = 1; // 配置id + int32 On = 2; // 开关 1开启 2关闭 + int64 StartHMS = 3; // 开始时间,时*10000 + 分*100 + 秒 + int64 EndHMS = 4; // 结束时间,时*10000 + 分*100 + 秒 + int64 StayTs = 5; // 持续时长,单位秒 + int64 MaxCount = 6; // 每人最大领取次数 0无限制 + int64 LessCount = 7; // 保底红包个数 + int32 ItemId = 8; // 奖励类型(道具id,100001金币 100002钻石) + int64 TotalNum = 9; // 总奖励数量 + repeated RedInfo RedList = 10; // 红包奖励列表 +} + +message RedInfo{ + int64 Num = 1; // 数量 + int64 Rate = 2; // 概率,百分比 +} + +// etcd /game/act_consume +message ConsumeConfig{ + string Platform = 1; // 平台 + int32 On = 2; // 活动开关 1.开启 2.关闭 + string StartTime = 3; // 活动开始时间 + string EndTime = 4; // 活动结束时间 +} + +// etcd /game/act_pushcoin +message PushCoinConfig{ + string Platform = 1; // 平台 + int32 On = 2; // 活动开关 1.开启 2.关闭 + string StartTime = 3; // 活动开始时间 + string EndTime = 4; // 活动结束时间 } \ No newline at end of file diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 1aac9d4..4600b73 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -168,6 +168,10 @@ const ( SPacketID_PACKET_SCLotteryInfo SPacketID = 2927 // 抽奖信息 SPacketID_PACKET_NotifyLotteryAward SPacketID = 2928 // 通知抽奖中奖 SPacketID_PACKET_NotifyLotteryCode SPacketID = 2929 // 通知获得抽奖号码 + SPacketID_PACKET_CSRedPacketInfo SPacketID = 2930 // 红包信息 + SPacketID_PACKET_SCRedPacketInfo SPacketID = 2931 // 红包信息 + SPacketID_PACKET_CSRedPacketDraw SPacketID = 2932 // 抽红包 + SPacketID_PACKET_SCRedPacketDraw SPacketID = 2933 // 抽红包 ) // Enum value maps for SPacketID. @@ -223,6 +227,10 @@ var ( 2927: "PACKET_SCLotteryInfo", 2928: "PACKET_NotifyLotteryAward", 2929: "PACKET_NotifyLotteryCode", + 2930: "PACKET_CSRedPacketInfo", + 2931: "PACKET_SCRedPacketInfo", + 2932: "PACKET_CSRedPacketDraw", + 2933: "PACKET_SCRedPacketDraw", } SPacketID_value = map[string]int32{ "PACKET_SHOP_ZERO": 0, @@ -275,6 +283,10 @@ var ( "PACKET_SCLotteryInfo": 2927, "PACKET_NotifyLotteryAward": 2928, "PACKET_NotifyLotteryCode": 2929, + "PACKET_CSRedPacketInfo": 2930, + "PACKET_SCRedPacketInfo": 2931, + "PACKET_CSRedPacketDraw": 2932, + "PACKET_SCRedPacketDraw": 2933, } ) @@ -2603,6 +2615,101 @@ func (x *SCBindInvite) GetOpRetCode() OpResultCode { return OpResultCode_OPRC_Sucess } +type PigBankCoinInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IndexId int32 `protobuf:"varint,1,opt,name=IndexId,proto3" json:"IndexId,omitempty"` + TakeCoin int64 `protobuf:"varint,2,opt,name=TakeCoin,proto3" json:"TakeCoin,omitempty"` // + BankMaxCoin int64 `protobuf:"varint,3,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最大储存值 + DayBuyMaxCnt int32 `protobuf:"varint,4,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 + Price int64 `protobuf:"varint,5,opt,name=Price,proto3" json:"Price,omitempty"` //原价 + CostDiamond int64 `protobuf:"varint,6,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` //现价 + GoldExc map[int64]int64 `protobuf:"bytes,7,rep,name=GoldExc,proto3" json:"GoldExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 奖励道具 +} + +func (x *PigBankCoinInfo) Reset() { + *x = PigBankCoinInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankCoinInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankCoinInfo) ProtoMessage() {} + +func (x *PigBankCoinInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 PigBankCoinInfo.ProtoReflect.Descriptor instead. +func (*PigBankCoinInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{37} +} + +func (x *PigBankCoinInfo) GetIndexId() int32 { + if x != nil { + return x.IndexId + } + return 0 +} + +func (x *PigBankCoinInfo) GetTakeCoin() int64 { + if x != nil { + return x.TakeCoin + } + return 0 +} + +func (x *PigBankCoinInfo) GetBankMaxCoin() int64 { + if x != nil { + return x.BankMaxCoin + } + return 0 +} + +func (x *PigBankCoinInfo) GetDayBuyMaxCnt() int32 { + if x != nil { + return x.DayBuyMaxCnt + } + return 0 +} + +func (x *PigBankCoinInfo) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *PigBankCoinInfo) GetCostDiamond() int64 { + if x != nil { + return x.CostDiamond + } + return 0 +} + +func (x *PigBankCoinInfo) GetGoldExc() map[int64]int64 { + if x != nil { + return x.GoldExc + } + return nil +} + // 存钱罐信息 //PACKET_CSPigbankGetInfo type CSPigbankGetInfo struct { @@ -2614,7 +2721,7 @@ type CSPigbankGetInfo struct { func (x *CSPigbankGetInfo) Reset() { *x = CSPigbankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + mi := &file_protocol_welfare_welfare_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2627,7 +2734,7 @@ func (x *CSPigbankGetInfo) String() string { func (*CSPigbankGetInfo) ProtoMessage() {} func (x *CSPigbankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[37] + mi := &file_protocol_welfare_welfare_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2640,7 +2747,7 @@ func (x *CSPigbankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPigbankGetInfo.ProtoReflect.Descriptor instead. func (*CSPigbankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{37} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{38} } // 存钱罐信息 @@ -2650,19 +2757,16 @@ type SCPigbankGetInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 - BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 - BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 - DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,7,opt,name=Price,proto3" json:"Price,omitempty"` //消耗钻石原价 + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 + BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + InfoArr []*PigBankCoinInfo `protobuf:"bytes,4,rep,name=infoArr,proto3" json:"infoArr,omitempty"` } func (x *SCPigbankGetInfo) Reset() { *x = SCPigbankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[38] + mi := &file_protocol_welfare_welfare_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2675,7 +2779,7 @@ func (x *SCPigbankGetInfo) String() string { func (*SCPigbankGetInfo) ProtoMessage() {} func (x *SCPigbankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[38] + mi := &file_protocol_welfare_welfare_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2688,7 +2792,7 @@ func (x *SCPigbankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPigbankGetInfo.ProtoReflect.Descriptor instead. func (*SCPigbankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{38} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{39} } func (x *SCPigbankGetInfo) GetOpRetCode() OpResultCode { @@ -2712,32 +2816,11 @@ func (x *SCPigbankGetInfo) GetTakeTimes() int32 { return 0 } -func (x *SCPigbankGetInfo) GetCostDiamond() int64 { +func (x *SCPigbankGetInfo) GetInfoArr() []*PigBankCoinInfo { if x != nil { - return x.CostDiamond + return x.InfoArr } - return 0 -} - -func (x *SCPigbankGetInfo) GetBankMaxCoin() int64 { - if x != nil { - return x.BankMaxCoin - } - return 0 -} - -func (x *SCPigbankGetInfo) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCPigbankGetInfo) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 + return nil } // 存钱罐领取金币 @@ -2751,7 +2834,7 @@ type CSPigbankTakeCoin struct { func (x *CSPigbankTakeCoin) Reset() { *x = CSPigbankTakeCoin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[39] + mi := &file_protocol_welfare_welfare_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2764,7 +2847,7 @@ func (x *CSPigbankTakeCoin) String() string { func (*CSPigbankTakeCoin) ProtoMessage() {} func (x *CSPigbankTakeCoin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[39] + mi := &file_protocol_welfare_welfare_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2777,7 +2860,7 @@ func (x *CSPigbankTakeCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPigbankTakeCoin.ProtoReflect.Descriptor instead. func (*CSPigbankTakeCoin) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{39} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{40} } // 存钱罐领取金币 @@ -2787,19 +2870,16 @@ type SCPigbankTakeCoin struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 - TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 - BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 - DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,7,opt,name=Price,proto3" json:"Price,omitempty"` //消耗钻石原价 + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 + TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + RewardItems []*PropInfo `protobuf:"bytes,4,rep,name=RewardItems,proto3" json:"RewardItems,omitempty"` } func (x *SCPigbankTakeCoin) Reset() { *x = SCPigbankTakeCoin{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[40] + mi := &file_protocol_welfare_welfare_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2812,7 +2892,7 @@ func (x *SCPigbankTakeCoin) String() string { func (*SCPigbankTakeCoin) ProtoMessage() {} func (x *SCPigbankTakeCoin) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[40] + mi := &file_protocol_welfare_welfare_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2825,7 +2905,7 @@ func (x *SCPigbankTakeCoin) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPigbankTakeCoin.ProtoReflect.Descriptor instead. func (*SCPigbankTakeCoin) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{40} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{41} } func (x *SCPigbankTakeCoin) GetOpRetCode() OpResultCode { @@ -2849,32 +2929,11 @@ func (x *SCPigbankTakeCoin) GetTakeTimes() int32 { return 0 } -func (x *SCPigbankTakeCoin) GetCostDiamond() int64 { +func (x *SCPigbankTakeCoin) GetRewardItems() []*PropInfo { if x != nil { - return x.CostDiamond + return x.RewardItems } - return 0 -} - -func (x *SCPigbankTakeCoin) GetBankMaxCoin() int64 { - if x != nil { - return x.BankMaxCoin - } - return 0 -} - -func (x *SCPigbankTakeCoin) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCPigbankTakeCoin) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 + return nil } // 钻石存钱罐信息 @@ -2888,7 +2947,7 @@ type CSDiamondBankGetInfo struct { func (x *CSDiamondBankGetInfo) Reset() { *x = CSDiamondBankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[41] + mi := &file_protocol_welfare_welfare_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2901,7 +2960,7 @@ func (x *CSDiamondBankGetInfo) String() string { func (*CSDiamondBankGetInfo) ProtoMessage() {} func (x *CSDiamondBankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[41] + mi := &file_protocol_welfare_welfare_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2914,7 +2973,110 @@ func (x *CSDiamondBankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSDiamondBankGetInfo.ProtoReflect.Descriptor instead. func (*CSDiamondBankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{41} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{42} +} + +type PigBankDiamondInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IndexId int32 `protobuf:"varint,1,opt,name=IndexId,proto3" json:"IndexId,omitempty"` + TakeDiamond float64 `protobuf:"fixed64,2,opt,name=TakeDiamond,proto3" json:"TakeDiamond,omitempty"` // + BankMaxDiamond int64 `protobuf:"varint,3,opt,name=BankMaxDiamond,proto3" json:"BankMaxDiamond,omitempty"` // 存钱罐最大储存值 + DayBuyMaxCnt int32 `protobuf:"varint,4,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 + Price int64 `protobuf:"varint,5,opt,name=Price,proto3" json:"Price,omitempty"` //原价 + NowPrice int64 `protobuf:"varint,6,opt,name=NowPrice,proto3" json:"NowPrice,omitempty"` //现价 + ShopId int32 `protobuf:"varint,7,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商城ID + DiamondExc map[int64]int64 `protobuf:"bytes,8,rep,name=DiamondExc,proto3" json:"DiamondExc,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` +} + +func (x *PigBankDiamondInfo) Reset() { + *x = PigBankDiamondInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PigBankDiamondInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PigBankDiamondInfo) ProtoMessage() {} + +func (x *PigBankDiamondInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 PigBankDiamondInfo.ProtoReflect.Descriptor instead. +func (*PigBankDiamondInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{43} +} + +func (x *PigBankDiamondInfo) GetIndexId() int32 { + if x != nil { + return x.IndexId + } + return 0 +} + +func (x *PigBankDiamondInfo) GetTakeDiamond() float64 { + if x != nil { + return x.TakeDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetBankMaxDiamond() int64 { + if x != nil { + return x.BankMaxDiamond + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDayBuyMaxCnt() int32 { + if x != nil { + return x.DayBuyMaxCnt + } + return 0 +} + +func (x *PigBankDiamondInfo) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *PigBankDiamondInfo) GetNowPrice() int64 { + if x != nil { + return x.NowPrice + } + return 0 +} + +func (x *PigBankDiamondInfo) GetShopId() int32 { + if x != nil { + return x.ShopId + } + return 0 +} + +func (x *PigBankDiamondInfo) GetDiamondExc() map[int64]int64 { + if x != nil { + return x.DiamondExc + } + return nil } // 钻石存钱罐信息 @@ -2924,20 +3086,16 @@ type SCDiamondBankGetInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 - BankDiamond float64 `protobuf:"fixed64,2,opt,name=BankDiamond,proto3" json:"BankDiamond,omitempty"` // 当前已存钻石 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - BankMaxCoin int64 `protobuf:"varint,4,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最大储存值 - DayBuyMaxCnt int32 `protobuf:"varint,5,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` //原价 - NowPrice int64 `protobuf:"varint,7,opt,name=NowPrice,proto3" json:"NowPrice,omitempty"` //现价 - ShopId int32 `protobuf:"varint,8,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商城ID + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 + BankDiamond float64 `protobuf:"fixed64,2,opt,name=BankDiamond,proto3" json:"BankDiamond,omitempty"` // 当前已存钻石 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + InfoArr []*PigBankDiamondInfo `protobuf:"bytes,4,rep,name=infoArr,proto3" json:"infoArr,omitempty"` // 奖励道具 } func (x *SCDiamondBankGetInfo) Reset() { *x = SCDiamondBankGetInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[42] + mi := &file_protocol_welfare_welfare_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2950,7 +3108,7 @@ func (x *SCDiamondBankGetInfo) String() string { func (*SCDiamondBankGetInfo) ProtoMessage() {} func (x *SCDiamondBankGetInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[42] + mi := &file_protocol_welfare_welfare_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2963,7 +3121,7 @@ func (x *SCDiamondBankGetInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCDiamondBankGetInfo.ProtoReflect.Descriptor instead. func (*SCDiamondBankGetInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{42} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{44} } func (x *SCDiamondBankGetInfo) GetOpRetCode() OpResultCode { @@ -2987,39 +3145,11 @@ func (x *SCDiamondBankGetInfo) GetTakeTimes() int32 { return 0 } -func (x *SCDiamondBankGetInfo) GetBankMaxCoin() int64 { +func (x *SCDiamondBankGetInfo) GetInfoArr() []*PigBankDiamondInfo { if x != nil { - return x.BankMaxCoin + return x.InfoArr } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetNowPrice() int64 { - if x != nil { - return x.NowPrice - } - return 0 -} - -func (x *SCDiamondBankGetInfo) GetShopId() int32 { - if x != nil { - return x.ShopId - } - return 0 + return nil } // 钻石存钱罐领取金币 @@ -3032,17 +3162,12 @@ type SCDiamondBankTakeDiamond struct { OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 TakeDiamondNum float64 `protobuf:"fixed64,2,opt,name=TakeDiamondNum,proto3" json:"TakeDiamondNum,omitempty"` // 领取钻石数量 TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - BankMaxDiamond int64 `protobuf:"varint,4,opt,name=BankMaxDiamond,proto3" json:"BankMaxDiamond,omitempty"` // 存钱罐最大储存值 - DayBuyMaxCnt int32 `protobuf:"varint,5,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 - Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` //原价 - NowPrice int64 `protobuf:"varint,7,opt,name=NowPrice,proto3" json:"NowPrice,omitempty"` //现价 - ShopId int32 `protobuf:"varint,8,opt,name=ShopId,proto3" json:"ShopId,omitempty"` //商城ID } func (x *SCDiamondBankTakeDiamond) Reset() { *x = SCDiamondBankTakeDiamond{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + mi := &file_protocol_welfare_welfare_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3055,7 +3180,7 @@ func (x *SCDiamondBankTakeDiamond) String() string { func (*SCDiamondBankTakeDiamond) ProtoMessage() {} func (x *SCDiamondBankTakeDiamond) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[43] + mi := &file_protocol_welfare_welfare_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3068,7 +3193,7 @@ func (x *SCDiamondBankTakeDiamond) ProtoReflect() protoreflect.Message { // Deprecated: Use SCDiamondBankTakeDiamond.ProtoReflect.Descriptor instead. func (*SCDiamondBankTakeDiamond) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{43} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{45} } func (x *SCDiamondBankTakeDiamond) GetOpRetCode() OpResultCode { @@ -3092,41 +3217,6 @@ func (x *SCDiamondBankTakeDiamond) GetTakeTimes() int32 { return 0 } -func (x *SCDiamondBankTakeDiamond) GetBankMaxDiamond() int64 { - if x != nil { - return x.BankMaxDiamond - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetDayBuyMaxCnt() int32 { - if x != nil { - return x.DayBuyMaxCnt - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetPrice() int64 { - if x != nil { - return x.Price - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetNowPrice() int64 { - if x != nil { - return x.NowPrice - } - return 0 -} - -func (x *SCDiamondBankTakeDiamond) GetShopId() int32 { - if x != nil { - return x.ShopId - } - return 0 -} - // 赛季通行证信息 //PACKET_CSPermitInfo type CSPermitInfo struct { @@ -3138,7 +3228,7 @@ type CSPermitInfo struct { func (x *CSPermitInfo) Reset() { *x = CSPermitInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[44] + mi := &file_protocol_welfare_welfare_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +3241,7 @@ func (x *CSPermitInfo) String() string { func (*CSPermitInfo) ProtoMessage() {} func (x *CSPermitInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[44] + mi := &file_protocol_welfare_welfare_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +3254,7 @@ func (x *CSPermitInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitInfo.ProtoReflect.Descriptor instead. func (*CSPermitInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{44} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{46} } type PropInfo struct { @@ -3179,7 +3269,7 @@ type PropInfo struct { func (x *PropInfo) Reset() { *x = PropInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[45] + mi := &file_protocol_welfare_welfare_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3192,7 +3282,7 @@ func (x *PropInfo) String() string { func (*PropInfo) ProtoMessage() {} func (x *PropInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[45] + mi := &file_protocol_welfare_welfare_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3205,7 +3295,7 @@ func (x *PropInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PropInfo.ProtoReflect.Descriptor instead. func (*PropInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{45} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{47} } func (x *PropInfo) GetItemId() int32 { @@ -3235,7 +3325,7 @@ type PropItem struct { func (x *PropItem) Reset() { *x = PropItem{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[46] + mi := &file_protocol_welfare_welfare_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3248,7 +3338,7 @@ func (x *PropItem) String() string { func (*PropItem) ProtoMessage() {} func (x *PropItem) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[46] + mi := &file_protocol_welfare_welfare_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3261,7 +3351,7 @@ func (x *PropItem) ProtoReflect() protoreflect.Message { // Deprecated: Use PropItem.ProtoReflect.Descriptor instead. func (*PropItem) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{46} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{48} } func (x *PropItem) GetAward() []*PropInfo { @@ -3299,7 +3389,7 @@ type PermitAward struct { func (x *PermitAward) Reset() { *x = PermitAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[47] + mi := &file_protocol_welfare_welfare_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3312,7 +3402,7 @@ func (x *PermitAward) String() string { func (*PermitAward) ProtoMessage() {} func (x *PermitAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[47] + mi := &file_protocol_welfare_welfare_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3325,7 +3415,7 @@ func (x *PermitAward) ProtoReflect() protoreflect.Message { // Deprecated: Use PermitAward.ProtoReflect.Descriptor instead. func (*PermitAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{47} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{49} } func (x *PermitAward) GetExp() int64 { @@ -3369,7 +3459,7 @@ type PermitShow struct { func (x *PermitShow) Reset() { *x = PermitShow{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[48] + mi := &file_protocol_welfare_welfare_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3382,7 +3472,7 @@ func (x *PermitShow) String() string { func (*PermitShow) ProtoMessage() {} func (x *PermitShow) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[48] + mi := &file_protocol_welfare_welfare_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3395,7 +3485,7 @@ func (x *PermitShow) ProtoReflect() protoreflect.Message { // Deprecated: Use PermitShow.ProtoReflect.Descriptor instead. func (*PermitShow) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{48} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{50} } func (x *PermitShow) GetShowType() int32 { @@ -3432,7 +3522,7 @@ type PermitRankAward struct { func (x *PermitRankAward) Reset() { *x = PermitRankAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[49] + mi := &file_protocol_welfare_welfare_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3445,7 +3535,7 @@ func (x *PermitRankAward) String() string { func (*PermitRankAward) ProtoMessage() {} func (x *PermitRankAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[49] + mi := &file_protocol_welfare_welfare_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3458,7 +3548,7 @@ func (x *PermitRankAward) ProtoReflect() protoreflect.Message { // Deprecated: Use PermitRankAward.ProtoReflect.Descriptor instead. func (*PermitRankAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{49} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{51} } func (x *PermitRankAward) GetStart() int32 { @@ -3501,7 +3591,7 @@ type SCPermitInfo struct { func (x *SCPermitInfo) Reset() { *x = SCPermitInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[50] + mi := &file_protocol_welfare_welfare_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3514,7 +3604,7 @@ func (x *SCPermitInfo) String() string { func (*SCPermitInfo) ProtoMessage() {} func (x *SCPermitInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[50] + mi := &file_protocol_welfare_welfare_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3527,7 +3617,7 @@ func (x *SCPermitInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitInfo.ProtoReflect.Descriptor instead. func (*SCPermitInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{50} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{52} } func (x *SCPermitInfo) GetExp() int64 { @@ -3600,7 +3690,7 @@ type CSPermitAward struct { func (x *CSPermitAward) Reset() { *x = CSPermitAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[51] + mi := &file_protocol_welfare_welfare_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3613,7 +3703,7 @@ func (x *CSPermitAward) String() string { func (*CSPermitAward) ProtoMessage() {} func (x *CSPermitAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[51] + mi := &file_protocol_welfare_welfare_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3626,7 +3716,7 @@ func (x *CSPermitAward) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitAward.ProtoReflect.Descriptor instead. func (*CSPermitAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{51} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{53} } func (x *CSPermitAward) GetTp() int32 { @@ -3659,7 +3749,7 @@ type SCPermitAward struct { func (x *SCPermitAward) Reset() { *x = SCPermitAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[52] + mi := &file_protocol_welfare_welfare_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3672,7 +3762,7 @@ func (x *SCPermitAward) String() string { func (*SCPermitAward) ProtoMessage() {} func (x *SCPermitAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[52] + mi := &file_protocol_welfare_welfare_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3685,7 +3775,7 @@ func (x *SCPermitAward) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitAward.ProtoReflect.Descriptor instead. func (*SCPermitAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{52} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{54} } func (x *SCPermitAward) GetOpRetCode() OpResultCode { @@ -3734,7 +3824,7 @@ type CSPermitExchangeList struct { func (x *CSPermitExchangeList) Reset() { *x = CSPermitExchangeList{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[53] + mi := &file_protocol_welfare_welfare_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3747,7 +3837,7 @@ func (x *CSPermitExchangeList) String() string { func (*CSPermitExchangeList) ProtoMessage() {} func (x *CSPermitExchangeList) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[53] + mi := &file_protocol_welfare_welfare_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3760,7 +3850,7 @@ func (x *CSPermitExchangeList) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitExchangeList.ProtoReflect.Descriptor instead. func (*CSPermitExchangeList) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{53} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{55} } type ShopInfo struct { @@ -3781,7 +3871,7 @@ type ShopInfo struct { func (x *ShopInfo) Reset() { *x = ShopInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[54] + mi := &file_protocol_welfare_welfare_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3794,7 +3884,7 @@ func (x *ShopInfo) String() string { func (*ShopInfo) ProtoMessage() {} func (x *ShopInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[54] + mi := &file_protocol_welfare_welfare_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3807,7 +3897,7 @@ func (x *ShopInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ShopInfo.ProtoReflect.Descriptor instead. func (*ShopInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{54} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{56} } func (x *ShopInfo) GetId() int32 { @@ -3878,7 +3968,7 @@ type SCPermitExchangeList struct { func (x *SCPermitExchangeList) Reset() { *x = SCPermitExchangeList{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[55] + mi := &file_protocol_welfare_welfare_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3891,7 +3981,7 @@ func (x *SCPermitExchangeList) String() string { func (*SCPermitExchangeList) ProtoMessage() {} func (x *SCPermitExchangeList) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[55] + mi := &file_protocol_welfare_welfare_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3904,7 +3994,7 @@ func (x *SCPermitExchangeList) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitExchangeList.ProtoReflect.Descriptor instead. func (*SCPermitExchangeList) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{55} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{57} } func (x *SCPermitExchangeList) GetList() []*ShopInfo { @@ -3927,7 +4017,7 @@ type CSPermitExchange struct { func (x *CSPermitExchange) Reset() { *x = CSPermitExchange{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[56] + mi := &file_protocol_welfare_welfare_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3940,7 +4030,7 @@ func (x *CSPermitExchange) String() string { func (*CSPermitExchange) ProtoMessage() {} func (x *CSPermitExchange) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[56] + mi := &file_protocol_welfare_welfare_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3953,7 +4043,7 @@ func (x *CSPermitExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitExchange.ProtoReflect.Descriptor instead. func (*CSPermitExchange) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{56} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{58} } func (x *CSPermitExchange) GetId() int32 { @@ -3975,7 +4065,7 @@ type SCPermitExchange struct { func (x *SCPermitExchange) Reset() { *x = SCPermitExchange{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[57] + mi := &file_protocol_welfare_welfare_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3988,7 +4078,7 @@ func (x *SCPermitExchange) String() string { func (*SCPermitExchange) ProtoMessage() {} func (x *SCPermitExchange) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[57] + mi := &file_protocol_welfare_welfare_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4001,7 +4091,7 @@ func (x *SCPermitExchange) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitExchange.ProtoReflect.Descriptor instead. func (*SCPermitExchange) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{57} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{59} } func (x *SCPermitExchange) GetOpRetCode() OpResultCode { @@ -4021,7 +4111,7 @@ type CSPermitShop struct { func (x *CSPermitShop) Reset() { *x = CSPermitShop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[58] + mi := &file_protocol_welfare_welfare_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4034,7 +4124,7 @@ func (x *CSPermitShop) String() string { func (*CSPermitShop) ProtoMessage() {} func (x *CSPermitShop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[58] + mi := &file_protocol_welfare_welfare_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4047,7 +4137,7 @@ func (x *CSPermitShop) ProtoReflect() protoreflect.Message { // Deprecated: Use CSPermitShop.ProtoReflect.Descriptor instead. func (*CSPermitShop) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{58} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{60} } //PACKET_SCPermitShop @@ -4065,7 +4155,7 @@ type SCPermitShop struct { func (x *SCPermitShop) Reset() { *x = SCPermitShop{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[59] + mi := &file_protocol_welfare_welfare_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4078,7 +4168,7 @@ func (x *SCPermitShop) String() string { func (*SCPermitShop) ProtoMessage() {} func (x *SCPermitShop) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[59] + mi := &file_protocol_welfare_welfare_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4091,7 +4181,7 @@ func (x *SCPermitShop) ProtoReflect() protoreflect.Message { // Deprecated: Use SCPermitShop.ProtoReflect.Descriptor instead. func (*SCPermitShop) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{59} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{61} } func (x *SCPermitShop) GetId() int32 { @@ -4133,7 +4223,7 @@ type CSLotteryInfo struct { func (x *CSLotteryInfo) Reset() { *x = CSLotteryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[60] + mi := &file_protocol_welfare_welfare_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4146,7 +4236,7 @@ func (x *CSLotteryInfo) String() string { func (*CSLotteryInfo) ProtoMessage() {} func (x *CSLotteryInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[60] + mi := &file_protocol_welfare_welfare_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4159,7 +4249,7 @@ func (x *CSLotteryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use CSLotteryInfo.ProtoReflect.Descriptor instead. func (*CSLotteryInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{60} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{62} } type LotteryInfo struct { @@ -4192,7 +4282,7 @@ type LotteryInfo struct { func (x *LotteryInfo) Reset() { *x = LotteryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[61] + mi := &file_protocol_welfare_welfare_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4205,7 +4295,7 @@ func (x *LotteryInfo) String() string { func (*LotteryInfo) ProtoMessage() {} func (x *LotteryInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[61] + mi := &file_protocol_welfare_welfare_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4218,7 +4308,7 @@ func (x *LotteryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use LotteryInfo.ProtoReflect.Descriptor instead. func (*LotteryInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{61} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{63} } func (x *LotteryInfo) GetId() int64 { @@ -4367,7 +4457,7 @@ type SCLotteryInfo struct { func (x *SCLotteryInfo) Reset() { *x = SCLotteryInfo{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[62] + mi := &file_protocol_welfare_welfare_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4380,7 +4470,7 @@ func (x *SCLotteryInfo) String() string { func (*SCLotteryInfo) ProtoMessage() {} func (x *SCLotteryInfo) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[62] + mi := &file_protocol_welfare_welfare_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4393,7 +4483,7 @@ func (x *SCLotteryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use SCLotteryInfo.ProtoReflect.Descriptor instead. func (*SCLotteryInfo) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{62} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{64} } func (x *SCLotteryInfo) GetInfo() []*LotteryInfo { @@ -4423,7 +4513,7 @@ type NotifyLotteryAward struct { func (x *NotifyLotteryAward) Reset() { *x = NotifyLotteryAward{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[63] + mi := &file_protocol_welfare_welfare_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4436,7 +4526,7 @@ func (x *NotifyLotteryAward) String() string { func (*NotifyLotteryAward) ProtoMessage() {} func (x *NotifyLotteryAward) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[63] + mi := &file_protocol_welfare_welfare_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4449,7 +4539,7 @@ func (x *NotifyLotteryAward) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyLotteryAward.ProtoReflect.Descriptor instead. func (*NotifyLotteryAward) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{63} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{65} } func (x *NotifyLotteryAward) GetInfo() *LotteryInfo { @@ -4472,7 +4562,7 @@ type NotifyLotteryCode struct { func (x *NotifyLotteryCode) Reset() { *x = NotifyLotteryCode{} if protoimpl.UnsafeEnabled { - mi := &file_protocol_welfare_welfare_proto_msgTypes[64] + mi := &file_protocol_welfare_welfare_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4485,7 +4575,7 @@ func (x *NotifyLotteryCode) String() string { func (*NotifyLotteryCode) ProtoMessage() {} func (x *NotifyLotteryCode) ProtoReflect() protoreflect.Message { - mi := &file_protocol_welfare_welfare_proto_msgTypes[64] + mi := &file_protocol_welfare_welfare_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4498,7 +4588,7 @@ func (x *NotifyLotteryCode) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyLotteryCode.ProtoReflect.Descriptor instead. func (*NotifyLotteryCode) Descriptor() ([]byte, []int) { - return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{64} + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{66} } func (x *NotifyLotteryCode) GetInfo() []*LotteryInfo { @@ -4508,6 +4598,302 @@ func (x *NotifyLotteryCode) GetInfo() []*LotteryInfo { return nil } +// 红包信息 +//PACKET_CSRedPacketInfo +type CSRedPacketInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSRedPacketInfo) Reset() { + *x = CSRedPacketInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSRedPacketInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSRedPacketInfo) ProtoMessage() {} + +func (x *CSRedPacketInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 CSRedPacketInfo.ProtoReflect.Descriptor instead. +func (*CSRedPacketInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{67} +} + +//PACKET_SCRedPacketInfo +type SCRedPacketInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info []*RedPacketInfo `protobuf:"bytes,1,rep,name=Info,proto3" json:"Info,omitempty"` // 红包信息 +} + +func (x *SCRedPacketInfo) Reset() { + *x = SCRedPacketInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCRedPacketInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCRedPacketInfo) ProtoMessage() {} + +func (x *SCRedPacketInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 SCRedPacketInfo.ProtoReflect.Descriptor instead. +func (*SCRedPacketInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{68} +} + +func (x *SCRedPacketInfo) GetInfo() []*RedPacketInfo { + if x != nil { + return x.Info + } + return nil +} + +type RedPacketInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // id + StartTs int64 `protobuf:"varint,2,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始时间 + EndTs int64 `protobuf:"varint,3,opt,name=EndTs,proto3" json:"EndTs,omitempty"` // 结束时间 + StayTs int64 `protobuf:"varint,4,opt,name=StayTs,proto3" json:"StayTs,omitempty"` // 持续时长,单位秒;0代表不限制 + RemainCount int64 `protobuf:"varint,5,opt,name=RemainCount,proto3" json:"RemainCount,omitempty"` // 剩余次数;-1代表不限制 + IsJoin bool `protobuf:"varint,6,opt,name=IsJoin,proto3" json:"IsJoin,omitempty"` // 是否参与过 +} + +func (x *RedPacketInfo) Reset() { + *x = RedPacketInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RedPacketInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RedPacketInfo) ProtoMessage() {} + +func (x *RedPacketInfo) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 RedPacketInfo.ProtoReflect.Descriptor instead. +func (*RedPacketInfo) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{69} +} + +func (x *RedPacketInfo) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *RedPacketInfo) GetStartTs() int64 { + if x != nil { + return x.StartTs + } + return 0 +} + +func (x *RedPacketInfo) GetEndTs() int64 { + if x != nil { + return x.EndTs + } + return 0 +} + +func (x *RedPacketInfo) GetStayTs() int64 { + if x != nil { + return x.StayTs + } + return 0 +} + +func (x *RedPacketInfo) GetRemainCount() int64 { + if x != nil { + return x.RemainCount + } + return 0 +} + +func (x *RedPacketInfo) GetIsJoin() bool { + if x != nil { + return x.IsJoin + } + return false +} + +// 抽红包 +//PACKET_CSRedPacketDraw +type CSRedPacketDraw struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 活动id RedPacketInfo.Id 0表示参与过当前的抽奖活动了 +} + +func (x *CSRedPacketDraw) Reset() { + *x = CSRedPacketDraw{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSRedPacketDraw) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSRedPacketDraw) ProtoMessage() {} + +func (x *CSRedPacketDraw) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 CSRedPacketDraw.ProtoReflect.Descriptor instead. +func (*CSRedPacketDraw) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{70} +} + +func (x *CSRedPacketDraw) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +//PACKET_SCRedPacketDraw +type SCRedPacketDraw struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 错误码 + Id int64 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // id + Award []*PropInfo `protobuf:"bytes,3,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励 + RemainCount int64 `protobuf:"varint,4,opt,name=RemainCount,proto3" json:"RemainCount,omitempty"` // 剩余次数;-1代表不限制 +} + +func (x *SCRedPacketDraw) Reset() { + *x = SCRedPacketDraw{} + if protoimpl.UnsafeEnabled { + mi := &file_protocol_welfare_welfare_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCRedPacketDraw) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCRedPacketDraw) ProtoMessage() {} + +func (x *SCRedPacketDraw) ProtoReflect() protoreflect.Message { + mi := &file_protocol_welfare_welfare_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 SCRedPacketDraw.ProtoReflect.Descriptor instead. +func (*SCRedPacketDraw) Descriptor() ([]byte, []int) { + return file_protocol_welfare_welfare_proto_rawDescGZIP(), []int{71} +} + +func (x *SCRedPacketDraw) GetOpRetCode() OpResultCode { + if x != nil { + return x.OpRetCode + } + return OpResultCode_OPRC_Sucess +} + +func (x *SCRedPacketDraw) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *SCRedPacketDraw) GetAward() []*PropInfo { + if x != nil { + return x.Award + } + return nil +} + +func (x *SCRedPacketDraw) GetRemainCount() int64 { + if x != nil { + return x.RemainCount + } + return 0 +} + var File_protocol_welfare_welfare_proto protoreflect.FileDescriptor var file_protocol_welfare_welfare_proto_rawDesc = []byte{ @@ -4761,352 +5147,407 @@ var file_protocol_welfare_welfare_proto_rawDesc = []byte{ 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 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, - 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xff, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, - 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, - 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, - 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, - 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0xc2, 0x02, 0x0a, 0x0f, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 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, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, + 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, - 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x86, 0x02, 0x0a, 0x11, 0x53, - 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, - 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, - 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, - 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, - 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9b, 0x02, 0x0a, 0x14, - 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, + 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x3f, 0x0a, 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, + 0x78, 0x63, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x07, 0x47, 0x6f, 0x6c, 0x64, 0x45, 0x78, 0x63, 0x1a, 0x3a, 0x0a, 0x0c, 0x47, 0x6f, 0x6c, 0x64, + 0x45, 0x78, 0x63, 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, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, + 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb5, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, + 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1c, + 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x07, + 0x69, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x43, + 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, + 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xbd, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, + 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x4f, + 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, + 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x12, 0x33, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf2, 0x02, + 0x0a, 0x12, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x12, 0x26, 0x0a, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, + 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x42, + 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x45, 0x78, 0x63, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x77, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, + 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, + 0x78, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x45, 0x78, 0x63, 0x1a, 0x3d, 0x0a, 0x0f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x45, 0x78, + 0x63, 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, 0xc2, 0x01, 0x0a, 0x14, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x4f, + 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, + 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x12, 0x35, 0x0a, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x69, 0x67, 0x42, + 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, + 0x69, 0x6e, 0x66, 0x6f, 0x41, 0x72, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x18, 0x53, 0x43, 0x44, 0x69, + 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, - 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, - 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, - 0x42, 0x61, 0x6e, 0x6b, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, - 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, - 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, - 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x22, 0xab, 0x02, 0x0a, 0x18, 0x53, 0x43, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, - 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x54, 0x61, 0x6b, + 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x0e, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, + 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x22, + 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x3c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 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, 0x5b, 0x0a, + 0x08, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, + 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x50, + 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, + 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x22, 0x64, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x01, 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, 0x02, 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, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, + 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 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, 0x29, 0x0a, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x08, + 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x73, 0x22, 0x2f, 0x0a, 0x0d, 0x43, 0x53, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x0d, + 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x33, 0x0a, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, + 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0xfe, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, + 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, + 0x47, 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, + 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4e, + 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, + 0x64, 0x22, 0x3d, 0x0a, 0x14, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, + 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0x22, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 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, 0x0e, 0x0a, + 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x62, 0x0a, + 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 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, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x80, 0x04, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x49, 0x64, 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, 0x14, 0x0a, 0x05, + 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, + 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, + 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, + 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, + 0x65, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x22, 0x0a, 0x0c, 0x43, + 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, + 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, + 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x63, 0x0a, 0x0d, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x61, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x61, 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3d, 0x0a, 0x11, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x52, + 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3d, 0x0a, 0x0f, + 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x2a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa1, 0x01, 0x0a, 0x0d, + 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x79, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, + 0x74, 0x61, 0x79, 0x54, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, + 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4a, 0x6f, 0x69, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x4a, 0x6f, 0x69, 0x6e, 0x22, + 0x21, 0x0a, 0x0f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, + 0x61, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x54, - 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x01, 0x52, 0x0e, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, - 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x42, 0x61, 0x6e, 0x6b, 0x4d, - 0x61, 0x78, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, - 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4e, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 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, 0x5b, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, - 0x6d, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x0b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x03, 0x45, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, - 0x22, 0x64, 0x0a, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x1a, - 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 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, 0x02, 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, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x0f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 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, 0x29, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x02, 0x0a, - 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, - 0x03, 0x45, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x45, 0x78, 0x70, 0x12, - 0x14, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x2f, 0x0a, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x53, 0x68, 0x6f, 0x77, 0x52, 0x08, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x12, 0x36, 0x0a, 0x09, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x52, 0x61, 0x6e, 0x6b, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, - 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x73, 0x22, 0x2f, 0x0a, 0x0d, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x02, 0x49, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, - 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x31, 0x12, 0x29, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x32, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, - 0x22, 0x16, 0x0a, 0x14, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xfe, 0x01, 0x0a, 0x08, 0x53, 0x68, 0x6f, - 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x04, - 0x43, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, - 0x6f, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, - 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x22, 0x3d, 0x0a, 0x14, 0x53, 0x43, 0x50, - 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x22, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x47, 0x0a, 0x10, - 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 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, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x6f, 0x70, 0x22, 0x62, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x6f, 0x70, 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, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, - 0x73, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x04, 0x0a, 0x0b, 0x4c, - 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 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, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, - 0x6e, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, - 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, - 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, - 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, - 0x61, 0x72, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, - 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x4c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x4c, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, - 0x61, 0x72, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, - 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x63, 0x0a, - 0x0d, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, - 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x61, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x61, - 0x73, 0x74, 0x22, 0x3e, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x3d, 0x0a, 0x11, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, - 0x6f, 0x2a, 0xf5, 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, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, - 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, - 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 0x6e, - 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, - 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, - 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, - 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, - 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, - 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0d, 0x12, - 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, - 0x43, 0x6f, 0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, - 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10, 0x2a, 0x92, 0x0c, 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, 0x21, 0x0a, - 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, - 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, - 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, - 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, - 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, - 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, - 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, - 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, - 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, - 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, 0x1f, 0x0a, 0x1a, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, 0x12, 0x1f, 0x0a, - 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, - 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, 0x14, 0x12, 0x1f, - 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, - 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9d, 0x14, 0x12, - 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, - 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, - 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, - 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, - 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, - 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, - 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, - 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, - 0x10, 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, - 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, - 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, - 0xe0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, - 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, - 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x10, 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, - 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, - 0x66, 0x6f, 0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe6, 0x16, 0x12, - 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe7, - 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x10, 0xe8, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x16, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0xed, 0x16, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, - 0x6f, 0x10, 0xee, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xef, 0x16, 0x12, - 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf0, 0x16, 0x12, - 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x10, 0xf1, 0x16, 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, - 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x52, 0x65, 0x6d, 0x61, 0x69, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0xf5, 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, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, + 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, + 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, + 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, + 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, + 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, + 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x12, + 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x65, 0x65, + 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10, 0x2a, 0x86, + 0x0d, 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, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, + 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, + 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, + 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, + 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, + 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, + 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, + 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, + 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, + 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, + 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, + 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, + 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, + 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, + 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, + 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, + 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, + 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, + 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, + 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, + 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, + 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, + 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, + 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, + 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, + 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, + 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, + 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, + 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, + 0x70, 0x10, 0xed, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xee, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, + 0x6f, 0x10, 0xef, 0x16, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x10, 0xf0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, + 0x10, 0xf1, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf2, 0x16, + 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf3, 0x16, 0x12, 0x1b, 0x0a, + 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x44, 0x72, 0x61, 0x77, 0x10, 0xf4, 0x16, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x44, 0x72, 0x61, 0x77, 0x10, 0xf5, 0x16, 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, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5122,7 +5563,7 @@ func file_protocol_welfare_welfare_proto_rawDescGZIP() []byte { } var file_protocol_welfare_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_protocol_welfare_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 66) +var file_protocol_welfare_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 75) var file_protocol_welfare_welfare_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: welfare.OpResultCode (SPacketID)(0), // 1: welfare.SPacketID @@ -5163,35 +5604,44 @@ var file_protocol_welfare_welfare_proto_goTypes = []interface{}{ (*SCInviteInfo)(nil), // 36: welfare.SCInviteInfo (*CSBindInvite)(nil), // 37: welfare.CSBindInvite (*SCBindInvite)(nil), // 38: welfare.SCBindInvite - (*CSPigbankGetInfo)(nil), // 39: welfare.CSPigbankGetInfo - (*SCPigbankGetInfo)(nil), // 40: welfare.SCPigbankGetInfo - (*CSPigbankTakeCoin)(nil), // 41: welfare.CSPigbankTakeCoin - (*SCPigbankTakeCoin)(nil), // 42: welfare.SCPigbankTakeCoin - (*CSDiamondBankGetInfo)(nil), // 43: welfare.CSDiamondBankGetInfo - (*SCDiamondBankGetInfo)(nil), // 44: welfare.SCDiamondBankGetInfo - (*SCDiamondBankTakeDiamond)(nil), // 45: welfare.SCDiamondBankTakeDiamond - (*CSPermitInfo)(nil), // 46: welfare.CSPermitInfo - (*PropInfo)(nil), // 47: welfare.PropInfo - (*PropItem)(nil), // 48: welfare.PropItem - (*PermitAward)(nil), // 49: welfare.PermitAward - (*PermitShow)(nil), // 50: welfare.PermitShow - (*PermitRankAward)(nil), // 51: welfare.PermitRankAward - (*SCPermitInfo)(nil), // 52: welfare.SCPermitInfo - (*CSPermitAward)(nil), // 53: welfare.CSPermitAward - (*SCPermitAward)(nil), // 54: welfare.SCPermitAward - (*CSPermitExchangeList)(nil), // 55: welfare.CSPermitExchangeList - (*ShopInfo)(nil), // 56: welfare.ShopInfo - (*SCPermitExchangeList)(nil), // 57: welfare.SCPermitExchangeList - (*CSPermitExchange)(nil), // 58: welfare.CSPermitExchange - (*SCPermitExchange)(nil), // 59: welfare.SCPermitExchange - (*CSPermitShop)(nil), // 60: welfare.CSPermitShop - (*SCPermitShop)(nil), // 61: welfare.SCPermitShop - (*CSLotteryInfo)(nil), // 62: welfare.CSLotteryInfo - (*LotteryInfo)(nil), // 63: welfare.LotteryInfo - (*SCLotteryInfo)(nil), // 64: welfare.SCLotteryInfo - (*NotifyLotteryAward)(nil), // 65: welfare.NotifyLotteryAward - (*NotifyLotteryCode)(nil), // 66: welfare.NotifyLotteryCode - nil, // 67: welfare.SCInviteInfo.PayScoreEntry + (*PigBankCoinInfo)(nil), // 39: welfare.PigBankCoinInfo + (*CSPigbankGetInfo)(nil), // 40: welfare.CSPigbankGetInfo + (*SCPigbankGetInfo)(nil), // 41: welfare.SCPigbankGetInfo + (*CSPigbankTakeCoin)(nil), // 42: welfare.CSPigbankTakeCoin + (*SCPigbankTakeCoin)(nil), // 43: welfare.SCPigbankTakeCoin + (*CSDiamondBankGetInfo)(nil), // 44: welfare.CSDiamondBankGetInfo + (*PigBankDiamondInfo)(nil), // 45: welfare.PigBankDiamondInfo + (*SCDiamondBankGetInfo)(nil), // 46: welfare.SCDiamondBankGetInfo + (*SCDiamondBankTakeDiamond)(nil), // 47: welfare.SCDiamondBankTakeDiamond + (*CSPermitInfo)(nil), // 48: welfare.CSPermitInfo + (*PropInfo)(nil), // 49: welfare.PropInfo + (*PropItem)(nil), // 50: welfare.PropItem + (*PermitAward)(nil), // 51: welfare.PermitAward + (*PermitShow)(nil), // 52: welfare.PermitShow + (*PermitRankAward)(nil), // 53: welfare.PermitRankAward + (*SCPermitInfo)(nil), // 54: welfare.SCPermitInfo + (*CSPermitAward)(nil), // 55: welfare.CSPermitAward + (*SCPermitAward)(nil), // 56: welfare.SCPermitAward + (*CSPermitExchangeList)(nil), // 57: welfare.CSPermitExchangeList + (*ShopInfo)(nil), // 58: welfare.ShopInfo + (*SCPermitExchangeList)(nil), // 59: welfare.SCPermitExchangeList + (*CSPermitExchange)(nil), // 60: welfare.CSPermitExchange + (*SCPermitExchange)(nil), // 61: welfare.SCPermitExchange + (*CSPermitShop)(nil), // 62: welfare.CSPermitShop + (*SCPermitShop)(nil), // 63: welfare.SCPermitShop + (*CSLotteryInfo)(nil), // 64: welfare.CSLotteryInfo + (*LotteryInfo)(nil), // 65: welfare.LotteryInfo + (*SCLotteryInfo)(nil), // 66: welfare.SCLotteryInfo + (*NotifyLotteryAward)(nil), // 67: welfare.NotifyLotteryAward + (*NotifyLotteryCode)(nil), // 68: welfare.NotifyLotteryCode + (*CSRedPacketInfo)(nil), // 69: welfare.CSRedPacketInfo + (*SCRedPacketInfo)(nil), // 70: welfare.SCRedPacketInfo + (*RedPacketInfo)(nil), // 71: welfare.RedPacketInfo + (*CSRedPacketDraw)(nil), // 72: welfare.CSRedPacketDraw + (*SCRedPacketDraw)(nil), // 73: welfare.SCRedPacketDraw + nil, // 74: welfare.SCInviteInfo.PayScoreEntry + nil, // 75: welfare.PigBankCoinInfo.GoldExcEntry + nil, // 76: welfare.PigBankDiamondInfo.DiamondExcEntry } var file_protocol_welfare_welfare_proto_depIdxs = []int32{ 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode @@ -5218,39 +5668,47 @@ var file_protocol_welfare_welfare_proto_depIdxs = []int32{ 0, // 21: welfare.SCWelfareContinuousPayData.OpRetCode:type_name -> welfare.OpResultCode 23, // 22: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 0, // 23: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode - 67, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry + 74, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry 35, // 25: welfare.SCInviteInfo.Awards1:type_name -> welfare.RankAward 35, // 26: welfare.SCInviteInfo.Awards2:type_name -> welfare.RankAward 35, // 27: welfare.SCInviteInfo.Awards3:type_name -> welfare.RankAward 0, // 28: welfare.SCBindInvite.OpRetCode:type_name -> welfare.OpResultCode - 0, // 29: welfare.SCPigbankGetInfo.OpRetCode:type_name -> welfare.OpResultCode - 0, // 30: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode - 0, // 31: welfare.SCDiamondBankGetInfo.OpRetCode:type_name -> welfare.OpResultCode - 0, // 32: welfare.SCDiamondBankTakeDiamond.OpRetCode:type_name -> welfare.OpResultCode - 47, // 33: welfare.PropItem.Award:type_name -> welfare.PropInfo - 48, // 34: welfare.PermitAward.Award1:type_name -> welfare.PropItem - 48, // 35: welfare.PermitAward.Award2:type_name -> welfare.PropItem - 47, // 36: welfare.PermitRankAward.ItemId:type_name -> welfare.PropInfo - 49, // 37: welfare.SCPermitInfo.Award:type_name -> welfare.PermitAward - 50, // 38: welfare.SCPermitInfo.ShowList:type_name -> welfare.PermitShow - 51, // 39: welfare.SCPermitInfo.RankAward:type_name -> welfare.PermitRankAward - 0, // 40: welfare.SCPermitAward.OpRetCode:type_name -> welfare.OpResultCode - 47, // 41: welfare.SCPermitAward.Award1:type_name -> welfare.PropInfo - 47, // 42: welfare.SCPermitAward.Award2:type_name -> welfare.PropInfo - 47, // 43: welfare.ShopInfo.Gain:type_name -> welfare.PropInfo - 47, // 44: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo - 56, // 45: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo - 0, // 46: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode - 47, // 47: welfare.LotteryInfo.Award:type_name -> welfare.PropInfo - 63, // 48: welfare.SCLotteryInfo.Info:type_name -> welfare.LotteryInfo - 63, // 49: welfare.SCLotteryInfo.Last:type_name -> welfare.LotteryInfo - 63, // 50: welfare.NotifyLotteryAward.Info:type_name -> welfare.LotteryInfo - 63, // 51: welfare.NotifyLotteryCode.Info:type_name -> welfare.LotteryInfo - 52, // [52:52] is the sub-list for method output_type - 52, // [52:52] is the sub-list for method input_type - 52, // [52:52] is the sub-list for extension type_name - 52, // [52:52] is the sub-list for extension extendee - 0, // [0:52] is the sub-list for field type_name + 75, // 29: welfare.PigBankCoinInfo.GoldExc:type_name -> welfare.PigBankCoinInfo.GoldExcEntry + 0, // 30: welfare.SCPigbankGetInfo.OpRetCode:type_name -> welfare.OpResultCode + 39, // 31: welfare.SCPigbankGetInfo.infoArr:type_name -> welfare.PigBankCoinInfo + 0, // 32: welfare.SCPigbankTakeCoin.OpRetCode:type_name -> welfare.OpResultCode + 49, // 33: welfare.SCPigbankTakeCoin.RewardItems:type_name -> welfare.PropInfo + 76, // 34: welfare.PigBankDiamondInfo.DiamondExc:type_name -> welfare.PigBankDiamondInfo.DiamondExcEntry + 0, // 35: welfare.SCDiamondBankGetInfo.OpRetCode:type_name -> welfare.OpResultCode + 45, // 36: welfare.SCDiamondBankGetInfo.infoArr:type_name -> welfare.PigBankDiamondInfo + 0, // 37: welfare.SCDiamondBankTakeDiamond.OpRetCode:type_name -> welfare.OpResultCode + 49, // 38: welfare.PropItem.Award:type_name -> welfare.PropInfo + 50, // 39: welfare.PermitAward.Award1:type_name -> welfare.PropItem + 50, // 40: welfare.PermitAward.Award2:type_name -> welfare.PropItem + 49, // 41: welfare.PermitRankAward.ItemId:type_name -> welfare.PropInfo + 51, // 42: welfare.SCPermitInfo.Award:type_name -> welfare.PermitAward + 52, // 43: welfare.SCPermitInfo.ShowList:type_name -> welfare.PermitShow + 53, // 44: welfare.SCPermitInfo.RankAward:type_name -> welfare.PermitRankAward + 0, // 45: welfare.SCPermitAward.OpRetCode:type_name -> welfare.OpResultCode + 49, // 46: welfare.SCPermitAward.Award1:type_name -> welfare.PropInfo + 49, // 47: welfare.SCPermitAward.Award2:type_name -> welfare.PropInfo + 49, // 48: welfare.ShopInfo.Gain:type_name -> welfare.PropInfo + 49, // 49: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo + 58, // 50: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo + 0, // 51: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode + 49, // 52: welfare.LotteryInfo.Award:type_name -> welfare.PropInfo + 65, // 53: welfare.SCLotteryInfo.Info:type_name -> welfare.LotteryInfo + 65, // 54: welfare.SCLotteryInfo.Last:type_name -> welfare.LotteryInfo + 65, // 55: welfare.NotifyLotteryAward.Info:type_name -> welfare.LotteryInfo + 65, // 56: welfare.NotifyLotteryCode.Info:type_name -> welfare.LotteryInfo + 71, // 57: welfare.SCRedPacketInfo.Info:type_name -> welfare.RedPacketInfo + 0, // 58: welfare.SCRedPacketDraw.OpRetCode:type_name -> welfare.OpResultCode + 49, // 59: welfare.SCRedPacketDraw.Award:type_name -> welfare.PropInfo + 60, // [60:60] is the sub-list for method output_type + 60, // [60:60] is the sub-list for method input_type + 60, // [60:60] is the sub-list for extension type_name + 60, // [60:60] is the sub-list for extension extendee + 0, // [0:60] is the sub-list for field type_name } func init() { file_protocol_welfare_welfare_proto_init() } @@ -5704,7 +6162,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPigbankGetInfo); i { + switch v := v.(*PigBankCoinInfo); i { case 0: return &v.state case 1: @@ -5716,7 +6174,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPigbankGetInfo); i { + switch v := v.(*CSPigbankGetInfo); i { case 0: return &v.state case 1: @@ -5728,7 +6186,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPigbankTakeCoin); i { + switch v := v.(*SCPigbankGetInfo); i { case 0: return &v.state case 1: @@ -5740,7 +6198,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPigbankTakeCoin); i { + switch v := v.(*CSPigbankTakeCoin); i { case 0: return &v.state case 1: @@ -5752,7 +6210,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSDiamondBankGetInfo); i { + switch v := v.(*SCPigbankTakeCoin); i { case 0: return &v.state case 1: @@ -5764,7 +6222,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCDiamondBankGetInfo); i { + switch v := v.(*CSDiamondBankGetInfo); i { case 0: return &v.state case 1: @@ -5776,7 +6234,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCDiamondBankTakeDiamond); i { + switch v := v.(*PigBankDiamondInfo); i { case 0: return &v.state case 1: @@ -5788,7 +6246,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitInfo); i { + switch v := v.(*SCDiamondBankGetInfo); i { case 0: return &v.state case 1: @@ -5800,7 +6258,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropInfo); i { + switch v := v.(*SCDiamondBankTakeDiamond); i { case 0: return &v.state case 1: @@ -5812,7 +6270,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropItem); i { + switch v := v.(*CSPermitInfo); i { case 0: return &v.state case 1: @@ -5824,7 +6282,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PermitAward); i { + switch v := v.(*PropInfo); i { case 0: return &v.state case 1: @@ -5836,7 +6294,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PermitShow); i { + switch v := v.(*PropItem); i { case 0: return &v.state case 1: @@ -5848,7 +6306,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PermitRankAward); i { + switch v := v.(*PermitAward); i { case 0: return &v.state case 1: @@ -5860,7 +6318,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitInfo); i { + switch v := v.(*PermitShow); i { case 0: return &v.state case 1: @@ -5872,7 +6330,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitAward); i { + switch v := v.(*PermitRankAward); i { case 0: return &v.state case 1: @@ -5884,7 +6342,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitAward); i { + switch v := v.(*SCPermitInfo); i { case 0: return &v.state case 1: @@ -5896,7 +6354,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitExchangeList); i { + switch v := v.(*CSPermitAward); i { case 0: return &v.state case 1: @@ -5908,7 +6366,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShopInfo); i { + switch v := v.(*SCPermitAward); i { case 0: return &v.state case 1: @@ -5920,7 +6378,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitExchangeList); i { + switch v := v.(*CSPermitExchangeList); i { case 0: return &v.state case 1: @@ -5932,7 +6390,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitExchange); i { + switch v := v.(*ShopInfo); i { case 0: return &v.state case 1: @@ -5944,7 +6402,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitExchange); i { + switch v := v.(*SCPermitExchangeList); i { case 0: return &v.state case 1: @@ -5956,7 +6414,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSPermitShop); i { + switch v := v.(*CSPermitExchange); i { case 0: return &v.state case 1: @@ -5968,7 +6426,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCPermitShop); i { + switch v := v.(*SCPermitExchange); i { case 0: return &v.state case 1: @@ -5980,7 +6438,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CSLotteryInfo); i { + switch v := v.(*CSPermitShop); i { case 0: return &v.state case 1: @@ -5992,7 +6450,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LotteryInfo); i { + switch v := v.(*SCPermitShop); i { case 0: return &v.state case 1: @@ -6004,7 +6462,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SCLotteryInfo); i { + switch v := v.(*CSLotteryInfo); i { case 0: return &v.state case 1: @@ -6016,7 +6474,7 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyLotteryAward); i { + switch v := v.(*LotteryInfo); i { case 0: return &v.state case 1: @@ -6028,6 +6486,30 @@ func file_protocol_welfare_welfare_proto_init() { } } file_protocol_welfare_welfare_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCLotteryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyLotteryAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NotifyLotteryCode); i { case 0: return &v.state @@ -6039,6 +6521,66 @@ func file_protocol_welfare_welfare_proto_init() { return nil } } + file_protocol_welfare_welfare_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSRedPacketInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCRedPacketInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RedPacketInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSRedPacketDraw); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_protocol_welfare_welfare_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCRedPacketDraw); 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{ @@ -6046,7 +6588,7 @@ func file_protocol_welfare_welfare_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_protocol_welfare_welfare_proto_rawDesc, NumEnums: 2, - NumMessages: 66, + NumMessages: 75, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 503dade..8b1220f 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -84,6 +84,12 @@ enum SPacketID { PACKET_SCLotteryInfo = 2927; // 抽奖信息 PACKET_NotifyLotteryAward = 2928; // 通知抽奖中奖 PACKET_NotifyLotteryCode = 2929; // 通知获得抽奖号码 + + PACKET_CSRedPacketInfo = 2930; // 红包信息 + PACKET_SCRedPacketInfo = 2931; // 红包信息 + + PACKET_CSRedPacketDraw = 2932; // 抽红包 + PACKET_SCRedPacketDraw = 2933; // 抽红包 } //救济金领取 @@ -336,6 +342,17 @@ message SCBindInvite{ OpResultCode OpRetCode = 1; //结果 } + +message PigBankCoinInfo{ + int32 IndexId = 1; + int64 TakeCoin = 2; // + int64 BankMaxCoin = 3; // 存钱罐最大储存值 + int32 DayBuyMaxCnt = 4; // 今日最大可购买次数 + int64 Price = 5; //原价 + int64 CostDiamond = 6; //现价 + map GoldExc = 7; // 奖励道具 +} + // 存钱罐信息 //PACKET_CSPigbankGetInfo message CSPigbankGetInfo{ @@ -347,13 +364,9 @@ message SCPigbankGetInfo{ OpResultCode OpRetCode = 1; //结果 int64 BankCoin = 2; // 当前已存金额 int32 TakeTimes = 3; // 领取次数 - int64 CostDiamond = 4; // 耗费钻石 - int64 BankMaxCoin = 5; // 存钱罐最储存值 - int32 DayBuyMaxCnt = 6; // 今日最大可购买次数 - int64 Price = 7; //消耗钻石原价 + repeated PigBankCoinInfo infoArr = 4; } - // 存钱罐领取金币 //PACKET_CSPigbankTakeCoin message CSPigbankTakeCoin{ @@ -365,10 +378,7 @@ message SCPigbankTakeCoin{ OpResultCode OpRetCode = 1; // 结果 int64 TakeCoinNum = 2; // 领取金币数量 int32 TakeTimes = 3; // 领取次数 - int64 CostDiamond = 4; // 耗费钻石 - int64 BankMaxCoin = 5; // 存钱罐最储存值 - int32 DayBuyMaxCnt = 6; // 今日最大可购买次数 - int64 Price = 7; //消耗钻石原价 + repeated PropInfo RewardItems = 4; } // 钻石存钱罐信息 @@ -376,17 +386,24 @@ message SCPigbankTakeCoin{ message CSDiamondBankGetInfo{ } +message PigBankDiamondInfo{ + int32 IndexId = 1; + double TakeDiamond = 2; // + int64 BankMaxDiamond = 3; // 存钱罐最大储存值 + int32 DayBuyMaxCnt = 4; // 今日最大可购买次数 + int64 Price = 5; //原价 + int64 NowPrice = 6; //现价 + int32 ShopId = 7; //商城ID + map DiamondExc = 8; +} + // 钻石存钱罐信息 //PACKET_SCDiamondBankGetInfo message SCDiamondBankGetInfo{ OpResultCode OpRetCode = 1; //结果 double BankDiamond = 2; // 当前已存钻石 int32 TakeTimes = 3; // 领取次数 - int64 BankMaxCoin = 4; // 存钱罐最大储存值 - int32 DayBuyMaxCnt = 5; // 今日最大可购买次数 - int64 Price = 6; //原价 - int64 NowPrice = 7; //现价 - int32 ShopId = 8; //商城ID + repeated PigBankDiamondInfo infoArr = 4; // 奖励道具 } // 钻石存钱罐领取金币 //PACKET_SCDiamondBankTakeDiamond @@ -394,11 +411,7 @@ message SCDiamondBankTakeDiamond{ OpResultCode OpRetCode = 1; // 结果 double TakeDiamondNum = 2; // 领取钻石数量 int32 TakeTimes = 3; // 领取次数 - int64 BankMaxDiamond = 4; // 存钱罐最大储存值 - int32 DayBuyMaxCnt = 5; // 今日最大可购买次数 - int64 Price = 6; //原价 - int64 NowPrice = 7; //现价 - int32 ShopId = 8; //商城ID + //repeated PropInfo RewardItems = 4; } // 赛季通行证信息 @@ -549,4 +562,34 @@ message NotifyLotteryAward{ //PACKET_NotifyLotteryCode message NotifyLotteryCode{ repeated LotteryInfo Info = 1; +} + +// 红包信息 +//PACKET_CSRedPacketInfo +message CSRedPacketInfo{ +} +//PACKET_SCRedPacketInfo +message SCRedPacketInfo{ + repeated RedPacketInfo Info = 1; // 红包信息 +} +message RedPacketInfo{ + int64 Id = 1; // id + int64 StartTs = 2; // 开始时间 + int64 EndTs = 3; // 结束时间 + int64 StayTs = 4; // 持续时长,单位秒;0代表不限制 + int64 RemainCount = 5; // 剩余次数;-1代表不限制 + bool IsJoin = 6; // 是否参与过 +} + +// 抽红包 +//PACKET_CSRedPacketDraw +message CSRedPacketDraw{ + int64 Id = 1; // 活动id RedPacketInfo.Id 0表示参与过当前的抽奖活动了 +} +//PACKET_SCRedPacketDraw +message SCRedPacketDraw{ + OpResultCode OpRetCode = 1; // 错误码 + int64 Id = 2; // id + repeated PropInfo Award = 3; // 奖励 + int64 RemainCount = 4; // 剩余次数;-1代表不限制 } \ No newline at end of file diff --git a/ranksrv/action_gatesrv.go b/ranksrv/action_gatesrv.go index 9576e91..9dd4355 100644 --- a/ranksrv/action_gatesrv.go +++ b/ranksrv/action_gatesrv.go @@ -32,6 +32,10 @@ func init() { com.Register(int(rankproto.Rank_PACKET_CSRoomAward), rankproto.CSRoomAward{}, CSRoomAward) // 竞技馆获奖记录 com.Register(int(rankproto.Rank_PACKET_CSLotteryHistory), rankproto.CSLotteryHistory{}, CSLotteryHistory) + //年兽排行榜 + com.Register(int(rankproto.Rank_PACKET_RANK_CSNian), rankproto.CSNian{}, CSNian) + // 红包历史记录 + com.Register(int(rankproto.Rank_PACKET_CSRedPacketHistory), rankproto.CSRedPacketHistory{}, CSRedPacketHistory) } func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { @@ -646,3 +650,172 @@ func CSLotteryHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int }) return nil } + +func CSNian(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSNian data:", data) + msg, ok := data.(*rankproto.CSNian) + if !ok { + return nil + } + if msg.TypeId == 1 { + rank.NianLuckMgrInstance.Take(d.Platform, 0, func(list []*model.NianInfo, err error) { + if err != nil { + logger.Logger.Errorf("CSNian error: %v", err) + return + } + + page := msg.GetPage() + if page < 0 { + page = 0 + } + pageSize := msg.GetPageSize() + if pageSize < 1 { + pageSize = 10 + } + + start := page * pageSize + end := start + pageSize + if end >= int32(len(list)) { + end = int32(len(list)) + } + + var i int32 + var ranks []*rankproto.NianRankData + if end > start && int(start) < len(list) { + for _, v := range list[start:end] { + r := &rankproto.NianRankData{ + Snid: v.SnId, + Name: v.Name, + Score: v.Luck, + Rank: start + i, + ModId: v.ModId, + } + ranks = append(ranks, r) + i++ + } + } + + var me *rankproto.NianRankData + for k, v := range list { + if v.SnId == d.Snid { + me = &rankproto.NianRankData{ + Snid: v.SnId, + Name: v.Name, + Score: v.Luck, + Rank: int32(k), + ModId: v.ModId, + } + break + } + } + + pack := &rankproto.SCNian{ + Ranks: ranks, + Me: me, + Page: page, + PageSize: pageSize, + Total: int32(len(list)), + } + pack.TypeId = msg.TypeId + common.SendToGate(sid, int(rankproto.Rank_PACKET_RANK_SCNian), pack, s) + logger.Logger.Tracef("SCNian: %v", pack) + }) + } else if msg.TypeId == 2 { + rank.NianDamageMgrInstance.Take(d.Platform, 0, func(list []*model.NianInfo, err error) { + if err != nil { + logger.Logger.Errorf("CSNian error: %v", err) + return + } + + page := msg.GetPage() + if page < 0 { + page = 0 + } + pageSize := msg.GetPageSize() + if pageSize < 1 { + pageSize = 10 + } + + start := page * pageSize + end := start + pageSize + if end >= int32(len(list)) { + end = int32(len(list)) + } + + var i int32 + var ranks []*rankproto.NianRankData + if end > start && int(start) < len(list) { + for _, v := range list[start:end] { + r := &rankproto.NianRankData{ + Snid: v.SnId, + Name: v.Name, + Score: v.Damage, + Rank: start + i, + ModId: v.ModId, + } + ranks = append(ranks, r) + i++ + } + } + + var me *rankproto.NianRankData + for k, v := range list { + if v.SnId == d.Snid { + me = &rankproto.NianRankData{ + Snid: v.SnId, + Name: v.Name, + Score: v.Damage, + Rank: int32(k), + ModId: v.ModId, + } + break + } + } + + pack := &rankproto.SCNian{ + Ranks: ranks, + Me: me, + Page: page, + PageSize: pageSize, + Total: int32(len(list)), + } + pack.TypeId = msg.TypeId + common.SendToGate(sid, int(rankproto.Rank_PACKET_RANK_SCNian), pack, s) + logger.Logger.Tracef("SCCoin: %v", pack) + }) + } + return nil +} + +func CSRedPacketHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSRedPacketHistory data:", data) + msg, ok := data.(*rankproto.CSRedPacketHistory) + if !ok { + return nil + } + + pack := &rankproto.SCRedPacketHistory{} + + var list []*model.RedPacketHistory + var err error + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + list, err = model.GetRedPacketHistory(d.Platform, d.Snid, msg.GetId()) + if err != nil { + logger.Logger.Errorf("GetRedPacketHistory error: %v", err) + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err == nil { + for _, v := range list { + pack.List = append(pack.List, &rankproto.RedPacketHistory{ + Ts: v.Ts, + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + } + + common.SendToGate(sid, int(rankproto.Rank_PACKET_SCRedPacketHistory), pack, s) + }), "CSRedPacketHistory").Start() + return nil +} diff --git a/ranksrv/rank/niandamage.go b/ranksrv/rank/niandamage.go new file mode 100644 index 0000000..afcd3ab --- /dev/null +++ b/ranksrv/rank/niandamage.go @@ -0,0 +1,22 @@ +package rank + +import ( + "mongo.games.com/game/model" + "mongo.games.com/game/ranksrv/com" + "mongo.games.com/goserver/core/logger" +) + +var NianDamageMgrInstance = com.NewListMgr[*model.NianInfo]( + func() int64 { + return int64(model.GameParamData.RankTimeout) + }, + func(platform string, index int32) ([]*model.NianInfo, error) { + logger.Logger.Tracef("load rank nian luck platform:%s", platform) + list, err := model.FindDamageNianRankList(&model.FindNianListArgs{ + Platform: platform, + }) + if err != nil { + return nil, err + } + return list.List, nil + }) diff --git a/ranksrv/rank/nianluck.go b/ranksrv/rank/nianluck.go new file mode 100644 index 0000000..4ffbd7e --- /dev/null +++ b/ranksrv/rank/nianluck.go @@ -0,0 +1,22 @@ +package rank + +import ( + "mongo.games.com/game/model" + "mongo.games.com/game/ranksrv/com" + "mongo.games.com/goserver/core/logger" +) + +var NianLuckMgrInstance = com.NewListMgr[*model.NianInfo]( + func() int64 { + return int64(model.GameParamData.RankTimeout) + }, + func(platform string, index int32) ([]*model.NianInfo, error) { + logger.Logger.Tracef("load rank nian luck platform:%s", platform) + list, err := model.FindLuckNianRankList(&model.FindNianListArgs{ + Platform: platform, + }) + if err != nil { + return nil, err + } + return list.List, nil + }) diff --git a/srvdata/db_actpushcoin.go b/srvdata/db_actpushcoin.go new file mode 100644 index 0000000..df9651f --- /dev/null +++ b/srvdata/db_actpushcoin.go @@ -0,0 +1,77 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_ACTPushCoinMgr = &DB_ACTPushCoinMgr{ + Datas: &server.DB_ACTPushCoinArray{}, + pool: make(map[int32]*server.DB_ACTPushCoin), + +} + +type DB_ACTPushCoinMgr struct { + Datas *server.DB_ACTPushCoinArray + pool map[int32]*server.DB_ACTPushCoin + +} + +func (this *DB_ACTPushCoinMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_ACTPushCoinMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_ACTPushCoinArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_ACTPushCoinMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + + } +} + +func (this *DB_ACTPushCoinMgr) GetData(id int32) *server.DB_ACTPushCoin { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + + +func init() { + DataMgr.register("DB_ACTPushCoin.dat", &ProtobufDataLoader{dh: PBDB_ACTPushCoinMgr}) +} diff --git a/srvdata/db_newyearactivity.go b/srvdata/db_newyearactivity.go new file mode 100644 index 0000000..b7224d7 --- /dev/null +++ b/srvdata/db_newyearactivity.go @@ -0,0 +1,77 @@ + +// Code generated by xlsx2proto. +// DO NOT EDIT! + +package srvdata + +import ( + "google.golang.org/protobuf/proto" + + "mongo.games.com/game/protocol/server" +) + +var PBDB_NewYearActivityMgr = &DB_NewYearActivityMgr{ + Datas: &server.DB_NewYearActivityArray{}, + pool: make(map[int32]*server.DB_NewYearActivity), + +} + +type DB_NewYearActivityMgr struct { + Datas *server.DB_NewYearActivityArray + pool map[int32]*server.DB_NewYearActivity + +} + +func (this *DB_NewYearActivityMgr) unmarshal(data []byte) error { + err := proto.Unmarshal(data, this.Datas) + if err == nil { + this.arrangeData() + } + return err +} + +func (this *DB_NewYearActivityMgr) reunmarshal(data []byte) error { + newDatas := &server.DB_NewYearActivityArray{} + err := proto.Unmarshal(data, newDatas) + if err == nil { + for _, item := range newDatas.Arr { + existItem := this.GetData(item.GetId()) + if existItem == nil { + this.pool[item.GetId()] = item + this.Datas.Arr = append(this.Datas.Arr, item) + + } else { + *existItem = *item + } + } + } + return err +} + +func (this *DB_NewYearActivityMgr) arrangeData() { + if this.Datas == nil { + return + } + + dataArr := this.Datas.GetArr() + if dataArr == nil { + return + } + + for _, data := range dataArr { + this.pool[data.GetId()] = data + + } +} + +func (this *DB_NewYearActivityMgr) GetData(id int32) *server.DB_NewYearActivity { + if data, ok := this.pool[id]; ok { + return data + } + return nil +} + + +func init() { + DataMgr.register("DB_NewYearActivity.dat", &ProtobufDataLoader{dh: PBDB_NewYearActivityMgr}) +} diff --git a/statistics/task/excelmgr.go b/statistics/task/excelmgr.go index bc83808..5856f5f 100644 --- a/statistics/task/excelmgr.go +++ b/statistics/task/excelmgr.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "golang.org/x/exp/maps" "strings" "github.com/mozillazg/go-pinyin" @@ -111,7 +110,7 @@ func (e *ExcelMgr) Save(id int, startTime, endTime string) error { filename := fmt.Sprintf("%s_%s_%s.xlsx", d.DataName, startTime, endTime) - if VP.GetBool("IsDatabaseMode") { + if true { rows, err := d.GetRows("Sheet1") if err != nil { return err @@ -127,21 +126,20 @@ func (e *ExcelMgr) Save(id int, startTime, endTime string) error { index := make(map[string]string) for _, v := range d.Head { cl := ChineseToPinYin([]string{v})[0] - d.TableHead = append(d.TableHead, cl) files[cl] = v if strings.Contains(v, "*") { index[cl] = "INDEX" } } - createSQL := buildCreateTableSQLWithIndices(d.TableName, d.DataName, files, index) + createSQL := buildCreateTableSQLWithIndices(d.TableName, d.DataName, d.TableHead, files, index) if err = db.Exec(createSQL).Error; err != nil { logger.Logger.Errorf("createTable error: %v", err) return err } - if err = insertData(db.DB, d.TableName, maps.Keys(files), rows); err != nil { + if err = insertData(db.DB, d.TableName, d.TableHead, rows); err != nil { logger.Logger.Errorf("insertData error: %v", err) return err } @@ -195,12 +193,13 @@ func (e *ExcelMgr) Pull(id int, startTime, endTime string) (*excelize.File, stri } // 构建创建表的 SQL 语句,支持中文描述和索引 -func buildCreateTableSQLWithIndices(tableName string, comment string, fields map[string]string, indices map[string]string) string { +func buildCreateTableSQLWithIndices(tableName string, comment string, head []string, fields map[string]string, indices map[string]string) string { var columns []string var indexDefs []string // 遍历字段定义 - for field, comment := range fields { + for _, field := range head { + comment := fields[field] column := fmt.Sprintf("`%s` VARCHAR(255) COMMENT '%s'", field, comment) columns = append(columns, column) @@ -234,7 +233,7 @@ func insertData(db *gorm.DB, tableName string, header []string, rows [][]string) insertSQL := fmt.Sprintf("INSERT INTO `%s` (%s) VALUES (%s)", tableName, "`"+strings.Join(header, "`,`")+"`", placeholders) - for _, row := range rows { + for _, row := range rows[1:] { // 确保每行数据长度和表头一致 if len(row) < len(header) { for len(row) < len(header) { diff --git a/statistics/task/handler.go b/statistics/task/handler.go index 7d48057..832da91 100644 --- a/statistics/task/handler.go +++ b/statistics/task/handler.go @@ -16,8 +16,8 @@ data_type 数据类型 3新用户平均局数 4平均倍数 5活跃破产率 -start_time 开始时间 -end_time 结束时间 +start_time 开始时间 格式:2024-12-26 +end_time 结束时间 格式:2024-12-26 */ // Download 下载 diff --git a/statistics/task/main.go b/statistics/task/main.go index 4edf75e..8cae605 100644 --- a/statistics/task/main.go +++ b/statistics/task/main.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "mongo.games.com/goserver/core/utils" "net/http" "os" "os/signal" @@ -13,6 +12,7 @@ import ( "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/mongox" "mongo.games.com/goserver/core/mysqlx" + "mongo.games.com/goserver/core/utils" "mongo.games.com/goserver/core/viperx" "mongo.games.com/game/common" @@ -39,8 +39,8 @@ var ExcelMgrSingle *ExcelMgr func run() { if VP.GetBool("IsDatabaseMode") { - VP.Set("StartTime", common.HMSToTime(0, 0, 0).Format(time.RFC3339)) - VP.Set("EndTime", common.HMSToTime(0, 0, 0).AddDate(0, 0, 1).Format(time.RFC3339)) + VP.Set("StartTime", common.HMSToTime(0, 0, 0).AddDate(0, 0, -1).Format(time.RFC3339)) + VP.Set("EndTime", common.HMSToTime(0, 0, 0).Format(time.RFC3339)) } startTime, err := time.Parse(time.RFC3339, VP.GetString("StartTime")) diff --git a/tools/benchmark/action_login.go b/tools/benchmark/action_login.go new file mode 100644 index 0000000..56cb89c --- /dev/null +++ b/tools/benchmark/action_login.go @@ -0,0 +1,95 @@ +package main + +import ( + "encoding/json" + "fmt" + "math/rand" + "mongo.games.com/goserver/core/timer" + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/model" + "mongo.games.com/game/proto" + loginproto "mongo.games.com/game/protocol/login" + playerproto "mongo.games.com/game/protocol/player" +) + +func init() { + // 心跳 + netlib.Register(int(loginproto.GatePacketID_PACKET_SC_PONG), loginproto.SCPong{}, SCPong) + // 登录 + netlib.Register(int(loginproto.LoginPacketID_PACKET_SC_LOGIN), loginproto.SCLogin{}, SCLogin) + // 玩家信息 + netlib.Register(int(playerproto.PlayerPacketID_PACKET_SC_PLAYERDATA), playerproto.SCPlayerData{}, SCPlayerData) +} + +func SCPong(s *netlib.Session, packetid int, data interface{}) error { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Tracef("SCPong username:%v %v", accountID, data) + return nil +} + +func SCLogin(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCLogin ", data) + + msg, ok := data.(*loginproto.SCLogin) + if !ok { + return nil + } + + if msg.GetOpRetCode() != loginproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Error("登录失败 ", accountID) + s.Close() + return nil + } + + csPlayerData := &playerproto.CSPlayerData{ + AccId: msg.GetAccId(), + } + pp := &model.PlayerParams{ + Platform: 1, + Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)), + City: "北京", + Logininmodel: "app", + } + d, err := json.Marshal(pp) + if err == nil { + csPlayerData.Params = proto.String(string(d)) + } + + s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PLAYERDATA), csPlayerData) + logger.Logger.Info("登录成功 ", msg.GetAccId()) + return nil +} + +func SCPlayerData(s *netlib.Session, packetid int, data interface{}) error { + logger.Logger.Trace("SCPlayerData ", data) + msg, ok := data.(*playerproto.SCPlayerData) + if !ok { + return nil + } + + if msg.GetOpRetCode() != playerproto.OpResultCode_OPRC_Sucess { + accountID := s.GetAttribute(SessionAttributeClientAccountId) + logger.Logger.Errorf("获取玩家信息失败 %v", accountID) + s.Close() + return nil + } + + s.SetAttribute(SessionAttributeUser, msg) + + StartSessionPingTimer(s, timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool { + if !s.IsConned() { + StopSessionPingTimer(s) + return false + } + pack := &loginproto.CSPing{} + s.Send(int(loginproto.GatePacketID_PACKET_CS_PING), pack) + return true + }), nil, time.Second*time.Duration(60+rand.Int31n(100)), -1) + + return nil +} diff --git a/tools/benchmark/config.go b/tools/benchmark/config.go new file mode 100644 index 0000000..a90ad75 --- /dev/null +++ b/tools/benchmark/config.go @@ -0,0 +1,35 @@ +package main + +import ( + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" +) + +var Config = &Configuration{} + +type Configuration struct { + Count int // 机器人总数 + AppId string // appID + Connects netlib.SessionConfig // 网络连接配置 +} + +func (this *Configuration) Name() string { + return "benchmark" +} + +func (this *Configuration) Init() error { + logger.Logger.Tracef("%+v", *this) + if this.Count == 0 { + this.Count = 20 + } + return nil +} + +func (this *Configuration) Close() error { + return nil +} + +func init() { + core.RegistePackage(Config) +} diff --git a/tools/benchmark/config.yaml b/tools/benchmark/config.yaml new file mode 100644 index 0000000..b8d3d9c --- /dev/null +++ b/tools/benchmark/config.yaml @@ -0,0 +1,65 @@ +netlib: + SrvInfo: + Name: BenchmarkServer + Type: 9 + Id: 902 + AreaID: 1 + Banner: + - ================= + - benchmark server + - ================= + IoServices: [] +module: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +executor: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 + Worker: + WorkerCnt: 8 + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 0 +timer: + Options: + QueueBacklog: 1024 + MaxDone: 1024 + Interval: 100 +signal: + SupportSignal: true +benchmark: + Count: 100 + AppId: 5c56d1644966f078bfb90c71 + Connects: + Id: 402 + Type: 4 + AreaId: 1 + Name: ClientService + Ip: 127.0.0.1 + Port: 11001 + Protocol: tcp + Path: / + MaxDone: 200 + MaxPend: 200 + MaxPacket: 65535 + MaxConn: 2000 + RcvBuff: 4096 + SndBuff: 4096 + WriteTimeout: 3600 + ReadTimeout: 3600 + SoLinger: 10 + IsInnerLink: true + NoDelay: true + SupportFragment: true + AuthKey: www.jxjy.games.cn + IsClient: true + AllowMultiConn: true + FilterChain: + - session-filter-auth + HandlerChain: + - handler-gate-session diff --git a/tools/benchmark/connect.go b/tools/benchmark/connect.go new file mode 100644 index 0000000..a580173 --- /dev/null +++ b/tools/benchmark/connect.go @@ -0,0 +1,69 @@ +package main + +import ( + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + "mongo.games.com/goserver/core/netlib" +) + +const ( + // RobotSessionStartId 机器人session开始id + RobotSessionStartId = 100000000 +) + +var ( + BenchMarkModule = &BenchMark{} + WaitConnectSessions []*netlib.SessionConfig +) + +// NewSession 新建session +// id 连接id, 默认自动分配 +func NewSession(id ...int) { + cfg := Config.Connects + if len(id) > 0 && id[0] > 0 { + cfg.Id = id[0] + } else { + BenchMarkModule.idx++ + cfg.Id = BenchMarkModule.idx + } + cfg.Init() + logger.Logger.Info("waite connect session id=", cfg.Id) + WaitConnectSessions = append(WaitConnectSessions, &cfg) +} + +type BenchMark struct { + idx int +} + +func (m *BenchMark) ModuleName() string { + return "benchmark-module" +} + +func (m *BenchMark) Init() { + m.idx = RobotSessionStartId + for i := 0; i < Config.Count; i++ { + NewSession() + } +} + +// Update 机器开始连接游戏服务器 +func (m *BenchMark) Update() { + n := len(WaitConnectSessions) + if n > 0 { + config := WaitConnectSessions[n-1] + WaitConnectSessions = WaitConnectSessions[:n-1] + if err := netlib.Connect(config); err != nil { + logger.Logger.Error("netlib.Connect error", err) + } + } +} + +func (m *BenchMark) Shutdown() { + module.UnregisteModule(m) +} + +func init() { + module.RegisteModule(BenchMarkModule, time.Millisecond, 1) +} diff --git a/tools/benchmark/constants.go b/tools/benchmark/constants.go new file mode 100644 index 0000000..8a87971 --- /dev/null +++ b/tools/benchmark/constants.go @@ -0,0 +1,31 @@ +package main + +import ( + "mongo.games.com/goserver/core/netlib" + "mongo.games.com/goserver/core/timer" + "time" +) + +const ( + SessionAttributeClientAccountId int = iota // 账号 + SessionAttributeUser + SessionAttributePingTimer +) + +func StartSessionPingTimer(s *netlib.Session, act timer.TimerAction, ud interface{}, interval time.Duration, times int) bool { + StopSessionPingTimer(s) + if hTimer, ok := timer.StartTimer(act, ud, interval, times); ok { + s.SetAttribute(SessionAttributePingTimer, hTimer) + return true + } + return false +} + +func StopSessionPingTimer(s *netlib.Session) { + if h, ok := s.GetAttribute(SessionAttributePingTimer).(timer.TimerHandle); ok { + if h != timer.TimerHandle(0) { + timer.StopTimer(h) + s.RemoveAttribute(SessionAttributePingTimer) + } + } +} diff --git a/tools/benchmark/gatesessionhandler.go b/tools/benchmark/gatesessionhandler.go new file mode 100644 index 0000000..e6b06d7 --- /dev/null +++ b/tools/benchmark/gatesessionhandler.go @@ -0,0 +1,97 @@ +package main + +import ( + "crypto/md5" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "math/rand" + "mongo.games.com/game/common" + "mongo.games.com/game/model" + loginproto "mongo.games.com/game/protocol/login" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "strconv" + "sync/atomic" + "time" +) + +/* + 添加到客户端管理器,管理器负责登录 + 当连接断开时,从管理器中移除,判断是否需要重连 +*/ + +const ( + GateSessionHandlerName = "handler-gate-session" +) + +type GateSessionHandler struct { + netlib.BasicSessionHandler +} + +func (g *GateSessionHandler) GetName() string { + return GateSessionHandlerName +} + +func (g *GateSessionHandler) GetInterestOps() uint { + return 1< + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/benchmark/main.go b/tools/benchmark/main.go new file mode 100644 index 0000000..b1fe17b --- /dev/null +++ b/tools/benchmark/main.go @@ -0,0 +1,25 @@ +package main + +import ( + _ "mongo.games.com/game" + + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/module" +) + +func main() { + defer core.ClosePackages() + core.LoadPackages("config.yaml") + // core hook + core.RegisteHook(core.HOOK_BEFORE_START, func() error { + + return nil + }) + core.RegisteHook(core.HOOK_AFTER_STOP, func() error { + + return nil + }) + // module模块 + waiter := module.Start() + waiter.Wait("main()") +} diff --git a/webapi/deprecated.go b/webapi/deprecated.go index bbffa29..8096568 100644 --- a/webapi/deprecated.go +++ b/webapi/deprecated.go @@ -237,3 +237,23 @@ func API_GetActConfig(appId string) ([]byte, error) { func ApiGetInviteLink(appId string, body proto.Message) ([]byte, error) { return postRequest(appId, "/get_invite_link", nil, body, "http", DEFAULT_TIMEOUT) } + +// Debug请求 +type DebugTestReq struct { + Snid int32 `json:"snid"` + Username string `json:"username"` + Count string `json:"count"` + Rpc int32 `json:"rpc"` + Bankcoin int64 `json:"bankcoin"` + Daybuytimes int32 `json:"daybuytimes"` +} + +// Debug返回 +type DebugTestRsp struct { + Code int `json:"code"` + Data struct { + Count int64 `json:"count"` + } `json:"data"` + Message string `json:"message"` + Success bool `json:"success"` +} diff --git a/worldsrv/action_nian.go b/worldsrv/action_nian.go new file mode 100644 index 0000000..8bc3b60 --- /dev/null +++ b/worldsrv/action_nian.go @@ -0,0 +1,859 @@ +package main + +import ( + "math/rand" + "mongo.games.com/game/common" + "mongo.games.com/game/model" + "mongo.games.com/game/mq" + "mongo.games.com/game/protocol/activity" + "mongo.games.com/game/srvdata" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + "strconv" + "strings" + "time" +) + +// 请求年兽信息 +func CSNianData(s *netlib.Session, packetid int, data interface{}, sid int64) error { + if _, ok := data.(*activity.CSNianData); ok { + p := PlayerMgrSington.GetOnlinePlayer(sid) + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + BossMaxHp := int64(0) + for _, value := range sData { + if value.Id == 5 { + BossMaxHp, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + logger.Logger.Trace("请求年兽信息!snid = ", p.SnId) + if p == nil { + logger.Logger.Warn("CSNianData p == nil") + return nil + } + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil || pool.Switch == model.WelfareClose { + return nil + } + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + start, _ := time.Parse(time.DateTime, startTime) + // 转换为时间戳(以秒为单位) + timestamp := start.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + + if p.WelfData.NianData != nil && (p.WelfData.NianData.ActivityStartTime != timestamp || p.WelfData.NianData.ActivityEndTime != endTimestamp) { + logger.Logger.Infof("CSNianData 年兽活动时间变更 清除之前数据 snid= %d", p.SnId) + WelfareMgrSington.ClearActivityNianData(p) + } + + if p.WelfData.NianData == nil { + p.WelfData.NianData = &model.NianData{ + ActivityStartTime: timestamp, + ActivityEndTime: endTimestamp, + } + + } + + if p.WelfData.NianData.BossHp == 0 { + p.WelfData.NianData.BossHp = BossMaxHp + } + //排行榜配置 + rankData := PlatformMgrSingleton.GetConfig(p.Platform).NianRankReward + if rankData == nil { + return nil + } + pack := &activity.SCNianData{} + for _, info := range rankData.RankData { + rankInfo := &activity.NianRankData{} + rankInfo.TypeId = info.TypeId + for _, awardInfo := range info.RankInfo { + rank := &activity.NianRankInfo{} + rank.RankId = awardInfo.RankId + for _, itemInfo := range awardInfo.Award { + rankAwardData := &activity.RankAwardData{ + ItemId: itemInfo.ItemId, + ItemNum: itemInfo.ItemNum, + } + rank.Award = append(rank.Award, rankAwardData) + } + rankInfo.Data = append(rankInfo.Data, rank) + } + pack.RankData = append(pack.RankData, rankInfo) + } + + var intSlice []int + var shopNum []int + for _, value := range sData { + if value.Id == 17 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, _ := strconv.Atoi(s) + intSlice = append(intSlice, num) + } + } + if value.Id == 18 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, _ := strconv.Atoi(s) + shopNum = append(shopNum, num) + } + } + } + for pos, shopId := range intSlice { + num := shopNum[pos] + if num == 0 { + continue + } + shopInfo := &activity.ShopData{} + shopInfo.ShopId = int32(shopId) + shopInfo.ShopNum = p.WelfData.NianData.GiftShop[int32(shopId)] + shopInfo.MaxShopNum = int32(num) + pack.ShopData = append(pack.ShopData, shopInfo) + } + changeData := "" + for _, value := range sData { + if value.Id == 21 { + changeData = value.PropValue + break + } + } + signTime := int64(0) + if p.WelfData.NianData.SignAwardTime > 0 { + nextDay := time.Now().Add(24 * time.Hour).Truncate(24 * time.Hour) + signTime = nextDay.Unix() + } + for _, value := range sData { + if value.Id == 7 { + pack.LuckyRankNeed = value.PropValue + break + } + } + for _, value := range sData { + if value.Id == 8 { + pack.RankNeed = value.PropValue + break + } + } + //签到额外奖励 + for _, value := range sData { + if value.Id == 2 { + strSlice := strings.Split(value.PropValue, ",") + itemId, _ := strconv.Atoi(strSlice[0]) + itemNum, _ := strconv.Atoi(strSlice[1]) + pack.OtherSignAward = append(pack.OtherSignAward, &activity.RankAwardData{ + ItemId: int32(itemId), + ItemNum: int64(itemNum), + }) + break + } + } + pack.OtherSignAwardCount = p.WelfData.NianData.SignOtherAwardCount + pack.OtherSignAwardProp = p.WelfData.NianData.SignOtherAwardProp + count := int64(0) + for _, value := range sData { + if value.Id == 3 { + count, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + pack.OtherSignMaxCount = int32(count) + StartTs := common.IntToTime(int(pool.List[0].BuffStartTime)).Unix() + EndTs := common.IntToTime(int(pool.List[0].BuffEndTime)).Unix() + pack.BuffStartTime = StartTs + pack.BuffEndTime = EndTs + pack.BossHp = p.WelfData.NianData.BossHp + pack.BossMaxHp = BossMaxHp + pack.ActivityStartTime = timestamp + pack.ActivityEndTime = endTimestamp + pack.AwardTime = p.WelfData.NianData.SignAwardTime + pack.BuffCount = p.WelfData.NianData.BuffCount + pack.BuffStatus = p.WelfData.NianData.BuffStatus + pack.SignAwardTime = signTime + pack.ChangeData = changeData + pack.Switch = pool.Switch + pack.AttackMaxHp = p.WelfData.NianData.AttackMaxHp + pack.AttackSumHp = p.WelfData.NianData.AttackSumHp + logger.Logger.Trace("请求年兽活动信息 ", pack) + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianData), pack) + } + return nil +} + +// 攻击年兽 +func CSNianAttack(s *netlib.Session, packetid int, data interface{}, sid int64) error { + if msg, ok := data.(*activity.CSNianAttack); ok { + typeId := msg.TypeId + p := PlayerMgrSington.GetOnlinePlayer(sid) + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + BossMaxHp := int64(0) + for _, value := range sData { + if value.Id == 5 { + BossMaxHp, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + if p.WelfData.NianData == nil { + p.WelfData.NianData = &model.NianData{} + } + if p.WelfData.NianData.BossHp <= 0 { + p.WelfData.NianData.BossHp = BossMaxHp + } + logger.Logger.Trace("客户端请求攻击年兽!snid = ", p.SnId) + if p == nil { + logger.Logger.Warn("CSNianAttack p == nil") + return nil + } + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil { + return nil + } + if pool.Switch == model.WelfareClose { + logger.Logger.Trace("CSNianAttack 活动关闭!") + return nil + } + //判断活动时间 + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + t, _ := time.Parse(time.DateTime, startTime) + // 转换为时间戳(以秒为单位) + timestamp := t.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + nowTime := time.Now().Unix() + if nowTime < timestamp || nowTime > endTimestamp { + return nil + } + + pack := &activity.SCNianAttackData{} + itemId := 0 + itemNum := 1 + count := 1 + if typeId == 1 { + itemId = common.ItemIDLittleGuaranteed + } else if typeId == 2 { + itemId = common.ItemIDLittleGuaranteed + itemNum = 10 + count = 10 + } else if typeId == 3 { + itemId = common.ItemIDBigGuaranteed + } else { + return nil + } + var costItems []*model.Item + costItems = append(costItems, &model.Item{ + ItemId: int32(itemId), + ItemNum: int64(-itemNum), + }) + _, _, result := BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: costItems, + GainWay: common.GainWayNianCost, + Operator: "system", + Remark: "年兽活动消耗", + }) + if !result { + return nil + } + //本次攻击总血量 + AttackHp := int64(0) + LuckyRankNeed := int64(0) + RankNeed := int64(0) + for _, value := range sData { + if value.Id == 7 { + LuckyRankNeed, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + for _, value := range sData { + if value.Id == 8 { + RankNeed, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + //伤害范围 + var intSlice []int + if typeId == 1 || typeId == 2 { + for _, value := range sData { + if value.Id == 9 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, err := strconv.Atoi(s) + if err != nil { + return nil + } + intSlice = append(intSlice, num) + } + break + } + } + } + //保底奖励次数 + floorCount := 0 + for _, value := range sData { + if typeId == 1 || typeId == 2 { + if value.Id == 13 { + floorCount, _ = strconv.Atoi(value.PropValue) + break + } + } else { + if value.Id == 15 { + floorCount, _ = strconv.Atoi(value.PropValue) + break + } + } + } + if typeId == 3 { + for _, value := range sData { + if value.Id == 10 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, err := strconv.Atoi(s) + if err != nil { + return nil + } + intSlice = append(intSlice, num) + } + break + } + } + } + awardInfo := &activity.RankAwardData{} + + for i := 0; i < count; i++ { + //随机伤害值 + randomValue := int64(rand.Intn(intSlice[1]-intSlice[0]+1) + intSlice[0]) + logger.Logger.Tracef("snid :%v 随机到的伤害值是:%d", p.SnId, randomValue) + //计算BUFF + if p.WelfData.NianData.BuffCount > 0 { + randomValue = randomValue + randomValue/2 + p.WelfData.NianData.BuffCount -= 1 + } + if p.WelfData.NianData.AttackMaxHp < randomValue { + p.WelfData.NianData.AttackMaxHp = randomValue + } + AttackHp += randomValue + if typeId == 3 { + p.WelfData.NianData.BigHurt += 1 + //判断是否掉落保底奖励 + var guaranteeItems []*model.Item + if p.WelfData.NianData.BigHurt%int32(floorCount) == 0 { + floorReward := &activity.RankAwardData{} + for _, value := range sData { + if value.Id == 16 { + strSlice := strings.Split(value.PropValue, ",") + FloorItemId, _ := strconv.Atoi(strSlice[0]) + FloorItemNum, _ := strconv.Atoi(strSlice[1]) + guaranteeItems = append(guaranteeItems, &model.Item{ + ItemId: int32(FloorItemId), + ItemNum: int64(FloorItemNum), + }) + floorReward.ItemId = int32(FloorItemId) + floorReward.ItemNum = int64(FloorItemNum) + pack.FloorReward = append(pack.FloorReward, floorReward) + break + } + } + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: guaranteeItems, + GainWay: common.GainWayNianGain_Attack_BigGuarantee, + Operator: "system", + Remark: "年兽活动-大爆竹保底奖励", + }) + //额外掉落 + extraItemId := 0 + extraItemNum := 0 + var intSlice1 []int + for _, value := range sData { + if value.Id == 11 { + extraItemId, _ = strconv.Atoi(value.PropValue) + break + } + } + for _, value := range sData { + if value.Id == 12 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, err := strconv.Atoi(s) + if err != nil { + return nil + } + intSlice1 = append(intSlice1, num) + } + break + } + } + //随机个数 + extraItemNum = rand.Intn(intSlice1[1]-intSlice1[0]+1) + intSlice1[0] + var extraItems []*model.Item + extraItems = append(extraItems, &model.Item{ + ItemId: int32(extraItemId), + ItemNum: int64(extraItemNum), + }) + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: extraItems, + GainWay: common.GainWayNianGain_Attack_BigOther, + Operator: "system", + Remark: "年兽活动-大爆竹额外活动奖励", + }) + extraDrop := &activity.RankAwardData{} + extraDrop.ItemId = int32(extraItemId) + extraDrop.ItemNum = int64(extraItemNum) + pack.ExtraDrop = append(pack.ExtraDrop, extraDrop) + } else { + p.WelfData.NianData.LittleHurt += 1 + //判断是否掉落保底奖励 + var guaranteeItems []*model.Item + if p.WelfData.NianData.LittleHurt%int32(floorCount) == 0 { + floorReward := &activity.RankAwardData{} + for _, value := range sData { + if value.Id == 14 { + strSlice := strings.Split(value.PropValue, ",") + FloorItemId, _ := strconv.Atoi(strSlice[0]) + FloorItemNum, _ := strconv.Atoi(strSlice[1]) + guaranteeItems = append(guaranteeItems, &model.Item{ + ItemId: int32(FloorItemId), + ItemNum: int64(FloorItemNum), + }) + floorReward.ItemId = int32(FloorItemId) + floorReward.ItemNum = int64(FloorItemNum) + pack.FloorReward = append(pack.FloorReward, floorReward) + break + } + } + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: guaranteeItems, + GainWay: common.GainWayNianGain_Attack_LittleGuarantee, + Operator: "system", + Remark: "年兽活动-小爆竹额外掉落奖励", + }) + } + } + p.WelfData.NianData.BossHp -= AttackHp + p.WelfData.NianData.AttackSumHp += AttackHp + isDie := false //是否死亡 + //判断Boss是否死亡 + var bossDieAward []*model.Item + if p.WelfData.NianData.BossHp <= 0 { + isDie = true + p.WelfData.NianData.BossHp = BossMaxHp + p.WelfData.NianData.BossDieCount += 1 + //获取死亡奖励 + var bossDieItems []*model.Item + for _, value := range pool.List[0].BossDieReward { + bossDieItemId := value.ItemId + bossDieItemNum := value.ItemNum + bossDieAward = append(bossDieAward, &model.Item{ + ItemId: bossDieItemId, + ItemNum: bossDieItemNum, + }) + bossDieItems = append(bossDieItems, &model.Item{ + ItemId: bossDieItemId, + ItemNum: bossDieItemNum, + }) + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: bossDieItems, + GainWay: common.GainWayNianGain_BossDie, + Operator: "system", + Remark: "年兽活动-Boss死亡获得", + }) + //年兽死亡额外掉落 + BigHurtCount := 0 + for _, value := range sData { + if value.Id == 19 { + BigHurtCount, _ = strconv.Atoi(value.PropValue) + break + } + } + logger.Logger.Trace("年兽死亡额外掉落 当前已使用BigHurt :", p.WelfData.NianData.BigHurt, "BigHurtCount = ", BigHurtCount) + if p.WelfData.NianData.BigHurt >= int32(BigHurtCount) { + //后台配置额外掉落 + var bossDieOther []*model.Item + for _, info := range pool.List[0].BossDieOtherReward { + if p.WelfData.NianData.OtherAwardNum[info.Id] >= info.DropUp { + logger.Logger.Trace("snid:", p.SnId, "BOSS死亡 额外掉落达到上限 id = ", info.Id, "数量:", p.WelfData.NianData.OtherAwardNum[info.Id]) + continue + } + //随机 + if rand.Intn(100)+1 <= int(info.DropRate) { + otherItemId := info.ItemId + otherItemNum := info.ItemNum + if int32(otherItemNum)+p.WelfData.NianData.OtherAwardNum[info.Id] > info.DropUp { + otherItemNum = int64(info.DropUp - p.WelfData.NianData.OtherAwardNum[info.Id]) + } + if p.WelfData.NianData.OtherAwardNum == nil { + p.WelfData.NianData.OtherAwardNum = make(map[int32]int32) + } + p.WelfData.NianData.OtherAwardNum[info.Id] += int32(otherItemNum) + bossDieOther = append(bossDieOther, &model.Item{ + ItemId: otherItemId, + ItemNum: otherItemNum, + }) + bossDieAward = append(bossDieAward, &model.Item{ + ItemId: otherItemId, + ItemNum: otherItemNum, + }) + + } + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: bossDieOther, + GainWay: common.GainWayNianGain_BossDieOther, + Operator: "system", + Remark: "年兽活动-攻击年兽额外获得", + }) + } + TaskSubjectSingleton.Touch(common.TaskTypeNianBossKill, &TaskData{SnId: p.SnId, Num: 1}) // BOSS死亡 + } + coinItems := []*model.Item{} + coinItems = append(coinItems, &model.Item{ + ItemId: common.ItemIDCoin, + ItemNum: AttackHp, + }) + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: coinItems, + GainWay: common.GainWayNianGain_Attack_Coin, + Operator: "system", + Remark: "年兽活动-攻击年兽获得", + }) + awardInfo.ItemId = common.ItemIDCoin + awardInfo.ItemNum = AttackHp + pack.Award = append(pack.Award, awardInfo) + pack.AttackHp = AttackHp + pack.TypeId = typeId + pack.BossHp = p.WelfData.NianData.BossHp + pack.IsDie = isDie + for _, item := range bossDieAward { + dieInfo := &activity.RankAwardData{} + dieInfo.ItemId = item.ItemId + dieInfo.ItemNum = item.ItemNum + pack.DieAward = append(pack.DieAward, dieInfo) + } + pack.BuffCount = p.WelfData.NianData.BuffCount + pack.AttackMaxHp = p.WelfData.NianData.AttackMaxHp + pack.AttackSumHp = p.WelfData.NianData.AttackSumHp + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianAttackData), pack) + TaskSubjectSingleton.Touch(common.TaskTypeNianBossDamage, &TaskData{SnId: p.SnId, Num: AttackHp}) // 对年兽造成伤害 + //更新年兽排行榜榜 + luckValue := p.WelfData.NianData.AttackMaxHp + luckTime := time.Now().Unix() + if luckValue < LuckyRankNeed { + luckValue = 0 + luckTime = 0 + } + damage := p.WelfData.NianData.AttackSumHp + logger.Logger.Tracef("sndi :%v,当前最大幸运值:%v,“总榜伤害值:%v", p.SnId, p.WelfData.NianData.AttackMaxHp, p.WelfData.NianData.AttackSumHp) + if damage < RankNeed { + damage = 0 + } + if luckValue > 0 || damage > 0 { + log := &model.NianInfo{ + Platform: p.Platform, + SnId: p.SnId, + Name: p.Name, + Luck: luckValue, + Damage: damage, + ModId: p.Roles.ModId, + Ts: time.Now().Unix(), + } + if luckTime > 0 { + log.LuckTime = luckTime + } + mq.Write(log) + logger.Logger.Tracef("更新排行榜数据 snid :%v,log:%v", p.SnId, log) + } + } + return nil +} + +// 请求领取BUFF +func CSNianBuff(s *netlib.Session, packetid int, data interface{}, sid int64) error { + if _, ok := data.(*activity.CSNianBuff); ok { + p := PlayerMgrSington.GetOnlinePlayer(sid) + logger.Logger.Trace("客户端请求请求领取BUFF snid = ", p.SnId) + if p == nil { + return nil + } + if p.WelfData.NianData == nil { + p.WelfData.NianData = &model.NianData{} + } + if p.WelfData.NianData.BuffStatus { + pack := &activity.SCNianBuff{ + OpRetCode: activity.OpResultCode_Nian_OPRC_Error_Nian, + } + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianBuff), pack) + return nil + } + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil { + return nil + } + if pool.Switch == model.WelfareClose { + logger.Logger.Trace("CSNianSignAward 活动关闭!") + return nil + } + StartTs := common.IntToTime(int(pool.List[0].BuffStartTime)).Unix() + EndTs := common.IntToTime(int(pool.List[0].BuffEndTime)).Unix() + //判断领取时间 + if time.Now().Unix() >= StartTs && time.Now().Unix() <= EndTs { + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + count := int64(0) + for _, value := range sData { + if value.Id == 20 { + count, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + p.WelfData.NianData.BuffCount = count + p.WelfData.NianData.BuffStatus = true + pack := &activity.SCNianBuff{ + BuffCount: p.WelfData.NianData.BuffCount, + } + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianBuff), pack) + //统计领取BUff + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_NianBuff, 1)) + } else { + logger.Logger.Trace("CSNianSignAward 活动时间未到!") + pack := &activity.SCNianBuff{ + OpRetCode: activity.OpResultCode_Nian_OPRC_Error_Nian, + } + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianBuff), pack) + } + } + return nil +} + +// 领取签到奖励 +func CSNianSignAward(s *netlib.Session, packetid int, data interface{}, sid int64) error { + if _, ok := data.(*activity.CSNianSignAward); ok { + p := PlayerMgrSington.GetOnlinePlayer(sid) + logger.Logger.Trace("领取签到奖励 snid = ", p.SnId) + if p == nil { + return nil + } + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil { + return nil + } + if pool.Switch == model.WelfareClose { + logger.Logger.Trace("CSNianSignAward 活动关闭!") + return nil + } + //判断活动时间 + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + t, _ := time.Parse(time.DateTime, startTime) + // 转换为时间戳(以秒为单位) + timestamp := t.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + nowTime := time.Now().Unix() + if nowTime < timestamp || nowTime > endTimestamp { + return nil + } + + pack := &activity.SCNianSignAward{} + if p.WelfData.NianData == nil { + p.WelfData.NianData = &model.NianData{} + } + if p.WelfData.NianData.SignAwardTime > 0 { + pack.OpRetCode = activity.OpResultCode_Nian_OPRC_Error_Nian + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianSignAward), pack) + return nil + } + p.WelfData.NianData.SignAwardTime = time.Now().Unix() + //奖励 + pack.SignAwardTime = p.WelfData.NianData.SignAwardTime + var items []*model.Item + for _, info := range pool.List[0].SignReward { + items = append(items, &model.Item{ + ItemId: info.ItemId, + ItemNum: info.ItemNum, + }) + award := &activity.RankAwardData{} + award.ItemId = info.ItemId + award.ItemNum = info.ItemNum + pack.SignAward = append(pack.SignAward, award) + } + //签到额外奖励 + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + count := int64(0) + for _, value := range sData { + if value.Id == 3 { + count, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + var prop int64 + if p.WelfData.NianData.SignOtherAwardProp == 0 { + for _, value := range sData { + if value.Id == 4 { + prop, _ = strconv.ParseInt(value.PropValue, 10, 64) + break + } + } + p.WelfData.NianData.SignOtherAwardProp = int32(prop) + } + if p.WelfData.NianData.SignOtherAwardCount < int32(count) { + //概率 + if rand.Intn(100)+1 < int(p.WelfData.NianData.SignOtherAwardProp) { + for _, value := range sData { + if value.Id == 2 { + strSlice := strings.Split(value.PropValue, ",") + itemId, _ := strconv.Atoi(strSlice[0]) + itemNum, _ := strconv.Atoi(strSlice[1]) + items = append(items, &model.Item{ + ItemId: int32(itemId), + ItemNum: int64(itemNum), + }) + award := &activity.RankAwardData{} + award.ItemId = int32(itemId) + award.ItemNum = int64(itemNum) + pack.OtherSignAward = append(pack.OtherSignAward, award) + break + } + } + p.WelfData.NianData.SignOtherAwardCount += 1 + p.WelfData.NianData.SignOtherAwardProp = 60 + } else { + p.WelfData.NianData.SignOtherAwardProp += int32(prop) + if p.WelfData.NianData.SignOtherAwardProp > 100 { + p.WelfData.NianData.SignOtherAwardProp = 100 + } + } + } + + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + GainWay: common.GainWayNianGain_Sign, + Operator: "system", + Remark: "年兽活动-领取签到奖励获得", + }) + pack.OtherSignAwardCount = p.WelfData.NianData.SignOtherAwardCount + pack.OtherSignAwardProp = p.WelfData.NianData.SignOtherAwardProp + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianSignAward), pack) + TaskSubjectSingleton.Touch(common.TaskTypeNianSign, &TaskData{SnId: p.SnId, Num: 1}) + } + return nil +} + +func CSNianChange(s *netlib.Session, packetid int, data interface{}, sid int64) error { + if msg, ok := data.(*activity.CSNianChange); ok { + p := PlayerMgrSington.GetOnlinePlayer(sid) + logger.Logger.Trace("客户端请求请求年兽兑换 snid = ", p.SnId) + if p == nil { + return nil + } + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil { + return nil + } + if pool.Switch == model.WelfareClose { + logger.Logger.Trace("CSNianSignAward 活动关闭!") + return nil + } + //判断活动时间 + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + t, _ := time.Parse(time.DateTime, startTime) + // 转换为时间戳(以秒为单位) + timestamp := t.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + nowTime := time.Now().Unix() + if nowTime < timestamp || nowTime > endTimestamp { + return nil + } + num := msg.Num + pack := &activity.SCNianChange{} + if num <= 0 || num > 99 { + pack.OpRetCode = activity.OpResultCode_Nian_OPRC_Error_Nian + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianChange), pack) + return nil + } + + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + itemNum := 0 + coin := 0 + diamond := 0 + for _, value := range sData { + if value.Id == 21 { + strSlice := strings.Split(value.PropValue, ",") + diamond, _ = strconv.Atoi(strSlice[0]) + itemNum, _ = strconv.Atoi(strSlice[1]) + coin, _ = strconv.Atoi(strSlice[2]) + break + } + } + if p.Diamond < int64(diamond*int(num)) { + pack.OpRetCode = activity.OpResultCode_Nian_OPRC_Error_Nian + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianChange), pack) + return nil + } + p.AddDiamond(int64(-diamond*int(num)), 0, common.GainWayNianCost, "sys", "年兽活动兑换道具") + var items []*model.Item + items = append(items, &model.Item{ + ItemId: common.ItemIDCoin, + ItemNum: int64(coin * int(num)), + }) + items = append(items, &model.Item{ + ItemId: common.ItemIDLittleGuaranteed, + ItemNum: int64(itemNum * int(num)), + }) + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + GainWay: common.GainWayNianGain_Change, + Operator: "system", + Remark: "年兽活动-兑换", + }) + + pack.Num = num + for _, item := range items { + info := &activity.RankAwardData{ + ItemId: item.ItemId, + ItemNum: item.ItemNum, + } + pack.Award = append(pack.Award, info) + } + p.SendToClient(int(activity.NianPacketID_PACKET_SCNianChange), pack) + } + return nil +} +func init() { + common.Register(int(activity.NianPacketID_PACKET_CSNianData), activity.CSNianData{}, CSNianData) + common.Register(int(activity.NianPacketID_PACKET_CSNianAttack), activity.CSNianAttack{}, CSNianAttack) + common.Register(int(activity.NianPacketID_PACKET_CSNianBuff), activity.CSNianBuff{}, CSNianBuff) + common.Register(int(activity.NianPacketID_PACKET_CSNianSignAward), activity.CSNianSignAward{}, CSNianSignAward) + common.Register(int(activity.NianPacketID_PACKET_CSNianChange), activity.CSNianChange{}, CSNianChange) +} diff --git a/worldsrv/action_pushcoin.go b/worldsrv/action_pushcoin.go new file mode 100644 index 0000000..ca80bc0 --- /dev/null +++ b/worldsrv/action_pushcoin.go @@ -0,0 +1,425 @@ +package main + +import ( + "sort" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/common" + "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/model" + "mongo.games.com/game/protocol/activity" + "mongo.games.com/game/srvdata" +) + +const ( + PowerMax = 700000 + PowerInit = 400000 +) + +var PushCoinItemValue = map[int32]int64{ + common.ItemIDBigCoin: 50000, + common.ItemIDVCard: 10000, + common.ItemIDPlum: 30000, + 30011: 100000000, // 话费卡 + common.ItemIDCoin1: 5000, + common.ItemIDCoin2: 10000, + common.ItemIDCoin3: 15000, +} + +func init() { + // 推币机活动信息 + common.Register(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), activity.CSPushCoinInfo{}, CSPushCoinInfo) + // 推币机玩家操作 + common.Register(int(activity.PushCoinPacketID_PACKET_CSPushCoinPlayerOp), activity.CSPushCoinPlayerOp{}, CSPushCoinPlayerOp) +} + +func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { + _, ok := data.(*activity.CSPushCoinInfo) + if !ok { + return nil + } + + p := PlayerMgrSington.GetOnlinePlayer(sid) + if p == nil { + logger.Logger.Warn("CSPushCoinInfo p == nil") + return nil + } + + if p.WelfData == nil { + logger.Logger.Warn("CSPushCoinInfo p.WelfData == nil") + return nil + } + + if p.WelfData.PushCoin == nil { + InitPlayerPushCoin(p) + } + + pack := &activity.SCPushCoinInfo{ + ShakeTimes: p.WelfData.PushCoin.Shake, + PowerLine: p.WelfData.PushCoin.Power, + PowerLineMax: PowerMax, + RefreshTimes: p.WelfData.PushCoin.Refresh, + } + + for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr { + if v.GetGroup() == 2 { + info := &activity.ExchangeInfo{ + Id: v.GetId(), + TotalTimes: int64(v.GetTimes()), + } + for kk, vv := range v.GetCost() { + info.Cost = append(info.Cost, &activity.ItemInfo{ + ItemId: int32(kk), + ItemNum: int32(vv), + }) + } + sort.Slice(info.Cost, func(i, j int) bool { + return info.Cost[i].ItemId < info.Cost[j].ItemId + }) + for kk, vv := range v.GetGain() { + info.Gain = append(info.Gain, &activity.ItemInfo{ + ItemId: int32(kk), + ItemNum: int32(vv), + }) + } + sort.Slice(info.Gain, func(i, j int) bool { + return info.Gain[i].ItemId < info.Gain[j].ItemId + }) + + info.Times = int64(v.GetTimes() - p.WelfData.PushCoin.Exchange[v.Id]) + if v.GetTimes() == 0 { + info.Times = -1 + info.TotalTimes = -1 + } + + pack.ExchangeList = append(pack.ExchangeList, info) + } + } + + // 转盘 + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + for kk, vv := range v.GetGain() { + pack.DrawList = append(pack.DrawList, &activity.DrawInfo{ + Id: v.GetId(), + ItemId: int32(kk), + ItemNum: int32(vv), + Coin: v.GetValue(), + }) + } + } + + p.SendToClient(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), pack) + logger.Logger.Trace("SCPushCoinInfo: ", pack) + return nil +} + +func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Trace("CSPushCoinPlayerOpHandler Process recv ", data) + msg, ok := data.(*activity.CSPushCoinPlayerOp) + if !ok { + return nil + } + + p := PlayerMgrSington.GetOnlinePlayer(sid) + if p == nil { + logger.Logger.Warn("CSPushCoinPlayerOp p == nil") + return nil + } + + if p.WelfData == nil { + logger.Logger.Warn("CSPushCoinPlayerOp p.WelfData == nil") + return nil + } + + if p.WelfData.PushCoin == nil { + logger.Logger.Warn("CSPushCoinPlayerOp p.WelfData.PushCoin == nil") + return nil + } + + pack := &activity.SCPushCoinPlayerOp{ + OpRetCode: activity.OpResultPushCoinCode_OPRC_PushCoin_Error, + OpCode: msg.GetOpCode(), + } + + switch msg.GetOpCode() { + case activity.OpCodes_OP_Bet: + if msg.GetOpParam() != common.ItemIDCoin1 && msg.GetOpParam() != common.ItemIDCoin2 && msg.GetOpParam() != common.ItemIDCoin3 { + goto here + } + + item := srvdata.GameItemMgr.Get(p.Platform, int32(msg.GetOpParam())) + if item == nil { + goto here + } + + if p.GetCoin() < item.GetNum() { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_BetNotEnough + goto here + } + pack.BetId = int32(msg.GetOpParam()) + + p.AddCoin(-item.GetNum(), common.GainWayPushCoinCost, base.SyncFlag_ToClient, "system", "推币机下注") + // 增加桌面道具 + AddValue(p, map[int32]int64{common.ItemIDCoin: item.GetNum()}) + + case activity.OpCodes_OP_Gain: + + if msg.GetOpParam() == 1 { + // 有效区 + for _, v := range msg.GetOpItem() { + id := v.GetItemId() + val := int64(v.GetItemNum()) + switch v.GetItemId() { + case common.ItemIDBigCoin, common.ItemIDCoin1, common.ItemIDCoin2, common.ItemIDCoin3: + val *= srvdata.GameItemMgr.Get(p.Platform, id).GetNum() + id = common.ItemIDCoin + } + + if p.WelfData.PushCoin.Items[id] < val { + logger.Logger.Errorf("获得道具太多: %d, %d", p.WelfData.PushCoin.Items[id], val) + // 刷新桌面余额 + UpdatePlayerPushCoin(p) + goto here + } + + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: []*model.Item{{ItemId: id, ItemNum: val}}, + GainWay: common.GainWayPushCoinGain, + Operator: "system", + Remark: "推币机掉落获得", + }) + } + } else { + // 无效区 + + } + + for _, v := range msg.GetOpItem() { + // 增加能量条 + AddPower(p, PushCoinItemValue[v.GetItemId()]*int64(v.GetItemNum())) + // 减少桌面道具 + AddValue(p, map[int32]int64{v.GetItemId(): -int64(v.GetItemNum())}) + } + + case activity.OpCodes_OP_Shake: + if p.WelfData.PushCoin.Shake < int32(msg.GetOpParam()) { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ShakeNotEnough + goto here + } + p.WelfData.PushCoin.Shake -= int32(msg.GetOpParam()) + + case activity.OpCodes_OP_Refresh: + UpdatePlayerPushCoin(p) + + case activity.OpCodes_OP_Exchange: + d := srvdata.PBDB_PropExchangeMgr.GetData(int32(msg.GetOpParam())) + if d == nil { + goto here + } + // 兑换次数 + if d.GetTimes() > 0 && p.WelfData.PushCoin.Exchange[d.Id] >= d.GetTimes() { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ExchangeNotEnough + goto here + } + + pack.Exchange = &activity.ExchangeInfo{ + Id: d.Id, + } + var cost, gain []*model.Item + for k, v := range d.GetCost() { + pack.Exchange.Cost = append(pack.Exchange.Cost, &activity.ItemInfo{ + ItemId: int32(k), + ItemNum: int32(v), + }) + if k == common.ItemIDCoin && p.GetCoin() < v { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough + goto here + } + cost = append(cost, &model.Item{ + ItemId: int32(k), + ItemNum: -v, + }) + } + + _, _, ok := BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: cost, + Add: 0, + GainWay: common.GainWayPushCoinExchangeCost, + Operator: "system", + Remark: "推币机活动兑换消耗", + }) + if !ok { + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_ItemNotEnough + goto here + } + + for k, v := range d.GetGain() { + pack.Exchange.Gain = append(pack.Exchange.Gain, &activity.ItemInfo{ + ItemId: int32(k), + ItemNum: int32(v), + }) + if k == common.ItemIDShake { + p.WelfData.PushCoin.Shake += int32(v) + continue + } + gain = append(gain, &model.Item{ + ItemId: int32(k), + ItemNum: v, + }) + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: gain, + Cost: cost, + Add: 0, + GainWay: common.GainWatPushCoinExchangeGain, + Operator: "system", + Remark: "推币机活动兑换获得", + }) + if p.WelfData.PushCoin.Exchange == nil { + p.WelfData.PushCoin.Exchange = make(map[int32]int32) + } + p.WelfData.PushCoin.Exchange[d.Id]++ + + default: + return nil + } + + pack.OpRetCode = activity.OpResultPushCoinCode_OPRC_PushCoin_Success + +here: + p.SendToClient(int(activity.PushCoinPacketID_PACKET_SCPushCoinPlayerOp), pack) + logger.Logger.Trace("SCPushCoinPlayerOp: ", pack) + + return nil +} + +func InitPlayerPushCoin(p *Player) { + // 初始化 + p.WelfData.PushCoin = &model.PushCoinData{ + Power: PowerInit, + Exchange: make(map[int32]int32), + Items: map[int32]int64{ + common.ItemIDVCard: 1, + common.ItemIDCoin: 50 * 5000, + common.ItemIDPlum: 1, + }, + } +} + +func UpdatePlayerPushCoin(p *Player) { + p.WelfData.PushCoin.Refresh++ + // 50个金币 + p.WelfData.PushCoin.Items = map[int32]int64{ + common.ItemIDCoin: 50 * 5000, + } +} + +func AddPower(p *Player, value int64) { + if value < 0 { + return + } + p.WelfData.PushCoin.Power += value + if p.WelfData.PushCoin.Power > PowerMax { + p.WelfData.PushCoin.Power = PowerMax + } + p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyPowerLine), &activity.NotifyPowerLine{ + PowerLine: p.WelfData.PushCoin.Power, + PowerLineMax: PowerMax, + }) + if value <= 0 { + return + } + // 抽奖 + Draw(p) +} + +func Draw(p *Player) { + if p.WelfData.PushCoin.Power < PowerMax { + return + } + p.WelfData.PushCoin.Power = 0 + var index int32 = -1 + switch p.WelfData.PushCoin.Dram { + case 0: + // 必中大金币 + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + for kk := range v.GetGain() { + if kk == common.ItemIDBigCoin { + index = v.GetId() + break + } + } + } + + case 1: + // 必中v卡 + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + for kk := range v.GetGain() { + if kk == common.ItemIDVCard { + index = v.GetId() + break + } + } + } + + default: + var n int32 + rand := common.RandInt(10000) + for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr { + if rand < int(n+v.GetRate()) { + index = v.GetId() + break + } + n += v.GetRate() + } + } + p.WelfData.PushCoin.Dram++ + + if index >= 0 { + d := srvdata.PBDB_ACTPushCoinMgr.GetData(index) + if d != nil { + pack := &activity.DrawInfo{ + Id: d.GetId(), + Coin: d.GetValue(), + } + for k, v := range d.GetGain() { + pack.ItemId = int32(k) + pack.ItemNum = int32(v) + } + if pack.Coin > 0 || pack.ItemId > 0 { + p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack) + // 增加能量条 + AddPower(p, 0) + } + } + } +} + +func AddValue(p *Player, item map[int32]int64) { + if item == nil { + return + } + if p.WelfData != nil && p.WelfData.PushCoin != nil { + if p.WelfData.PushCoin.Items == nil { + p.WelfData.PushCoin.Items = make(map[int32]int64) + } + for k, v := range item { + if v > 0 { + switch k { + case common.ItemIDCoin1, common.ItemIDCoin2, common.ItemIDCoin3, common.ItemIDBigCoin: + p.WelfData.PushCoin.Items[common.ItemIDCoin] += v * srvdata.GameItemMgr.Get(p.Platform, k).GetNum() + default: + p.WelfData.PushCoin.Items[k] += v + } + } + } + } +} diff --git a/worldsrv/action_shop.go b/worldsrv/action_shop.go index 8ed972e..21f6bfa 100644 --- a/worldsrv/action_shop.go +++ b/worldsrv/action_shop.go @@ -1,6 +1,9 @@ package main import ( + "mongo.games.com/game/srvdata" + "strconv" + "strings" "time" "mongo.games.com/goserver/core/basic" @@ -12,7 +15,6 @@ import ( "mongo.games.com/game/model" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/shop" - "mongo.games.com/game/srvdata" ) type CSShopInfoPacketFactory struct { @@ -189,6 +191,49 @@ func (this *CSVCPayShopHandler) Process(s *netlib.Session, packetid int, data in SendClient(shop.OpResultCode_OPRC_Error) return nil } + case ShopPageNian: + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + var intSlice []int + var shopNum []int + for _, value := range sData { + if value.Id == 17 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, err := strconv.Atoi(s) + if err != nil { + return nil + } + intSlice = append(intSlice, num) + } + } + if value.Id == 18 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, err := strconv.Atoi(s) + if err != nil { + return nil + } + shopNum = append(shopNum, num) + } + } + } + shopPos := 0 + for i, id := range intSlice { + if id == int(shopInfo.Id) { + shopPos = i + break + } + } + num := shopNum[shopPos] + if num > 0 { + if p.WelfData.NianData.GiftShop[shopInfo.Id] >= int32(num) { + return nil + } + } default: } @@ -426,7 +471,8 @@ func (this *CSPayInfoHandler) Process(s *netlib.Session, packetid int, data inte if shopInfo.Page == ShopPageDiamondBank { // 检查每日领取次数 fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -474,6 +520,45 @@ func (this *CSPayInfoHandler) Process(s *netlib.Session, packetid int, data inte return nil } } + if shopInfo.Page == ShopPageNian { + sData := srvdata.PBDB_NewYearActivityMgr.Datas.GetArr() + var intSlice []int + var shopNum []int + for _, value := range sData { + if value.Id == 17 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, _ := strconv.Atoi(s) + intSlice = append(intSlice, num) + } + } + if value.Id == 18 { + str := value.PropValue + strSlice := strings.Split(str, ",") + // 转换每个字符串为 int + for _, s := range strSlice { + num, _ := strconv.Atoi(s) + shopNum = append(shopNum, num) + } + } + } + shopPos := 0 + for i, id := range intSlice { + if id == int(shopInfo.Id) { + shopPos = i + break + } + } + num := shopNum[shopPos] + if num > 0 { + if p.WelfData.NianData.GiftShop[shopInfo.Id] >= int32(num) { + SendClient(shop.OpResultCode_OPRC_Error) + return nil + } + } + } ShopMgrSington.SendAPICreateOrder(p, msg.ConfigPayId, shopInfo, "shop_goods_xj") } else { diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index a88863d..ba9435e 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -27,125 +27,6 @@ func init() { common.Register(int(taskproto.TaskPacketID_PACKET_CSDebugInc), taskproto.CSTaskDebugInc{}, CSTaskDebugInc) } -// GetTaskTimes 获取任务完成进度 -func GetTaskTimes(p *Player, id int32) int64 { - if p.WelfData != nil && p.WelfData.Task[id] != nil { - return p.WelfData.Task[id].N - } - return 0 -} - -// IsTaskFinish 是否任务完成 -func IsTaskFinish(p *Player, id int32) bool { - data := srvdata.PBDB_TaskMgr.GetData(id) - if data == nil { - return false - } - if p.WelfData != nil && p.WelfData.Task[id] != nil { - return p.WelfData.Task[id].N >= data.GetTargetTimes() - } - return false -} - -// IsTaskReward 是否任务奖励已领取 -func IsTaskReward(p *Player, id int32) bool { - if p.WelfData != nil && p.WelfData.Task != nil { - if data := p.WelfData.Task[id]; data != nil && data.Ts > 0 { - t := srvdata.PBDB_TaskMgr.GetData(id) - switch t.ActivityType { - case common.TaskActivityTypeEveryDay, common.TaskActivityTypePermitEveryDay: - if common.TsInSameDay(time.Now().Unix(), data.Ts) { - return true - } - - case common.TaskActivityTypeWeek: - if common.TsInSameWeek(time.Now().Unix(), data.Ts) { - return true - } - - case common.TaskActivityTypeNovice, common.TaskActivityTypeInvite, common.TaskActivityTypeAchieve: - if data.Ts > 0 { - return true - } - case common.TaskActivityTypePermit: - startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs - endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs - if startTs > 0 { - return data.Ts >= startTs && data.Ts < endTs - } - return true - } - } - } - return false -} - -func SendReward(p *Player, m map[int64]int64, tp int32) { - isPermit := p.GetIsPermit() - add := p.GetSkillAdd(common.SkillIdTask) - var items []*model.Item - for k, v := range m { - if k == common.ItemIDPermit && isPermit { - v += int64(float64(v) * common.PermitAdd) - } - // 皮肤技能每日任务金币加成 - if tp == common.TaskActivityTypeEveryDay && add > 0 && k == common.ItemIDCoin { - v += int64((float64(v) * float64(add)) / 100.0) - } - items = append(items, &model.Item{ - ItemId: int32(k), - ItemNum: v, - }) - } - gain := int32(0) - giveType := int32(-1) - switch tp { - case 1: - gain = common.GainWayItemTaskEveryDay - giveType = model.SystemFreeGive_GiveType_TaskEveryDay - case 2: - gain = common.GainWayItemWeekActive - giveType = model.SystemFreeGive_GiveType_TaskWeekActive - case 3: - gain = common.GainWayItemTaskNewPlayer - giveType = model.SystemFreeGive_GiveType_TaskNewPlayer - case 4: - gain = common.GainWayItemTaskInvite - giveType = model.SystemFreeGive_GiveType_TaskInvite - case 5: - gain = common.GainWayItemTaskAchievement - giveType = model.SystemFreeGive_GiveType_TaskAchievement - case 6: - gain = common.GainWayItemTaskPermit - giveType = model.SystemFreeGive_GiveType_TaskPermit - } - BagMgrSingleton.AddItems(&model.AddItemParam{ - Platform: p.Platform, - SnId: p.SnId, - Change: items, - Add: 0, - GainWay: gain, - Operator: "system", - Remark: "任务奖励", - GameId: 0, - GameFreeId: 0, - }) - for _, v := range items { - tp := int32(-1) - if v.ItemId == common.ItemIDCoin { - tp = model.SystemFreeGive_CoinType_Coin - } else if v.ItemId == common.ItemIDDiamond { - tp = model.SystemFreeGive_CoinType_Diamond - } - if !p.IsRob && tp >= 0 && giveType >= 0 { - mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp, v.ItemNum)) - } - } - if giveType == model.SystemFreeGive_GiveType_TaskPermit { - mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_Permit, 1)) - } -} - func CSTaskList(s *netlib.Session, packetId int, data interface{}, sid int64) error { logger.Logger.Tracef("CSTaskList %v", data) msg, ok := data.(*taskproto.CSTaskList) @@ -161,6 +42,14 @@ func CSTaskList(s *netlib.Session, packetId int, data interface{}, sid int64) er ret := &taskproto.SCTaskList{ Tp: msg.GetTp(), } + if msg.GetTp() == common.TaskActivityTypeConsume { + conf := WelfareMgrSington.GetConfig(p.Platform).ConsumeConfig + if conf != nil { + ret.StartTs = common.StrTimeToTs(conf.StartTime) + ret.EndTs = common.StrTimeToTs(conf.EndTime) + ret.On = conf.GetOn() == common.On + } + } for _, v := range srvdata.TaskMgr.GetActivityType(msg.GetTp()) { item := &taskproto.TaskData{ @@ -227,7 +116,7 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64) } data := srvdata.PBDB_TaskMgr.GetData(id) if data != nil { - SendReward(p, data.Award, msg.Tp) + SendTaskReward(p, data.Award, msg.Tp) for k, vv := range data.GetAward() { if k == common.ItemIDPermit && isPermit { vv += int64(float64(vv) * common.PermitAdd) @@ -247,12 +136,22 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64) taskLog.TaskName = data.GetDes() taskLog.ActivityType = data.GetActivityType() taskLog.TaskType = data.GetTaskType() + taskLog.RemainDiamond = p.Diamond } mq.Write(taskLog) ret.OpCode = taskproto.OpResultCode_OPRC_Success } } + if msg.GetTp() == common.TaskActivityTypeConsume { + conf := WelfareMgrSington.GetConfig(p.Platform).ConsumeConfig + if conf == nil || conf.GetOn() != common.On || now.Unix() < common.StrTimeToTs(conf.StartTime) || now.Unix() >= common.StrTimeToTs(conf.EndTime) { + p.SendToClient(int(taskproto.TaskPacketID_PACKET_SCTaskReward), ret) + logger.Logger.Tracef("SCTaskReward %v", ret) + return nil + } + } + if msg.Tp > 0 && msg.Id == 0 { // 一键领取 for _, v := range srvdata.TaskMgr.GetActivityType(msg.GetTp()) { diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 57353e1..3ec6c0d 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -1344,6 +1344,40 @@ func CSClientUpgrades(s *netlib.Session, packetid int, data interface{}, sid int return nil } +func CSRedPacketInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSRedPacketInfo Process recv %v", data) + _, ok := data.(*welfare.CSRedPacketInfo) + if !ok { + return nil + } + + p := PlayerMgrSington.GetOnlinePlayer(sid) + if p == nil { + return nil + } + + pack := WelfareMgrSington.SendRedPacketInfo(p) + logger.Logger.Tracef("SCRedPacketInfo: %v", pack) + return nil +} + +func CSRedPacketDraw(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSRedPacketDraw Process recv %v", data) + msg, ok := data.(*welfare.CSRedPacketDraw) + if !ok { + return nil + } + + p := PlayerMgrSington.GetOnlinePlayer(sid) + if p == nil { + return nil + } + + pack := WelfareMgrSington.GetRedPacket(p, msg.GetId()) + logger.Logger.Tracef("SCRedPacketDraw: %v", pack) + return nil +} + func init() { // 领取救济金 common.RegisterHandler(int(welfare.SPacketID_PACKET_CS_WELF_GETRELIEFFUND), &CSGetReliefFundHandler{}) @@ -1411,4 +1445,8 @@ func init() { common.Register(int(welfare.SPacketID_PACKET_CSPermitShop), welfare.CSPermitShop{}, CSPermitShop) // 客户端升级奖励信息 common.Register(int(upgrade.PacketID_PACKET_CSClientUpgrades), upgrade.CSClientUpgrades{}, CSClientUpgrades) + // 红包活动信息 + common.Register(int(welfare.SPacketID_PACKET_CSRedPacketInfo), welfare.CSRedPacketInfo{}, CSRedPacketInfo) + // 红包活动领取 + common.Register(int(welfare.SPacketID_PACKET_CSRedPacketDraw), welfare.CSRedPacketDraw{}, CSRedPacketDraw) } diff --git a/worldsrv/lotterymgr.go b/worldsrv/activity_lottery.go similarity index 100% rename from worldsrv/lotterymgr.go rename to worldsrv/activity_lottery.go diff --git a/worldsrv/permitmgr.go b/worldsrv/activity_permit.go similarity index 100% rename from worldsrv/permitmgr.go rename to worldsrv/activity_permit.go diff --git a/worldsrv/activity_redpacket.go b/worldsrv/activity_redpacket.go new file mode 100644 index 0000000..7394d17 --- /dev/null +++ b/worldsrv/activity_redpacket.go @@ -0,0 +1,171 @@ +package main + +import ( + "fmt" + "golang.org/x/exp/maps" + "time" + + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + + "mongo.games.com/game/common" + "mongo.games.com/game/model" + webapiproto "mongo.games.com/game/protocol/webapi" +) + +var RedPacketMgrInst = &RedPacketMgr{ + RedPacketData: make(map[string]map[int64]*model.RedPacket), +} + +func init() { + module.RegisteModule(RedPacketMgrInst, time.Hour, 0) + + common.RegisterClockFunc(&common.ClockFunc{ + OnDayTimerFunc: func() { + RedPacketMgrInst.RedPacketData = make(map[string]map[int64]*model.RedPacket) + }, + }) +} + +type RedPacketMgr struct { + RedPacketData map[string]map[int64]*model.RedPacket // 红包活动状态 平台:活动id:活动状态 +} + +func (m *RedPacketMgr) ModuleName() string { + return "RedPacketMgr" +} + +func (m *RedPacketMgr) Init() { + // 加载红包配置 + for _, v := range PlatformMgrSingleton.GetPlatforms() { + if v == nil || v.IdStr == common.Platform_Sys { + continue + } + list, err := model.GetRedPacketAll(v.IdStr) + if err != nil { + panic(fmt.Sprintf("GetRedPacketAll error: %v", err)) + } + for _, v1 := range list { + if m.RedPacketData[v.IdStr] == nil { + m.RedPacketData[v.IdStr] = make(map[int64]*model.RedPacket) + } + m.RedPacketData[v.IdStr][v1.Cid] = &model.RedPacket{ + Cid: v1.Cid, + Use: v1.Use, + Ts: v1.Ts, + } + } + } +} + +func (m *RedPacketMgr) Update() { +} + +func (m *RedPacketMgr) Shutdown() { + // 保存红包配置 + for k, v := range m.RedPacketData { + if err := model.UpdateRedPacketAll(k, maps.Values(v)); err != nil { + logger.Logger.Errorf("UpdateRedPacketAll error: %v", err) + } + } + + module.UnregisteModule(m) +} + +// GetRemainReward 获取剩余奖励数量 +func (m *RedPacketMgr) GetRemainReward(plt string, id int64) int64 { + v, ok := m.RedPacketData[plt] + if !ok { + v = make(map[int64]*model.RedPacket) + m.RedPacketData[plt] = v + } + d, ok := v[id] + if !ok { + d = &model.RedPacket{ + Cid: id, + Use: make(map[int64]int64), + Ts: time.Now().Unix(), + } + v[id] = d + } + + cfg := WelfareMgrSington.GetConfig(plt).RedPacketConfig + if cfg == nil { + return 0 + } + + for _, v := range cfg.GetList() { + if v.Id == id { + total := 0 + for k1, v1 := range d.Use { + total += int(k1 * v1) + } + + ret := v.GetTotalNum() - int64(total) + if ret < 0 { + ret = 0 + } + return ret + } + } + + return 0 + +} + +// GetRemainTimes 获取剩余次数 +// 返回最大次数和剩余次数 +func (m *RedPacketMgr) GetRemainTimes(p *Player, id int64) (int64, int64) { + var cfg *webapiproto.RedPacketInfo + for _, v := range WelfareMgrSington.GetConfig(p.Platform).RedPacketConfig.GetList() { + if v.GetId() == id { + cfg = v + break + } + } + return m.GetRemainTimesByConfig(p, cfg) +} + +// GetRemainTimesByConfig 获取剩余次数 +// 返回最大次数和剩余次数 +func (m *RedPacketMgr) GetRemainTimesByConfig(p *Player, cfg *webapiproto.RedPacketInfo) (int64, int64) { + if cfg == nil { + return 0, 0 + } + + if cfg.GetMaxCount() <= 0 { + return -1, -1 + } + + n := 0 + if p.WelfData != nil && p.WelfData.RedPacket != nil { + if _, exist := p.WelfData.RedPacket[cfg.GetId()]; exist { + n = int(p.WelfData.RedPacket[cfg.GetId()].N) + } + } + remainCount := cfg.GetMaxCount() - int64(n) + if remainCount < 0 { + remainCount = 0 + } + return cfg.GetMaxCount(), remainCount +} + +// AddUse 添加使用红包 +func (m *RedPacketMgr) AddUse(plt string, id int64, n int64) { + v, ok := m.RedPacketData[plt] + if !ok { + v = make(map[int64]*model.RedPacket) + m.RedPacketData[plt] = v + } + d, ok := v[id] + if !ok { + d = &model.RedPacket{ + Cid: id, + Use: make(map[int64]int64), + Ts: time.Now().Unix(), + } + v[id] = d + } + d.Use[n]++ + d.Ts = time.Now().Unix() +} diff --git a/worldsrv/actmonitormgr.go b/worldsrv/actmonitormgr.go deleted file mode 100644 index 01a8120..0000000 --- a/worldsrv/actmonitormgr.go +++ /dev/null @@ -1,177 +0,0 @@ -package main - -import ( - "math" - "mongo.games.com/game/model" - "mongo.games.com/goserver/core/logger" - "sort" -) - -const ( - ActState_Login int32 = 1 << iota //登录.1 - ActState_Exchange //兑换.2 - ActState_Game //游戏.3 - ActState_Max -) - -var ActMonitorMgrSington = &ActMonitorMgr{ - ActMonitorList: make(map[int64]*ActMonitorInfo), -} - -type ActMonitorInfo struct { - SeqNo int64 - SnId int32 - Platform string //平台 - MonitorType int32 //二进制 1.登录 2.兑换 3.游戏 - CreateTime int64 //创建时间 - Creator string //创建者 - ReMark string //备注 - GameName string //当前所在游戏名字 - State int //玩家状态 0.全部 1.不在线 2.在线 3.游戏中 -} -type ActMonitorMgr struct { - ActMonitorList map[int64]*ActMonitorInfo - NowActSeqNo int64 -} - -// monitorType 自己的类型 flag 当前触发的类型 -func (u *ActMonitorMgr) IsMarkFlag(monitorType, flag int32) bool { - if (monitorType & flag) != 0 { - return true - } - return false -} -func (u *ActMonitorMgr) Init() { - actMonitorData := model.GetAllActMonitorData() - for _, info := range actMonitorData { - ami := &ActMonitorInfo{ - SeqNo: info.SeqNo, - SnId: info.SnId, - Platform: info.Platform, - MonitorType: info.MonitorType, - CreateTime: info.CreateTime, - Creator: info.Creator, - ReMark: info.ReMark, - } - if u.NowActSeqNo < info.SeqNo { - u.NowActSeqNo = info.SeqNo - } - u.ActMonitorList[info.SeqNo] = ami - } -} - -type ActMonitorList struct { - PageNo int - PageSize int - PageSum int - TotalSum int - Data []*ActMonitorInfo -} - -func (u *ActMonitorMgr) QueryAMIList(pageNo, pageSize int, platform string, snid, startTs, endTs, state int) *ActMonitorList { - if len(u.ActMonitorList) == 0 { - return nil - } - var amiList = make([]*ActMonitorInfo, 0) - for _, v := range u.ActMonitorList { - if len(platform) != 0 && v.Platform != platform { - continue - } - if snid != 0 && v.SnId != int32(snid) { - continue - } - if startTs != 0 && endTs != 0 && (v.CreateTime < int64(startTs) || v.CreateTime > int64(endTs)) { - continue - } - if state != 0 && v.State != state { - continue - } - amiList = append(amiList, v) - } - sort.Slice(amiList, func(i, j int) bool { - if amiList[i].SeqNo > amiList[j].SeqNo { - return true - } - return false - }) - totalNum := len(amiList) //总条目 - pageSum := int(math.Ceil(float64(totalNum) / float64(pageSize))) //总页数 - if pageNo <= 0 || pageNo > pageSum { - pageNo = 1 //当前页 - } - start := (pageNo - 1) * pageSize - end := start + pageSize - if totalNum > start { - if totalNum < end { - end = totalNum - } - amiList = amiList[start:end] - } - for k, v := range amiList { - actPlayer := amiList[k] - actPlayer.GameName = "" - p := PlayerMgrSington.GetPlayerBySnId(v.SnId) - if p != nil { - if p.IsOnLine() { - actPlayer.State = 2 - } else { - actPlayer.State = 1 - } - if p.scene != nil { - actPlayer.State = 3 - actPlayer.GameName = p.scene.dbGameFree.GetName() + p.scene.dbGameFree.GetTitle() - } - } else { - actPlayer.State = 1 - } - } - return &ActMonitorList{pageNo, pageSize, pageSum, totalNum, amiList} -} -func (u *ActMonitorMgr) Edit(amt *ActMonitorInfo) { - u.ActMonitorList[amt.SeqNo] = amt -} -func (u *ActMonitorMgr) Del(seqNo int64) { - delete(u.ActMonitorList, seqNo) -} -func (u *ActMonitorMgr) AddSeqNo() int64 { - u.NowActSeqNo++ - return u.NowActSeqNo -} -func (u *ActMonitorMgr) GetSeqNo(snid int32, platform string) int64 { - for _, v := range u.ActMonitorList { - if v.SnId == snid && v.Platform == platform { - return v.SeqNo - } - } - return -1 -} -func (u *ActMonitorMgr) SendActMonitorEvent(eventType, snid int32, name, platform string, billNo, exchangeCoin int64, - gameSceneName string, state int32) { - logger.Logger.Tracef("SendActMonitorEvent eventType:%v snid:%v name:%v platform:%v billNo:%v exchangeCoin:%v "+ - "gameSceneName:%v state:%v", eventType, snid, name, platform, billNo, exchangeCoin, gameSceneName, state) - //seqNo := u.GetSeqNo(snid, platform) - //if data, ok := u.ActMonitorList[seqNo]; ok { - // if u.IsMarkFlag(eventType, data.MonitorType) { - // var flag int32 - // if eventType == ActState_Login { - // flag = 1 - // } else if eventType == ActState_Exchange { - // flag = 2 - // } else if eventType == ActState_Game { - // flag = 3 - // } - // logger.Logger.Tracef("GenerateActMonitorEvent "+ - // "flag:%v eventType:%v snid:%v name:%v platform:%v billNo:%v exchangeCoin:%v "+ - // "gameSceneName:%v state:%v reMark:%v", - // flag, eventType, snid, name, platform, billNo, exchangeCoin, gameSceneName, state, data.ReMark) - // LogChannelSingleton.WriteMQData(model.GenerateActMonitorEvent(flag, snid, name, platform, - // time.Now().Unix(), billNo, exchangeCoin, gameSceneName, state, data.ReMark)) - // } - //} -} -func init() { - //RegisterParallelLoadFunc("用户行为监控列表", func() error { - // ActMonitorMgrSington.Init() - // return nil - //}) -} diff --git a/worldsrv/awardlogmgr.go b/worldsrv/awardlogmgr.go index ac285a5..8833ff5 100644 --- a/worldsrv/awardlogmgr.go +++ b/worldsrv/awardlogmgr.go @@ -96,7 +96,7 @@ func (this *AwardLogManager) UpdateAnnouncerLog(data model.AnnouncerLog) { func (this *AwardLogManager) Init() { this.AwardMap = make(map[string]map[int32]map[int32]int64) for _, v := range PlatformMgrSingleton.platforms { - if v != nil { + if v != nil && v.IdStr != common.Platform_Sys { // 获取道具获得总数 res, err := model.FetchAwardLog(v.IdStr) if err != nil { diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 17767f4..4f149cf 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -106,6 +106,19 @@ func init() { etcd.Register(etcd.ETCDKEY_LotteryConfig, webapi.LotteryConfig{}, platformConfigEvent) // 用户抽奖 etcd.Register(etcd.ETCDKEY_LotteryUser, webapi.UserLottery{}, handlerEvent) + // 存钱罐消耗获得 + etcd.Register(etcd.ETCDKEY_PigBankDiamond, webapi.GamePigBankDiamondConfig{}, platformConfigEvent) + // 存钱罐属性值 + etcd.Register(etcd.ETCDKEY_PigBankProp, webapi.GamePigBankPropConfig{}, platformConfigEvent) + //年兽配置 + etcd.Register(etcd.ETCDKEY_NianConfig, webapi.ActivityNianConfig{}, platformConfigEvent) + etcd.Register(etcd.ETCDKEY_NianRankConfig, webapi.NianRankReward{}, platformConfigEvent) + // 红包配置 + etcd.Register(etcd.KeyRedPacket, webapi.RedPacketConfig{}, platformConfigEvent) + // 累计消耗活动配置 + etcd.Register(etcd.KeyActConsume, webapi.ConsumeConfig{}, platformConfigEvent) + // 推金币活动配置 + etcd.Register(etcd.KeyActPushCoin, webapi.PushCoinConfig{}, platformConfigEvent) } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -347,6 +360,21 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e case *webapi.LotteryConfig: PlatformMgrSingleton.GetConfig(config.Platform).LotteryConfig = config LotteryMgrInst.UpdateConfig(config) + case *webapi.GamePigBankDiamondConfig: + PlatformMgrSingleton.GetConfig(config.Platform).GamePigBankDiamondConfig = config + case *webapi.GamePigBankPropConfig: + PlatformMgrSingleton.GetConfig(config.Platform).GamePigBankPropConfig = config + case *webapi.ActivityNianConfig: + WelfareMgrSington.UpdateActivityNianStatus(config) + case *webapi.NianRankReward: + PlatformMgrSingleton.GetConfig(config.Platform).NianRankReward = config + case *webapi.RedPacketConfig: + WelfareMgrSington.UpdateRedPacket(config, isInit) + case *webapi.ConsumeConfig: + WelfareMgrSington.UpdateConsumeConfig(config) + case *webapi.PushCoinConfig: + WelfareMgrSington.UpdatePushCoinConfig(config) + default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } diff --git a/worldsrv/friendmgr.go b/worldsrv/friendmgr.go index 3c9c8af..1cd30a3 100644 --- a/worldsrv/friendmgr.go +++ b/worldsrv/friendmgr.go @@ -564,13 +564,69 @@ func (this *FriendMgr) FriendAgree(p *Player, destP *model.BindFriend) { } logger.Logger.Tracef(">>FriendAgree %d -> %d, %v", p.SnId, destP.SnId, pack) } + + // 删除申请者的申请列表 + delApplyListFunc := func(plt string, snid int32, applySnid int32) friend.OpResultCode { + // 删除被申请者的申请列表 + list1, err := model.QueryFriendApplyBySnid(plt, snid) + if err != nil { + logger.Logger.Errorf("QueryFriendApplyBySnid %v error: %v", snid, err) + return friend.OpResultCode_OPRC_Error + } + if list1 != nil { + k := 0 + for k < len(list1.ApplySnids) { + if list1.ApplySnids[k].SnId == applySnid { + list1.ApplySnids = append(list1.ApplySnids[:k], list1.ApplySnids[k+1:]...) + model.UpsertFriendApply(plt, snid, list1) + } else { + k++ + } + } + } + // 删除发起方的申请列表 + list2, err := model.QueryFriendApplyListBySnid(plt, applySnid) + if err != nil { + logger.Logger.Errorf("QueryFriendApplyListBySnid %v error: %v", applySnid, err) + return friend.OpResultCode_OPRC_Error + } + if list2 != nil { + k := 0 + for k < len(list2.List) { + if list2.List[k] == snid { + list2.List = append(list2.List[:k], list2.List[k+1:]...) + model.UpsertApplyList(plt, list2) + } else { + k++ + } + } + } + + if applySnid == destP.SnId && list2 != nil { + applyList = list2.List + } + + if applySnid == p.SnId && list2 != nil { + meApplyList = list2.List + } + + return friend.OpResultCode_OPRC_Sucess + } + me := FriendMgrSingleton.GetPlayer(p.Platform, p.SnId) if me == nil { SendToClick(friend.OpResultCode_OPRC_Error) return } if FriendMgrSingleton.IsFriend(p.Platform, p.SnId, destP.SnId) { //已经是好友了 - SendToClick(friend.OpResultCode_OPRC_Friend_AlreadyAdd) + // 删除申请者的申请列表 + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + delApplyListFunc(p.Platform, p.SnId, destP.SnId) + delApplyListFunc(p.Platform, destP.SnId, p.SnId) + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + SendToClick(friend.OpResultCode_OPRC_Friend_AlreadyAdd) + })).StartByFixExecutor(FriendWrite) return } //验证自己 @@ -612,54 +668,6 @@ func (this *FriendMgr) FriendAgree(p *Player, destP *model.BindFriend) { } } - // 删除申请者的申请列表 - delApplyListFunc := func(plt string, snid int32, applySnid int32) friend.OpResultCode { - // 删除被申请者的申请列表 - list1, err := model.QueryFriendApplyBySnid(plt, snid) - if err != nil { - logger.Logger.Errorf("QueryFriendApplyBySnid %v error: %v", snid, err) - return friend.OpResultCode_OPRC_Error - } - if list1 != nil { - k := 0 - for k < len(list1.ApplySnids) { - if list1.ApplySnids[k].SnId == applySnid { - list1.ApplySnids = append(list1.ApplySnids[:k], list1.ApplySnids[k+1:]...) - model.UpsertFriendApply(plt, snid, list1) - } else { - k++ - } - } - } - // 删除发起方的申请列表 - list2, err := model.QueryFriendApplyListBySnid(plt, applySnid) - if err != nil { - logger.Logger.Errorf("QueryFriendApplyListBySnid %v error: %v", applySnid, err) - return friend.OpResultCode_OPRC_Error - } - if list2 != nil { - k := 0 - for k < len(list2.List) { - if list2.List[k] == snid { - list2.List = append(list2.List[:k], list2.List[k+1:]...) - model.UpsertApplyList(plt, list2) - } else { - k++ - } - } - } - - if applySnid == destP.SnId && list2 != nil { - applyList = list2.List - } - - if applySnid == p.SnId && list2 != nil { - meApplyList = list2.List - } - - return friend.OpResultCode_OPRC_Sucess - } - //查看是否在申请列表 code := delApplyListFunc(p.Platform, p.SnId, destP.SnId) if code != friend.OpResultCode_OPRC_Sucess { diff --git a/worldsrv/internal/playerlistener.go b/worldsrv/internal/playerlistener.go index b7d71af..e2d1c51 100644 --- a/worldsrv/internal/playerlistener.go +++ b/worldsrv/internal/playerlistener.go @@ -16,10 +16,12 @@ func RegisterPlayerListener[Player, Scene any](l PlayerListener[Player, Scene]) type PlayerListener[Player, Scene any] interface { common.ClockSinker // 登出相关 - OnPlayerLogined(p Player) // 玩家登录时触发 - OnPlayerLogouted(p Player) // 玩家登出时触发 - OnPlayerDropLine(p Player) // 玩家掉线时触发 - OnPlayerRehold(p Player) // 玩家重新连接时触发 + OnPlayerLogined(p Player) // 玩家登录时触发 + OnPlayerLogouted(p Player) // 玩家登出时触发 + OnPlayerDropLine(p Player) // 玩家掉线时触发 + OnPlayerRehold(p Player) // 玩家重新连接时触发 + OnPlayerDayChanged(p Player, isLogin, isContinue bool) // 玩家跨天时触发 + OnPlayerWeekChanged(p Player, isLogin, isContinue bool) // 玩家跨周时触发 // 业务相关 OnPlayerEnterSceneBefore(p Player, s Scene) // 玩家进入场景前触发 OnPlayerEnterSceneAfter(p Player, s Scene) // 玩家进入场景后触发 @@ -61,6 +63,22 @@ func FirePlayerRehold[Player, Scene any](p Player) { } } +func FirePlayerDayChanged[Player, Scene any](p Player, isLogin, isContinue bool) { + for _, l := range _playerListeners { + if l != nil { + l.(PlayerListener[Player, Scene]).OnPlayerDayChanged(p, isLogin, isContinue) + } + } +} + +func FirePlayerWeekChanged[Player, Scene any](p Player, isLogin, isContinue bool) { + for _, l := range _playerListeners { + if l != nil { + l.(PlayerListener[Player, Scene]).OnPlayerWeekChanged(p, isLogin, isContinue) + } + } +} + func FirePlayerEnterSceneBefore[Player, Scene any](p Player, s Scene) { for _, l := range _playerListeners { if l != nil { @@ -113,16 +131,18 @@ type BasePlayerListener[Player, Scene any] struct { common.ClockFunc } -func (l *BasePlayerListener[Player, Scene]) OnPlayerLogined(p Player) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerLogouted(p Player) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerDropLine(p Player) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerRehold(p Player) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerEnterSceneBefore(p Player, s Scene) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerEnterSceneAfter(p Player, s Scene) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerLeaveSceneBefore(p Player, s Scene) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerLeaveSceneAfter(p Player, s Scene) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerReturnSceneBefore(p Player, s Scene) {} -func (l *BasePlayerListener[Player, Scene]) OnPlayerReturnSceneAfter(p Player, s Scene) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerLogined(p Player) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerLogouted(p Player) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerDropLine(p Player) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerRehold(p Player) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerDayChanged(p Player, isLogin, isContinue bool) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerWeekChanged(p Player, isLogin, isContinue bool) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerEnterSceneBefore(p Player, s Scene) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerEnterSceneAfter(p Player, s Scene) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerLeaveSceneBefore(p Player, s Scene) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerLeaveSceneAfter(p Player, s Scene) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerReturnSceneBefore(p Player, s Scene) {} +func (l *BasePlayerListener[Player, Scene]) OnPlayerReturnSceneAfter(p Player, s Scene) {} type PlayerListenerFunc[Player, Scene any] struct { common.ClockFunc @@ -130,6 +150,8 @@ type PlayerListenerFunc[Player, Scene any] struct { OnPlayerLogoutedFunc func(p Player) OnPlayerDropLineFunc func(p Player) OnPlayerReholdFunc func(p Player) + OnPlayerDayChangedFunc func(p Player, isLogin, isContinue bool) + OnPlayerWeekChangedFunc func(p Player, isLogin, isContinue bool) OnPlayerEnterSceneBeforeFunc func(p Player, s Scene) OnPlayerEnterSceneAfterFunc func(p Player, s Scene) OnPlayerLeaveSceneBeforeFunc func(p Player, s Scene) @@ -162,6 +184,18 @@ func (l *PlayerListenerFunc[Player, Scene]) OnPlayerRehold(p Player) { } } +func (l *PlayerListenerFunc[Player, Scene]) OnPlayerDayChanged(p Player, isLogin, isContinue bool) { + if l.OnPlayerDayChangedFunc != nil { + l.OnPlayerDayChangedFunc(p, isLogin, isContinue) + } +} + +func (l *PlayerListenerFunc[Player, Scene]) OnPlayerWeekChanged(p Player, isLogin, isContinue bool) { + if l.OnPlayerWeekChangedFunc != nil { + l.OnPlayerWeekChangedFunc(p, isLogin, isContinue) + } +} + func (l *PlayerListenerFunc[Player, Scene]) OnPlayerEnterSceneBefore(p Player, s Scene) { if l.OnPlayerEnterSceneBeforeFunc != nil { l.OnPlayerEnterSceneBeforeFunc(p, s) @@ -198,7 +232,7 @@ func (l *PlayerListenerFunc[Player, Scene]) OnPlayerReturnSceneAfter(p Player, s } } -func RegisterPlayerListenerFunc[P, S any](l *PlayerListenerFunc[P, S]) { +func RegisterPlayerListenerFunc[Player, Scene any](l *PlayerListenerFunc[Player, Scene]) { common.RegisterClockFunc(&l.ClockFunc) RegisterPlayerListener(l) } diff --git a/worldsrv/internal/playerloader.go b/worldsrv/internal/playerloader.go index fc9c0b7..58ac9f2 100644 --- a/worldsrv/internal/playerloader.go +++ b/worldsrv/internal/playerloader.go @@ -17,7 +17,7 @@ type PlayerLoadReplay struct { // 重连不会执行 type IPlayerLoad interface { // Load 查询数据库,在task中执行 - Load(platform string, snid int32, data any) *PlayerLoadReplay + Load(platform string, snid int32, playerBaseData any) *PlayerLoadReplay // Callback 数据查询成功的回掉方法 Callback(data any, ret *PlayerLoadReplay) } diff --git a/worldsrv/mq.go b/worldsrv/mq.go index 36f0640..e2ab918 100644 --- a/worldsrv/mq.go +++ b/worldsrv/mq.go @@ -34,6 +34,8 @@ func init() { mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemFreeGive, Data: &model.SystemFreeGive{}}) mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryCode, Data: &model.LotteryCode{}}) mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryLog, Data: &model.LotteryLog{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankNian, Data: &model.NianInfo{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.NianPlayerRank, Data: &model.NianPlayerRankLog{}}) } func init() { diff --git a/worldsrv/player.go b/worldsrv/player.go index ab4289d..064d9ba 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -176,6 +176,14 @@ func (this *Player) init() bool { this.GuideData = make(map[int32]int32) } this.InitRolesAndPets() + // 数据修复 + if this.PlayerData != nil && this.PlayerData.WelfData != nil { + for k, v := range this.PlayerData.WelfData.Task { + if v == nil { + delete(this.PlayerData.WelfData.Task, k) + } + } + } return true } @@ -1646,20 +1654,16 @@ func (this *Player) OnDayTimer(login, continuous bool, t int) { return } this.lastOnDayChange = time.Now().Local() + this.dirty = true + logger.Logger.Infof("(this *Player) (%v) OnDayTimer(%v,%v) ", this.SnId, login, continuous) - this.dirty = true + internal.FirePlayerDayChanged[*Player, *Scene](this, login, continuous) + if login || this.scene == nil { //跨天登录 数据给昨天,今天置为空 this.YesterdayGameData = this.TodayGameData this.TodayGameData = model.NewPlayerGameCtrlData() - /* - for k, v := range this.YesterdayGameData.CtrlData { - t := &model.PlayerGameStatics{} - t.AvgBetCoin = v.AvgBetCoin - this.TodayGameData.CtrlData[k] = t - } - */ } //this.OnTimeDayTotal(continuous, t) @@ -1667,22 +1671,9 @@ func (this *Player) OnDayTimer(login, continuous bool, t int) { //商城数据更新 this.ShopTotal = make(map[int32]*model.ShopTotal) this.ShopLastLookTime = make(map[int32]int64) - // 福利活动更新 - WelfareMgrSington.OnDayChanged(this) this.VipMatchTimes = 0 //VIP商城数据更新 this.UpdateVipShopData() - // 重置每日任务 - if this.WelfData != nil { - if this.WelfData.Task != nil { - for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypeEveryDay) { - this.WelfData.Task[v.GetId()] = &model.TaskData{} - } - for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypePermitEveryDay) { - this.WelfData.Task[v.GetId()] = &model.TaskData{} - } - } - } //周卡数据更新 this.WeekCardAward = make(map[int32]bool) //周卡领取奖励 @@ -1796,13 +1787,15 @@ func (this *Player) OnMonthTimer() { } func (this *Player) OnWeekTimer() { - logger.Logger.Tracef("OnWeekTimer %v", time.Now()) //判断是否一天即可过滤0点多次切换 if common.InSameDayNoZero(time.Now().Local(), this.lastOnWeekChange) { return } this.lastOnWeekChange = time.Now().Local() + logger.Logger.Tracef("OnWeekTimer %v", time.Now()) + internal.FirePlayerWeekChanged[*Player, *Scene](this, false, false) + //清理比赛券 ticket := this.Ticket if ticket > 0 { @@ -1827,14 +1820,6 @@ func (this *Player) OnWeekTimer() { } } - // 重置周任务 - if this.WelfData != nil { - if this.WelfData.Task != nil { - for _, v := range srvdata.TaskMgr.GetActivityType(common.TaskActivityTypeWeek) { - this.WelfData.Task[v.GetId()] = &model.TaskData{} - } - } - } // 重置周任务 // 重置邀请积分 CheckNewWeek(this.Platform, this.SnId) @@ -2892,7 +2877,14 @@ func (this *Player) DoShopInfo(info *model.DbShop, isLogin bool) { //钻石存储罐 if info.PageId == ShopPageDiamondBank { - WelfareMgrSington.DiamondBankTakeCoin(this) + + arrItems := WelfareMgrSington.DiamondBankTakeCoin(this) + for _, v := range arrItems { + itemInfo = append(itemInfo, &playerproto.PayItem{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } } // 通行证 @@ -2909,6 +2901,13 @@ func (this *Player) DoShopInfo(info *model.DbShop, isLogin bool) { Num: 1, }) } + //年兽礼包 + if info.PageId == ShopPageNian { + if this.WelfData.NianData.GiftShop == nil { + this.WelfData.NianData.GiftShop = map[int32]int32{} + } + this.WelfData.NianData.GiftShop[info.ShopId] += 1 + } switch info.Remark { case "BlindBox": diff --git a/worldsrv/rankmatch.go b/worldsrv/rankmatch.go index b847046..45f0c57 100644 --- a/worldsrv/rankmatch.go +++ b/worldsrv/rankmatch.go @@ -647,6 +647,8 @@ func (r *RankMatchMgr) OnDayTimer() { logger.Logger.Info("(this *RankMatchMgr) OnDayTimer") //排行榜发奖 //r.RankAward() + //年兽排行榜发奖 + r.NianRankAward() for _, platform := range PlatformMgrSingleton.GetPlatforms() { if platform.IdStr == DefaultPlatform { continue @@ -763,13 +765,14 @@ func (r *RankMatchMgr) RankAward() { } rankId := int32(1) for k, player := range players { + localRankId := rankId if player == nil { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindPlayerPermitList player is nil %v", list.List[k].SnId) continue } var items []int64 for _, award := range rankAward { - if award.RankLevelId == rankId { + if award.RankLevelId == localRankId { for _, itemInfo := range award.Item { items = append(items, int64(itemInfo.ItemId)) items = append(items, itemInfo.ItemNum) @@ -784,7 +787,7 @@ func (r *RankMatchMgr) RankAward() { var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { title := i18n.Tr("languages", "PermitAwardTitle") - content := i18n.Tr("languages", "PermitAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) + content := i18n.Tr("languages", "PermitAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -835,13 +838,14 @@ func (r *RankMatchMgr) RankAward() { } rankId := int32(1) for k, player := range players { + localRankId := rankId if player == nil { logger.Logger.Errorf("RankMatchMgr OnDayTimer FindWinCoinListTienlen player is nil %v", ret.List[k].SnId) continue } var items []int64 for _, award := range rankAward { - if award.RankLevelId == rankId { + if award.RankLevelId == localRankId { for _, itemInfo := range award.Item { items = append(items, int64(itemInfo.ItemId)) items = append(items, itemInfo.ItemNum) @@ -856,7 +860,7 @@ func (r *RankMatchMgr) RankAward() { var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { title := i18n.Tr("languages", "PermitAwardTitle") - content := i18n.Tr("languages", "PermitAward", []int{int(rankId), int(rankId), int(rankId), int(rankId)}) + content := i18n.Tr("languages", "PermitAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) err := model.InsertMessage(platform, newMsg) @@ -930,6 +934,216 @@ func (r *RankMatchMgr) Save(platform string, snid int32, isSync, force bool) { })).StartByFixExecutor(fmt.Sprintf("platform%s", ret.Platform)) } +// 年兽排行榜发奖 +func (r *RankMatchMgr) NianRankAward() { + logger.Logger.Trace("年兽排行榜开始发奖!!!!") + for _, v := range PlatformMgrSingleton.GetPlatforms() { + platform := v.IdStr + rankConfig := PlatformMgrSingleton.GetConfig(platform).NianRankReward + if rankConfig == nil { + continue + } + pool := WelfareMgrSington.GetConfig(platform).ActivityNianConfig + if pool == nil || pool.List == nil { + return + } + if pool.Switch == model.WelfareClose { + return + } + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + t, _ := time.Parse(time.DateTime, startTime) + // 转换为时间戳(以秒为单位) + timestamp := t.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + nowTime := time.Now().Unix() + if nowTime < timestamp || nowTime-86400 > endTimestamp { + return + } + log := &model.NianPlayerRankLog{} + log.Ts = time.Now().Unix() + log.Platform = platform + for _, info := range rankConfig.RankData { + if info.TypeId == 1 { + log.TypeId = info.TypeId + rankAward := info.RankInfo + if rankAward == nil { + continue + } + var players []*model.PlayerBaseInfo + list, err := model.FindLuckNianRankList(&model.FindNianListArgs{ + Platform: platform, + }) + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + for _, vv := range list.List { + player := PlayerMgrSington.GetPlayerBySnId(vv.SnId) + if player != nil { + players = append(players, &model.PlayerBaseInfo{ + SnId: player.SnId, + LastChannel: player.LastChannel, + }) + } else { + baseInfo := model.GetPlayerBaseInfo(platform, vv.SnId) + players = append(players, baseInfo) + } + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err != nil { + logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList err:%v", err) + return + } + rankId := int32(1) + for k, player := range players { + localRankId := rankId + if player == nil { + logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList player is nil %v", list.List[k].SnId) + continue + } + var items []int64 + for _, award := range rankAward { + if award.RankId == localRankId { + for _, itemInfo := range award.Award { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + } + } + if len(items) == 0 { + break + } + // 发邮件 + var newMsg *model.Message + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + title := i18n.Tr("languages", "NianLuckTitle") + content := i18n.Tr("languages", "NianLuckAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) + newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, + title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) + err := model.InsertMessage(platform, newMsg) + if err != nil { + logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err) + return err + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + p := PlayerMgrSington.GetPlayerBySnId(player.SnId) + if p != nil { + p.AddMessage(newMsg) + } + })).Start() + //记录log + rankData := &model.NianPlayerRankData{ + RankId: localRankId, + Snid: player.SnId, + Score: list.List[localRankId-1].Luck, + } + log.RankData = append(log.RankData, rankData) + rankId += 1 + logger.Logger.Infof("发奖 snid:%v rankId:%v", player.SnId, localRankId) + } + mq.Write(log) + //清除幸运榜数值 + err := model.ClearNianRank(&model.FindNianListArgs{ + Platform: platform, + }) + if err != nil { + logger.Logger.Errorf("清除幸运榜数值失败 err:%v", err) + } + + })).StartByExecutor("NianLuck_Award") + } else if info.TypeId == 2 { + yesterday := time.Unix(time.Now().Unix()-86400, 0) + if yesterday.Day() != end.Day() { + return + } + rankAward := info.RankInfo + if rankAward == nil { + continue + } + var players []*model.PlayerBaseInfo + log.TypeId = info.TypeId + list, err := model.FindDamageNianRankList(&model.FindNianListArgs{ + Platform: platform, + }) + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + for _, vv := range list.List { + player := PlayerMgrSington.GetPlayerBySnId(vv.SnId) + if player != nil { + players = append(players, &model.PlayerBaseInfo{ + SnId: player.SnId, + LastChannel: player.LastChannel, + }) + } else { + baseInfo := model.GetPlayerBaseInfo(platform, vv.SnId) + players = append(players, baseInfo) + } + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err != nil { + logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList err:%v", err) + return + } + rankId := int32(1) + for k, player := range players { + localRankId := rankId // 将 rankId 复制到局部变量 + if player == nil { + logger.Logger.Errorf("RankMatchMgr OnDayTimer FindLuckNianRankList player is nil %v", list.List[k].SnId) + continue + } + var items []int64 + for _, award := range rankAward { + if award.RankId == localRankId { + for _, itemInfo := range award.Award { + items = append(items, int64(itemInfo.ItemId)) + items = append(items, itemInfo.ItemNum) + } + } + } + if len(items) == 0 { + break + } + // 发邮件 + var newMsg *model.Message + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + title := i18n.Tr("languages", "NianDamageTitle") + content := i18n.Tr("languages", "NianDamageAward", []int{int(localRankId), int(localRankId), int(localRankId), int(localRankId)}) + newMsg = model.NewMessage("", 0, "", player.SnId, model.MSGTYPE_RANK_REWARD, + title, content, 0, 0, model.MSGSTATE_UNREAD, time.Now().Unix(), 0, "", items, platform, model.HallTienlen, nil) + err := model.InsertMessage(platform, newMsg) + if err != nil { + logger.Logger.Errorf("发送邮件失败 snid:%v err:%v", player.SnId, err) + return err + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + p := PlayerMgrSington.GetPlayerBySnId(player.SnId) + if p != nil { + p.AddMessage(newMsg) + } + })).Start() + rankData := &model.NianPlayerRankData{ + RankId: localRankId, + Snid: player.SnId, + Score: list.List[localRankId-1].Damage, + } + log.RankData = append(log.RankData, rankData) + rankId += 1 + } + mq.Write(log) + //删除数据库数据 + err := model.DelNianRank(&model.FindNianListArgs{ + Platform: platform, + }) + if err != nil { + logger.Logger.Errorf("删除年兽排行榜数据库数据 err:%v", err) + } + })).StartByExecutor("NianDamage_Award") + } + } + } +} func (r *RankMatchMgr) Release(platform string, snid int32) { delete(r.playerSeasons, snid) } diff --git a/worldsrv/shopmgr.go b/worldsrv/shopmgr.go index a46f850..b076fc4 100644 --- a/worldsrv/shopmgr.go +++ b/worldsrv/shopmgr.go @@ -46,16 +46,16 @@ const ( // page类型 const ( - ShopPageCoin = 1 //金币页面 - ShopPageDiamond = 2 //钻石页面 - ShopPageItem = 3 //道具页面 - ShopPageVip = 4 //VIP页面 - ShopPagePrivilege = 5 //VIP特权礼包 - ShopPageGift = 7 //礼包页面 - ShopPageDiamondBank = 8 //钻石存储罐 - ShopPagePermit = 9 //赛季通行证 - ShopPageFangKa = 10 //房卡页面 - + ShopPageCoin = 1 //金币页面 + ShopPageDiamond = 2 //钻石页面 + ShopPageItem = 3 //道具页面 + ShopPageVip = 4 //VIP页面 + ShopPagePrivilege = 5 //VIP特权礼包 + ShopPageGift = 7 //礼包页面 + ShopPageDiamondBank = 8 //钻石存储罐 + ShopPagePermit = 9 //赛季通行证 + ShopPageFangKa = 10 //房卡页面 + ShopPageNian = 12 //年兽活动页面 ShopPagePhoneScore = 61 //手机积分商城 ShopPagePhoneScoreGoogle = 62 ShopPageBackend = 63 //并不是页面,是后台加币记录类型 diff --git a/worldsrv/taskmgr.go b/worldsrv/taskmgr.go index ee42382..ec6089c 100644 --- a/worldsrv/taskmgr.go +++ b/worldsrv/taskmgr.go @@ -3,12 +3,16 @@ package main import ( "container/list" "math" + "time" + "mongo.games.com/goserver/core/logger" "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" taskproto "mongo.games.com/game/protocol/task" "mongo.games.com/game/srvdata" + "mongo.games.com/game/worldsrv/internal" ) /* @@ -159,6 +163,7 @@ func (t *TaskHandle) AllTask(id int, data any) { logger.Logger.Tracef("AllTask taskID:%v %v", id, p.WelfData.Task[int32(id)]) + now := time.Now() change := map[int32][]*taskproto.TaskData{} for _, v := range srvdata.TaskMgr.GetTaskType(int32(id)) { if !info.Debug { @@ -192,6 +197,33 @@ func (t *TaskHandle) AllTask(id int, data any) { } } + switch v.GetActivityType() { + case common.TaskActivityTypeNianEveryDay, common.TaskActivityTypeNian: + //判断是否在开启时间段内 + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil { + continue + } + if pool.Switch == model.WelfareClose { + continue + } + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + start, _ := time.Parse(time.DateTime, startTime) + timestamp := start.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + if now.Unix() < timestamp || now.Unix() > endTimestamp { + continue + } + + case common.TaskActivityTypeConsume: + cfg := WelfareMgrSington.GetConfig(p.Platform).ConsumeConfig + if cfg == nil || cfg.GetOn() != common.On || now.Unix() < common.StrTimeToTs(cfg.StartTime) || now.Unix() >= common.StrTimeToTs(cfg.EndTime) { + continue + } + } + if p.WelfData.Task[v.Id] == nil { p.WelfData.Task[v.Id] = &model.TaskData{N: 0} // 初始化任务数据 } @@ -260,6 +292,152 @@ func OnNotifyChange(p *Player, activityType int32) { logger.Logger.Tracef("SCTaskChange %v", pack) } +// GetTaskTimes 获取任务完成进度 +func GetTaskTimes(p *Player, id int32) int64 { + if p.WelfData != nil && p.WelfData.Task[id] != nil { + return p.WelfData.Task[id].N + } + return 0 +} + +// IsTaskFinish 是否任务完成 +func IsTaskFinish(p *Player, id int32) bool { + data := srvdata.PBDB_TaskMgr.GetData(id) + if data == nil { + return false + } + if p.WelfData != nil && p.WelfData.Task[id] != nil { + return p.WelfData.Task[id].N >= data.GetTargetTimes() + } + return false +} + +// IsTaskReward 是否任务奖励已领取 +func IsTaskReward(p *Player, id int32) bool { + if p.WelfData != nil && p.WelfData.Task != nil { + if data := p.WelfData.Task[id]; data != nil && data.Ts > 0 { + t := srvdata.PBDB_TaskMgr.GetData(id) + switch t.ActivityType { + case common.TaskActivityTypeEveryDay, common.TaskActivityTypePermitEveryDay, common.TaskActivityTypeNianEveryDay, common.TaskActivityTypeConsume: + if common.TsInSameDay(time.Now().Unix(), data.Ts) { + return true + } + + case common.TaskActivityTypeWeek: + if common.TsInSameWeek(time.Now().Unix(), data.Ts) { + return true + } + + case common.TaskActivityTypeNovice, common.TaskActivityTypeInvite, common.TaskActivityTypeAchieve: + if data.Ts > 0 { + return true + } + case common.TaskActivityTypePermit: + startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs + endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs + if startTs > 0 { + return data.Ts >= startTs && data.Ts < endTs + } + return true + case common.TaskActivityTypeNian: + pool := WelfareMgrSington.GetConfig(p.Platform).ActivityNianConfig + if pool == nil || pool.List == nil { + return false + } + if pool.Switch == model.WelfareClose { + return false + } + startTime := pool.List[0].ActivityStart + endTime := pool.List[0].ActivityEnd + start, _ := time.Parse(time.DateTime, startTime) + timestamp := start.Unix() + end, _ := time.Parse(time.DateTime, endTime) + endTimestamp := end.Unix() + if timestamp > 0 { + return data.Ts >= timestamp && data.Ts < endTimestamp + } + return true + } + } + } + return false +} + +// SendTaskReward 发送任务奖励 +func SendTaskReward(p *Player, m map[int64]int64, tp int32) { + isPermit := p.GetIsPermit() + add := p.GetSkillAdd(common.SkillIdTask) + var items []*model.Item + for k, v := range m { + if k == common.ItemIDPermit && isPermit { + v += int64(float64(v) * common.PermitAdd) + } + // 皮肤技能每日任务金币加成 + if tp == common.TaskActivityTypeEveryDay && add > 0 && k == common.ItemIDCoin { + v += int64((float64(v) * float64(add)) / 100.0) + } + items = append(items, &model.Item{ + ItemId: int32(k), + ItemNum: v, + }) + } + gain := int32(0) + giveType := int32(-1) + switch tp { + case 1: + gain = common.GainWayItemTaskEveryDay + giveType = model.SystemFreeGive_GiveType_TaskEveryDay + case 2: + gain = common.GainWayItemWeekActive + giveType = model.SystemFreeGive_GiveType_TaskWeekActive + case 3: + gain = common.GainWayItemTaskNewPlayer + giveType = model.SystemFreeGive_GiveType_TaskNewPlayer + case 4: + gain = common.GainWayItemTaskInvite + giveType = model.SystemFreeGive_GiveType_TaskInvite + case 5: + gain = common.GainWayItemTaskAchievement + giveType = model.SystemFreeGive_GiveType_TaskAchievement + case 6: + gain = common.GainWayItemTaskPermit + giveType = model.SystemFreeGive_GiveType_TaskPermit + case 8: + gain = common.GainWayNianGain_EveryDayTask + giveType = model.SystemFreeGive_NianEveryDayTask + case 9: + gain = common.GainWayNianGain_Task + giveType = model.SystemFreeGive_NianTask + case 10: + gain = common.GainWayConsume + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + Add: 0, + GainWay: gain, + Operator: "system", + Remark: "任务奖励", + GameId: 0, + GameFreeId: 0, + }) + for _, v := range items { + tp := int32(-1) + if v.ItemId == common.ItemIDCoin { + tp = model.SystemFreeGive_CoinType_Coin + } else if v.ItemId == common.ItemIDDiamond { + tp = model.SystemFreeGive_CoinType_Diamond + } + if !p.IsRob && tp >= 0 && giveType >= 0 { + mq.Write(model.GenerateSystemFreeGive(p.SnId, p.Name, p.Platform, p.Channel, giveType, tp, v.ItemNum)) + } + } + if giveType == model.SystemFreeGive_GiveType_TaskPermit { + mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_Permit, 1)) + } +} + func init() { taskHandle := new(TaskHandle) TaskSubjectSingleton.Attach(common.TaskTypeAdv, taskHandle) @@ -292,4 +470,36 @@ func init() { TaskSubjectSingleton.Attach(common.TaskTypeTienlenWinCoin, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeRankMatchWinTimes, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeBuyPermit, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeBuyRedBag, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeNianBossKill, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeNianBossDamage, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeNianSign, taskHandle) + + internal.RegisterPlayerListenerFunc(&internal.PlayerListenerFunc[*Player, *Scene]{ + OnPlayerDayChangedFunc: func(p *Player, isLogin, isContinue bool) { + if p.WelfData != nil && p.WelfData.Task != nil { + for _, v := range []int32{ + // todo 每日重置的任务列表 + common.TaskActivityTypeEveryDay, + common.TaskActivityTypePermitEveryDay, + common.TaskActivityTypeNianEveryDay, + common.TaskActivityTypeConsume} { + for _, vv := range srvdata.TaskMgr.GetActivityType(v) { + p.WelfData.Task[vv.GetId()] = &model.TaskData{} + } + } + } + }, + OnPlayerWeekChangedFunc: func(p *Player, isLogin, isContinue bool) { + if p.WelfData != nil && p.WelfData.Task != nil { + for _, v := range []int32{ + // todo 每周重置的任务列表 + common.TaskActivityTypeWeek} { + for _, vv := range srvdata.TaskMgr.GetActivityType(v) { + p.WelfData.Task[vv.GetId()] = &model.TaskData{} + } + } + } + }, + }) } diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index c530b72..3581b88 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -3,6 +3,7 @@ package main import ( "crypto/md5" "encoding/hex" + "encoding/json" "errors" "fmt" "io" @@ -2303,6 +2304,7 @@ func init() { return err } InviteTask(msg.Platform, psnid, info.SnId, common.InviteScoreTypePay, int64(info.ConsumeNum)) + return nil }), nil, "InvitePayTask").Start() } @@ -2928,6 +2930,79 @@ func init() { return common.ResponseTag_TransactYield, pack })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/platform/debug", WebAPIHandlerWrapper( + func(tNode *transact.TransNode, params []byte) (int, proto.Message) { + + var jsonDataRsp []byte + pack := &webapiproto.ASGetAddress{ + Platform: "1", + SnId: 200, + } + + if !common.Config.IsDevMode { + return common.ResponseTag_ParamError, pack + } + + var msg *webapi.DebugTestReq + err := json.Unmarshal(params, &msg) + if err != nil { + logger.Logger.Error("Unmarshal webapi.DebugTestReq error:", err) + return common.ResponseTag_ParamError, pack + } + + jsonRet := &webapi.DebugTestRsp{ + Success: false, + Code: 200, + Message: "未知错误", + } + + logger.Logger.Tracef("/api/platform/debug DebugTestReq%v", msg) + + player := PlayerMgrSington.GetPlayerBySnId(msg.Snid) + //玩家在线 + if player != nil { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + //b, err = webapi.API_ExchangeRecord(common.GetAppId(), msg) + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + + if msg.Rpc == 1 { + addCoin, _ := strconv.ParseInt(msg.Count, 10, 64) + player.AddCoin(addCoin, 0, 5555, "platform", "debug加金币") + player.SendDiffData() + jsonRet.Data.Count = player.Coin + } else if msg.Rpc == 2 { + WelfareMgrSington.PigbankGetInfo(player) + } else if msg.Rpc == 3 { + WelfareMgrSington.PigbankTakeCoin(player) + } else if msg.Rpc == 4 { + WelfareMgrSington.DayResetPigBank(player) + } else if msg.Rpc == 5 { + WelfareMgrSington.DiamondBankGetInfo(player) + } else if msg.Rpc == 6 { + WelfareMgrSington.DiamondBankTakeCoin(player) + } else if msg.Rpc == 7 { + player.WelfData.PigBank.BankCoin = msg.Bankcoin + player.WelfData.PigBank.DayBuyTimes = msg.Daybuytimes + } else if msg.Rpc == 8 { + player.WelfData.DiamondBank.BankDiamond = float64(msg.Bankcoin) + player.WelfData.DiamondBank.DayBuyTimes = msg.Daybuytimes + } else if msg.Rpc == 9 { + addCoin, _ := strconv.ParseInt(msg.Count, 10, 64) + player.AddDiamond(addCoin, 0, 5555, "platform", "dubeg加钻石") + player.SendDiffData() + jsonRet.Data.Count = player.Diamond + } + + jsonDataRsp, err = json.Marshal(jsonRet) + tNode.TransRep.RetFiels = jsonDataRsp + tNode.Resume() + }), "/api/game/debug").Start() + } + + return common.ResponseTag_TransactYield, pack + })) + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/game/exchange_create", WebAPIHandlerWrapper( func(tNode *transact.TransNode, params []byte) (int, proto.Message) { pack := &webapiproto.SAWebCreateExchange{ diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index a0d0a49..00bb254 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -3,8 +3,12 @@ package main import ( "fmt" "math" + "math/rand" + "slices" + "sort" "time" + "go.mongodb.org/mongo-driver/bson/primitive" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/module" @@ -17,6 +21,7 @@ import ( webapi_proto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/protocol/welfare" "mongo.games.com/game/srvdata" + "mongo.games.com/game/worldsrv/internal" ) const ( @@ -290,7 +295,9 @@ func (this *WelfareMgr) OnDayChanged(player *Player) error { logger.Logger.Tracef("OnDayChanged SCGetReliefFund snid: %v pack: %v", player.SnId, pack) // 重置存钱罐 - this.DayResetPigrank(player) + this.DayResetPigBank(player) + //重置年兽 + this.DayReserNian(player) return nil } @@ -305,8 +312,9 @@ func (this *WelfareMgr) MonitorWelfData(player *Player) { player.WelfData.PigBank = &model.PigBankData{} } else if player.WelfData.DiamondBank == nil { player.WelfData.DiamondBank = &model.DiamondBankData{} + } else if player.WelfData.NianData == nil { + player.WelfData.NianData = &model.NianData{} } - } // GetTurnplate 获取转盘奖励 @@ -923,6 +931,7 @@ func (this *WelfareMgr) GetAddUp2Award(p *Player, day int32) { // WelfareSwitch 通知活动开关状态 func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) { pack := &player_proto.SCEasyWelfaredInfo{} + now := time.Now() // 0转盘1盲盒2首冲3连续充值 info := this.GetConfig(platform) @@ -1004,6 +1013,27 @@ func (this *WelfareMgr) WelfareSwitch(p *Player, platform string, op int) { } else { pack.WelfareSwitch = append(pack.WelfareSwitch, model.WelfareClose) } + //年兽活动 + nianConfig := info.ActivityNianConfig + if nianConfig != nil { + pack.WelfareSwitch = append(pack.WelfareSwitch, nianConfig.Switch) //年兽活动开关 + } else { + pack.WelfareSwitch = append(pack.WelfareSwitch, model.WelfareClose) + } + // 累消活动 + consumeConfig := info.ConsumeConfig + if consumeConfig != nil && now.Unix() >= common.StrTimeToTs(consumeConfig.StartTime) && now.Unix() < common.StrTimeToTs(consumeConfig.EndTime) { + pack.WelfareSwitch = append(pack.WelfareSwitch, consumeConfig.On) //累消活动开关 + } else { + pack.WelfareSwitch = append(pack.WelfareSwitch, model.WelfareClose) + } + // 推币机活动 + coinConfig := info.PushCoinConfig + if coinConfig != nil && now.Unix() >= common.StrTimeToTs(coinConfig.StartTime) && now.Unix() < common.StrTimeToTs(coinConfig.EndTime) { + pack.WelfareSwitch = append(pack.WelfareSwitch, coinConfig.On) //推币机活动开关 + } else { + pack.WelfareSwitch = append(pack.WelfareSwitch, model.WelfareClose) + } if model.GameParamData.TestActSwitch { for k := range pack.WelfareSwitch { @@ -1114,11 +1144,11 @@ func (this *WelfareMgr) BlindBoxInfo(p *Player, bid int32) { pack.MinId = blindBox.MinId pack.Draw = 1 cyc := info.BlindBoxCycle - if p.WelfData.BlindBoxId == -1 { + if p.WelfData.BlindBoxId == -1 { // == 1代表当日循环 if cyc == 1 || blindBox.Cycle == model.WelfareOpen { p.WelfData.BlindBoxId = 0 } - } // == 1代表当日循环 + } if p.WelfData.BlindBoxId == 0 { // 未领取过发随机Date idx := bid @@ -1686,12 +1716,16 @@ func (this *WelfareMgr) BuyContinuousPay(p *Player, ConfigPayId int32) { // PigbankGetInfo 存钱罐信息 func (this *WelfareMgr) PigbankGetInfo(p *Player) { + if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchPigBankCoin, p.LastChannel) { + return + } pack := &welfare.SCPigbankGetInfo{ OpRetCode: welfare.OpResultCode_OPRC_Error, } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -1711,52 +1745,80 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { }*/ if p.WelfData.PigBank == nil { - p.WelfData.PigBank = &model.PigBankData{} + p.WelfData.PigBank = &model.PigBankData{ + TakeRecord: make(map[int32]int64, 8), + } } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() - infoData := pool[0] + if p.WelfData.PigBank.TakeRecord == nil { + p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) + } + + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //infoData := pool[0] + //for _, data := range pool { + // if data == nil { + // continue + // } + // + // if p.WelfData.PigBank.DayBuyTimes+1+1 >= data.BuyCountMin && p.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { + // infoData = data + // break + // } + //} + + DayBuyMaxCnt := fGetPropValue("DayBuyMaxCnt") + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) for _, data := range pool { if data == nil { continue } - if p.WelfData.PigBank.DayBuyTimes+1+1 >= data.BuyCountMin && p.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { - infoData = data - break + + bankInfo := &welfare.PigBankCoinInfo{ + GoldExc: make(map[int64]int64), } + + bankInfo.IndexId = data.Id + bankInfo.CostDiamond = int64(data.CostDiamond) + bankInfo.DayBuyMaxCnt = DayBuyMaxCnt + bankInfo.Price = int64(data.CoinPrice) + bankInfo.BankMaxCoin = int64(data.MaxGold) + + for _, v := range data.GoldExc { + bankInfo.GoldExc[int64(v.ItemId)] = v.ItemNum + } + + if takeRecorcd, exist := p.WelfData.PigBank.TakeRecord[data.Id]; exist { + bankInfo.TakeCoin = takeRecorcd + } + + pack.InfoArr = append(pack.InfoArr, bankInfo) } - BankMaxCoin := int64(0) - for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { - if data == nil { - continue - } - if p.WelfData.PigBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax { - BankMaxCoin = int64(data.MaxGold) - break - } - } if p.WelfData != nil && p.WelfData.PigBank != nil { pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess pack.BankCoin = p.WelfData.PigBank.BankCoin pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes - pack.CostDiamond = int64(infoData.CostDiamond) - pack.BankMaxCoin = BankMaxCoin - pack.DayBuyMaxCnt = fGetPropValue("DayBuyMaxCnt") - pack.Price = int64(infoData.CoinPrice) + logger.Logger.Tracef("PigbankGetInfo snid: %v pack: %v", p.SnId, pack) + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankGetInfo), pack) } } // PigbankTakeCoin 存钱罐领取金币 func (this *WelfareMgr) PigbankTakeCoin(p *Player) { + if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchPigBankCoin, p.LastChannel) { + return + } + pack := &welfare.SCPigbankTakeCoin{ OpRetCode: welfare.OpResultCode_OPRC_Error, } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -1776,10 +1838,17 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { }*/ if p.WelfData.PigBank == nil { - p.WelfData.PigBank = &model.PigBankData{} + p.WelfData.PigBank = &model.PigBankData{ + TakeRecord: make(map[int32]int64, 8), + } } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + if p.WelfData.PigBank.TakeRecord == nil { + p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) + } + + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) infoData := pool[0] for _, data := range pool { if data == nil { @@ -1792,7 +1861,7 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } BankMaxCoin := int64(0) - for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() { + for _, data := range pool { if data == nil { continue } @@ -1806,9 +1875,6 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { if p.WelfData != nil && p.WelfData.PigBank != nil { - pack.CostDiamond = int64(infoData.CostDiamond) - pack.BankMaxCoin = BankMaxCoin - // 检查每日领取次数 if p.WelfData.PigBank.DayBuyTimes >= DayBuyMaxCnt { pack.OpRetCode = welfare.OpResultCode_OPRC_PigbankOverTakeTimes @@ -1849,15 +1915,49 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { p.AddCoin(p.WelfData.PigBank.BankCoin, 0, common.GainWay_PigrankGainCoin, "sys", "存钱罐领取金币") + if p.WelfData.PigBank.TakeRecord != nil { + p.WelfData.PigBank.TakeRecord[infoData.Id] = p.WelfData.PigBank.BankCoin + } + + pack.RewardItems = append(pack.RewardItems, &welfare.PropInfo{ + ItemId: common.ItemIDCoin, + ItemNum: p.WelfData.PigBank.BankCoin, + }) + + if infoData.GoldExc != nil { + // 发放奖励道具 + var items []*model.Item + for _, v := range infoData.GoldExc { + items = append(items, &model.Item{ + ItemId: int32(v.ItemId), + ItemNum: v.ItemNum, + }) + + pack.RewardItems = append(pack.RewardItems, &welfare.PropInfo{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + Add: 0, + GainWay: common.GainWayItem_PigBankTakeCoin, + Operator: "system", + Remark: "购买金币存钱罐奖励道具", + GameId: 0, + GameFreeId: 0, + }) + } + // 领取完之后 设置为0 p.WelfData.PigBank.BankCoin = 0 p.WelfData.PigBank.TakeTimes++ p.WelfData.PigBank.DayBuyTimes++ pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes - pack.CostDiamond = int64(infoData.CostDiamond) - pack.DayBuyMaxCnt = DayBuyMaxCnt - pack.Price = int64(infoData.CoinPrice) + logger.Logger.Tracef("PigbankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) mq.Write(model.GenerateActivityLog(p.SnId, p.Platform, model.ActivityLog_CoinPigBank, 1)) @@ -1865,26 +1965,32 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } // 每日重置存钱罐属性 -func (this *WelfareMgr) DayResetPigrank(p *Player) { +func (this *WelfareMgr) DayResetPigBank(p *Player) { if p != nil && p.WelfData != nil && p.WelfData.PigBank != nil { p.WelfData.PigBank.DayBuyTimes = 0 - + p.WelfData.PigBank.TakeRecord = make(map[int32]int64, 8) this.PigbankGetInfo(p) } if p != nil && p.WelfData != nil && p.WelfData.DiamondBank != nil { p.WelfData.DiamondBank.DayBuyTimes = 0 + p.WelfData.DiamondBank.TakeRecord = make(map[int32]int64, 8) this.DiamondBankGetInfo(p) } } // 钻石储存罐信息 func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { + if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchPigBankDiamond, p.LastChannel) { + return + } + pack := &welfare.SCDiamondBankGetInfo{ OpRetCode: welfare.OpResultCode_OPRC_Error, } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -1893,53 +1999,69 @@ func (this *WelfareMgr) DiamondBankGetInfo(p *Player) { return 0 } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() - infoData := pool[0] + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) + //infoData := pool[0] if p.WelfData.DiamondBank == nil { - p.WelfData.DiamondBank = &model.DiamondBankData{} + p.WelfData.DiamondBank = &model.DiamondBankData{ + TakeRecord: make(map[int32]int64, 8), + } } + + if p.WelfData.DiamondBank.TakeRecord == nil { + p.WelfData.DiamondBank.TakeRecord = make(map[int32]int64, 8) + } + + DayBuyMaxCntDiamond := fGetPropValue("DayBuyMaxCntDiamond") for _, data := range pool { if data == nil { continue } - if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { - infoData = data - break - } - } - BankMaxCoin := infoData.MaxDiamond + bankInfo := &welfare.PigBankDiamondInfo{ + DiamondExc: make(map[int64]int64), + } + + bankInfo.IndexId = data.Id + bankInfo.BankMaxDiamond = int64(data.MaxDiamond) + bankInfo.DayBuyMaxCnt = DayBuyMaxCntDiamond + bankInfo.Price = int64(data.DiamondPrice) + bankInfo.NowPrice = int64(data.DiamondNowPrice) + bankInfo.ShopId = data.DiamondId + for _, v := range data.DiamondExc { + bankInfo.DiamondExc[int64(v.ItemId)] = v.ItemNum + } + + if takeRecorcd, exist := p.WelfData.DiamondBank.TakeRecord[data.Id]; exist { + bankInfo.TakeDiamond = float64(takeRecorcd) + } + + pack.InfoArr = append(pack.InfoArr, bankInfo) + } if p.WelfData != nil && p.WelfData.DiamondBank != nil { bankDiamond := math.Floor(p.WelfData.DiamondBank.BankDiamond*10000) / 10000 pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess pack.BankDiamond = bankDiamond pack.TakeTimes = p.WelfData.DiamondBank.DayBuyTimes - pack.BankMaxCoin = int64(BankMaxCoin) - pack.DayBuyMaxCnt = fGetPropValue("DayBuyMaxCntDiamond") - pack.Price = int64(infoData.DiamondPrice) - pack.NowPrice = int64(infoData.DiamondNowPrice) - pack.ShopId = infoData.DiamondId + logger.Logger.Tracef("DiamondBankGetInfo snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCDiamondBankGetInfo), pack) } } // DiamondBankTakeCoin 钻石存钱罐领取钻石 -func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { +func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) (retItemArr []*model.Item) { + if !PlatformMgrSingleton.IsOn(p.Platform, common.ChannelSwitchPigBankDiamond, p.LastChannel) { + return + } + pack := &welfare.SCDiamondBankTakeDiamond{ OpRetCode: welfare.OpResultCode_OPRC_Error, } - fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() - for _, PropItem := range pool { - if PropItem.PorpName == propName { - return PropItem.PropValue - } - } - return 0 - } - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) infoData := pool[0] for _, data := range pool { if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { @@ -1949,12 +2071,21 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { } BankMaxDiamond := int64(infoData.MaxDiamond) - DayBuyMaxCnt := fGetPropValue("DayBuyMaxCntDiamond") + if p.WelfData.DiamondBank == nil { + p.WelfData.DiamondBank = &model.DiamondBankData{ + TakeRecord: make(map[int32]int64, 8), + } + } - if p.WelfData != nil && p.WelfData.PigBank != nil { + if p.WelfData.DiamondBank.TakeRecord == nil { + p.WelfData.DiamondBank.TakeRecord = make(map[int32]int64, 8) + } + + if p.WelfData != nil && p.WelfData.DiamondBank != nil { if p.WelfData.DiamondBank.BankDiamond >= float64(BankMaxDiamond) { p.WelfData.DiamondBank.BankDiamond = float64(BankMaxDiamond) } + pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess addDiamond := int64(math.Ceil(p.WelfData.DiamondBank.BankDiamond)) p.AddDiamond(addDiamond, 0, common.GainWay_PigrankGainDiamond, "sys", "存钱罐领取钻石") @@ -1963,10 +2094,47 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { Num: 1, }) + retItemArr = append(retItemArr, &model.Item{ + ItemId: common.ItemIDDiamond, + ItemNum: addDiamond, + }) + + // 发放奖励道具 + if infoData.DiamondExc != nil { + var items []*model.Item + + for _, v := range infoData.DiamondExc { + items = append(items, &model.Item{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + + retItemArr = append(retItemArr, &model.Item{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.SnId, + Change: items, + Add: 0, + GainWay: common.GainWayItem_PigBankTakeDiamond, + Operator: "system", + Remark: "购买钻石存钱罐奖励道具", + GameId: 0, + GameFreeId: 0, + }) + } + // 领取完之后 设置为0 p.WelfData.DiamondBank.BankDiamond = 0.0 p.WelfData.DiamondBank.TakeTimes++ p.WelfData.DiamondBank.DayBuyTimes++ + if p.WelfData.DiamondBank.TakeRecord != nil { + p.WelfData.DiamondBank.TakeRecord[infoData.Id] = addDiamond + } for _, data := range pool { if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { @@ -1974,16 +2142,15 @@ func (this *WelfareMgr) DiamondBankTakeCoin(p *Player) { break } } - pack.BankMaxDiamond = int64(infoData.MaxDiamond) + pack.TakeTimes = p.WelfData.DiamondBank.DayBuyTimes - pack.DayBuyMaxCnt = DayBuyMaxCnt pack.TakeDiamondNum = float64(addDiamond) - pack.Price = int64(infoData.DiamondPrice) - pack.NowPrice = int64(infoData.DiamondNowPrice) - pack.ShopId = infoData.DiamondId + logger.Logger.Tracef("DiamondBankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCDiamondBankTakeDiamond), pack) } + + return retItemArr } // 更新钻石存储罐数据 @@ -1993,7 +2160,8 @@ func (this *WelfareMgr) UpdateDiamondBankData(p *Player, coinNum int64, isWin bo p.WelfData.DiamondBank = &model.DiamondBankData{} } fGetPropValue := func(propName string) int32 { - pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + //pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankPropArr(p.Platform) for _, PropItem := range pool { if PropItem.PorpName == propName { return PropItem.PropValue @@ -2016,7 +2184,8 @@ func (this *WelfareMgr) UpdateDiamondBankData(p *Player, coinNum int64, isWin bo //保留小数点后4位 addDiamond = math.Round(addDiamond*10000) / 10000 p.WelfData.DiamondBank.BankDiamond += addDiamond - pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + //pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() + pool := PlatformMgrSingleton.GetPigBankDiamondArr(p.Platform) infoData := pool[0] for _, data := range pool { if p.WelfData.DiamondBank.DayBuyTimes+1 >= data.BuyCountMin && p.WelfData.DiamondBank.DayBuyTimes+1 <= data.BuyCountMax { @@ -2032,27 +2201,364 @@ func (this *WelfareMgr) UpdateDiamondBankData(p *Player, coinNum int64, isWin bo logger.Logger.Tracef("玩家更新钻石存储罐数据 snid = %d,coinNum = %d,isWin = %s,当前钻石存储罐钻石数量:%f,本次增加钻石数量:%f", p.SnId, coinNum, isWin, p.WelfData.DiamondBank.BankDiamond, addDiamond) } -func (this *WelfareMgr) Update() { +// 年兽活动 +func (this *WelfareMgr) UpdateActivityNianStatus(cfg *webapi_proto.ActivityNianConfig) { + if model.GameParamData.TestActSwitch { + cfg.Switch = model.WelfareOpen + } + s := int32(0) + info := this.GetConfig(cfg.Platform) + if info.ActivityNianConfig != nil { + s = info.ActivityNianConfig.Switch + } + info.ActivityNianConfig = cfg + //更新活动时间 + // 打开关闭要广播给客户端 + if s != 0 && s != cfg.Switch { + this.WelfareSwitch(nil, cfg.Platform, model.OpNian) + } +} +// 每日重置年兽 +func (this *WelfareMgr) DayReserNian(p *Player) { + if p.WelfData.NianData == nil { + return + } + if time.Now().Unix() > p.WelfData.NianData.ActivityEndTime { + this.ClearActivityNianData(p) + } + if p != nil && p.WelfData != nil && p.WelfData.NianData != nil { + p.WelfData.NianData.BuffStatus = false + p.WelfData.NianData.BuffCount = 0 + p.WelfData.NianData.SignAwardTime = 0 + p.WelfData.NianData.OtherAwardNum = make(map[int32]int32) + p.WelfData.NianData.AttackMaxHp = 0 + p.WelfData.NianData.GiftShop = make(map[int32]int32) + } +} + +// 年兽活动结束清除数据 +func (this *WelfareMgr) ClearActivityNianData(p *Player) { + if p != nil && p.WelfData != nil && p.WelfData.NianData != nil { + p.WelfData.NianData = nil + //清除任务数据 + if p.WelfData.Task != nil { + for id, _ := range p.WelfData.Task { + data := srvdata.PBDB_TaskMgr.GetData(id) + if data == nil { + continue + } + if data.ActivityType == common.TaskActivityTypeNianEveryDay || data.ActivityType == common.TaskActivityTypeNian { + delete(p.WelfData.Task, id) + } + } + } + } +} + +// UpdateRedPacket 更新红包配置 +func (this *WelfareMgr) UpdateRedPacket(cfg *webapi_proto.RedPacketConfig, isInit bool) { + this.GetConfig(cfg.Platform).RedPacketConfig = cfg + if !isInit { + // 广播给客户端 + for _, p := range PlayerMgrSington.players { + this.ReleaseRedPacket(p) + this.SendRedPacketInfo(p) + } + } +} + +// ReleaseRedPacket 释放玩家红包数据 +func (this *WelfareMgr) ReleaseRedPacket(p *Player) { + if p == nil || p.IsOffline() || p.IsRobot() { + return + } + ids := make([]int64, 0) + for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { + ids = append(ids, v.GetId()) + } + delIds := make([]int64, 0) + if p.WelfData != nil && p.WelfData.RedPacket != nil { + for k, _ := range p.WelfData.RedPacket { + if !slices.Contains(ids, k) { + delIds = append(delIds, k) + } + } + } + for _, v := range delIds { + delete(p.WelfData.RedPacket, v) + } +} + +// SendRedPacketInfo 发送红包信息 +func (this *WelfareMgr) SendRedPacketInfo(p *Player) *welfare.SCRedPacketInfo { + if p == nil || p.IsOffline() || p.IsRobot() { + return nil + } + + pack := &welfare.SCRedPacketInfo{} + now := time.Now().Unix() + for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { + if v.GetOn() != common.On { + continue + } + startTs, endTs := common.IntToTime(int(v.GetStartHMS())).Unix(), common.IntToTime(int(v.GetEndHMS())).Unix() + if now >= endTs { + continue + } + info := &welfare.RedPacketInfo{ + Id: v.GetId(), + StartTs: startTs, + EndTs: endTs, + StayTs: v.GetStayTs(), + } + if p.WelfData != nil && p.WelfData.RedPacket != nil { + if p.WelfData.RedPacket[v.GetId()] != nil { + info.IsJoin = p.WelfData.RedPacket[v.GetId()].JN > 0 || p.WelfData.RedPacket[v.GetId()].N > 0 + } + } + _, info.RemainCount = RedPacketMgrInst.GetRemainTimesByConfig(p, v) + if info.RemainCount > 0 || info.RemainCount == -1 { + pack.Info = append(pack.Info, info) + } + } + + sort.Slice(pack.Info, func(i, j int) bool { + return pack.Info[i].StartTs < pack.Info[j].StartTs + }) + + p.SendToClient(int(welfare.SPacketID_PACKET_SCRedPacketInfo), pack) + return pack +} + +// GetRedPacket 抽红包 +// id 红包活动id +func (this *WelfareMgr) GetRedPacket(p *Player, id int64) *welfare.SCRedPacketDraw { + if p == nil || p.IsOffline() { + return nil + } + pack := &welfare.SCRedPacketDraw{ + OpRetCode: welfare.OpResultCode_OPRC_Error, + Id: id, + } + Send := func(code welfare.OpResultCode) { + pack.OpRetCode = code + p.SendToClient(int(welfare.SPacketID_PACKET_SCRedPacketDraw), pack) + } + + if p.WelfData == nil { + return nil + } + + if p.WelfData.RedPacket == nil { + p.WelfData.RedPacket = make(map[int64]*model.RedPacketData) + } + + if p.WelfData.RedPacket[id] == nil { + p.WelfData.RedPacket[id] = &model.RedPacketData{} + } + data := p.WelfData.RedPacket[id] + now := time.Now().Unix() + + // 记录参与次数 + if id == 0 { + for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { + if v.GetOn() == common.On && now >= common.IntToTime(int(v.GetStartHMS())).Unix() && now < common.IntToTime(int(v.GetEndHMS())).Unix() { + if p.WelfData.RedPacket[v.GetId()] == nil { + p.WelfData.RedPacket[v.GetId()] = &model.RedPacketData{} + } + p.WelfData.RedPacket[v.GetId()].JN++ + } + } + //Send(welfare.OpResultCode_OPRC_Sucess) + return pack + } + + var cfg *webapi_proto.RedPacketInfo + for _, v := range this.GetConfig(p.Platform).RedPacketConfig.GetList() { + if v.GetId() == id { + cfg = v + break + } + } + + if cfg == nil || cfg.GetOn() != common.On || + now < common.IntToTime(int(cfg.GetStartHMS())).Unix() || now >= common.IntToTime(int(cfg.GetEndHMS())).Unix() { + Send(welfare.OpResultCode_OPRC_Error) + return pack + } + + // 次数限制 + n := int(data.N) + + if cfg.GetMaxCount() > 0 && cfg.GetMaxCount() <= int64(n) { + Send(welfare.OpResultCode_OPRC_NoTimes) + return pack + } + + // 余额检查 + var reward int64 // 红包奖金 + remain := RedPacketMgrInst.GetRemainReward(p.Platform, id) + + var playerRN int32 + playerLimit := this.GetConfig(p.Platform).RedPacketConfig.GetPlayerLimit() + if playerLimit > 0 { + for _, v := range p.WelfData.RedPacket { + playerRN += int32(v.RN) + } + } + + // 总奖池没有了或非空奖红包数量已经达到上限 + if remain <= 0 || (playerLimit > 0 && playerRN >= playerLimit) { + // 空奖 + } else { + f := func(total int64) { + // 概率抽奖 + rate := 0 + n := rand.Int63n(total) + for _, v := range cfg.GetRedList() { + rate += int(v.GetRate()) + if n < int64(rate) { + reward = v.GetNum() + break + } + } + } + if cfg.GetMaxCount() > 0 { + // 保底计算 + if data.RN >= cfg.GetLessCount() { + f(10000) + } else { + sub := cfg.GetLessCount() - data.RN + if cfg.GetMaxCount()-data.N <= sub { + // 必中 + var total int64 + for _, v := range cfg.GetRedList() { + total += v.GetRate() + } + f(total) + } else { + f(10000) + } + } + } else { + f(10000) + } + } + + if remain < reward { + reward = 0 + } + + data.N++ + RedPacketMgrInst.AddUse(p.Platform, id, reward) + if reward > 0 { + data.RN++ + pack.Award = []*welfare.PropInfo{{ItemId: cfg.GetItemId(), ItemNum: reward}} + BagMgrSingleton.AddItems(&model.AddItemParam{ + Platform: p.Platform, + SnId: p.GetSnId(), + Change: []*model.Item{{ItemId: cfg.GetItemId(), ItemNum: reward}}, + GainWay: common.GainWayRedPacket, + Operator: "system", + Remark: "红包奖励", + }) + } + + mq.Write(&model.BackRedPacket{ + Platform: p.Platform, + Id: int32(id), + SnId: p.GetSnId(), + ItemId: cfg.GetItemId(), + ItemNum: reward, + Ts: now, + }, mq.BackRedPacket) + + mq.Write(&model.RedPacketHistory{ + Platform: p.Platform, + ID: primitive.NewObjectID(), + Cid: id, + Snid: p.SnId, + Ts: time.Now().Unix(), + ItemId: cfg.GetItemId(), + ItemNum: reward, + }, mq.DBRedPacket) + + TaskSubjectSingleton.Touch(common.TaskTypeBuyRedBag, &TaskData{SnId: p.SnId, Num: 1}) + + _, pack.RemainCount = RedPacketMgrInst.GetRemainTimesByConfig(p, cfg) + Send(welfare.OpResultCode_OPRC_Sucess) + return pack +} + +func (this *WelfareMgr) UpdateConsumeConfig(conf *webapi_proto.ConsumeConfig) { + if model.GameParamData.TestActSwitch { + conf.On = model.WelfareOpen + } + s := int32(0) + info := this.GetConfig(conf.Platform) + if info.ConsumeConfig != nil { + s = info.ConsumeConfig.On + } + this.GetConfig(conf.Platform).ConsumeConfig = conf + //更新活动时间 + // 打开关闭要广播给客户端 + if s != 0 && s != conf.On { + this.WelfareSwitch(nil, conf.Platform, model.OpConsume) + } +} + +func (this *WelfareMgr) UpdatePushCoinConfig(conf *webapi_proto.PushCoinConfig) { + if model.GameParamData.TestActSwitch { + conf.On = model.WelfareOpen + } + s := int32(0) + info := this.GetConfig(conf.Platform) + if info.PushCoinConfig != nil { + s = info.PushCoinConfig.On + } + this.GetConfig(conf.Platform).PushCoinConfig = conf + //更新活动时间 + // 打开关闭要广播给客户端 + if s != 0 && s != conf.On { + this.WelfareSwitch(nil, conf.Platform, model.OpPushCoin) + } +} + +func (this *WelfareMgr) Update() { } func (this *WelfareMgr) Shutdown() { module.UnregisteModule(this) } -func (this *WelfareMgr) OnDayTimer() { - for _, v := range this.GetConfigs() { - v.BlindBoxCycle = 0 - v.FirstPayCycle = 0 - v.ContinuousPayCycle = 0 - } -} - -func (this *WelfareMgr) InterestClockEvent() int { - return (1 << common.ClockEventMax) - 1 -} - func init() { module.RegisteModule(WelfareMgrSington, time.Second, 0) - common.ClockMgrSingleton.RegisterSinker(WelfareMgrSington) + + internal.RegisterPlayerListenerFunc(&internal.PlayerListenerFunc[*Player, *Scene]{ + ClockFunc: common.ClockFunc{ + OnDayTimerFunc: func() { + for _, v := range WelfareMgrSington.GetConfigs() { + v.BlindBoxCycle = 0 + v.FirstPayCycle = 0 + v.ContinuousPayCycle = 0 + } + }, + }, + + OnPlayerLoginedFunc: func(p *Player) { + WelfareMgrSington.SendRedPacketInfo(p) + }, + + OnPlayerReholdFunc: func(p *Player) { + WelfareMgrSington.SendRedPacketInfo(p) + }, + + OnPlayerDayChangedFunc: func(p *Player, isLogin, isContinue bool) { + if p.WelfData != nil && p.WelfData.RedPacket != nil { + p.WelfData.RedPacket = make(map[int64]*model.RedPacketData) + } + WelfareMgrSington.OnDayChanged(p) + }, + }) } diff --git a/xlsx/DB_ACTPushCoin.xlsx b/xlsx/DB_ACTPushCoin.xlsx new file mode 100644 index 0000000..fc1ee8f Binary files /dev/null and b/xlsx/DB_ACTPushCoin.xlsx differ diff --git a/xlsx/DB_GameFree.xlsx b/xlsx/DB_GameFree.xlsx index 965eeb4..a2683b6 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 6df38f1..41b58bf 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 1c38755..ad2e867 100644 Binary files a/xlsx/DB_GameRule.xlsx and b/xlsx/DB_GameRule.xlsx differ diff --git a/xlsx/DB_NewYearActivity.xlsx b/xlsx/DB_NewYearActivity.xlsx new file mode 100644 index 0000000..7325c5e Binary files /dev/null and b/xlsx/DB_NewYearActivity.xlsx differ diff --git a/xlsx/DB_PigBank_Diamond.xlsx b/xlsx/DB_PigBank_Diamond.xlsx index 9d17b20..2e382af 100644 Binary files a/xlsx/DB_PigBank_Diamond.xlsx and b/xlsx/DB_PigBank_Diamond.xlsx differ diff --git a/xlsx/DB_PropExchange.xlsx b/xlsx/DB_PropExchange.xlsx index 91badd0..ac7d0a4 100644 Binary files a/xlsx/DB_PropExchange.xlsx and b/xlsx/DB_PropExchange.xlsx differ diff --git a/xlsx/DB_Task.xlsx b/xlsx/DB_Task.xlsx index 6d465cc..30d00e9 100644 Binary files a/xlsx/DB_Task.xlsx and b/xlsx/DB_Task.xlsx differ