# Conflicts:
#	protocol/webapi/common.pb.go
This commit is contained in:
by 2024-07-03 19:12:22 +08:00
commit 1c14d96060
35 changed files with 1557 additions and 1366 deletions

View File

@ -287,8 +287,8 @@ const (
GainWaySign7Add = 91 // 累计签到进阶奖励获得
GainWayItemChange = 92 //背包内使用道具兑换话费
GainWayPetSkillLevelUp = 93 //宠物技能升级
GainWayPermitAward = 94 // 赛季通行证普通奖励
GainWayPermitAwardSupper = 95 // 赛季通行证典藏奖励
GainWayPermitAward = 94 // 赛季通行证奖励
GainWayItemPermitRank = 95 // 赛季通行证排行奖励
GainWayPermitExchangeCost = 96 // 赛季通行证兑换消耗
GainWayPermitExchangeGain = 97 // 赛季通行证兑换获得
GainWayItemTaskPermit = 98 // 赛季通行证任务
@ -793,5 +793,3 @@ const (
)
const PermitStartTsKey = "permit_start_ts"
const PermitTaskScore = 100

View File

@ -162,6 +162,10 @@ func GetDayStartTs(ts int64) int64 {
return today.Unix()
}
func GetDayNextStartTs(ts int64) int64 {
return GetDayStartTs(ts) + 86400
}
func GetMonthTimestamp() []int64 {
now := time.Now().Local()
year, month, _ := now.Date()

Binary file not shown.

View File

@ -4,7 +4,7 @@
"Id": 10001,
"Name": "斗鸡碎片",
"ShowLocation": [
1,
0,
1
],
"Classify": [
@ -36,7 +36,7 @@
"Id": 11001,
"Name": "技能碎片",
"ShowLocation": [
1,
0,
1
],
"Classify": [
@ -68,7 +68,7 @@
"Id": 20001,
"Name": "酷帕碎片",
"ShowLocation": [
1,
0,
1
],
"Classify": [
@ -100,7 +100,7 @@
"Id": 20002,
"Name": "蝶女碎片",
"ShowLocation": [
1,
0,
1
],
"Classify": [
@ -132,7 +132,7 @@
"Id": 20003,
"Name": "魔术师碎片",
"ShowLocation": [
1,
0,
1
],
"Classify": [
@ -801,7 +801,7 @@
1,
0
],
"Type": 13,
"Type": 19,
"Effect0": [
0,
0,

Binary file not shown.

Binary file not shown.

View File

@ -91,7 +91,7 @@
"TargetTimes": 200,
"FinishTimes": 1,
"Award": {
"100001": 2000000
"100001": 1000000
}
},
{
@ -113,7 +113,7 @@
"TargetTimes": 400,
"FinishTimes": 1,
"Award": {
"100001": 5000000
"100001": 3000000
}
},
{
@ -135,7 +135,7 @@
"TargetTimes": 600,
"FinishTimes": 1,
"Award": {
"100002": 30
"100002": 10
}
},
{
@ -807,7 +807,7 @@
"TargetTimes": 1,
"FinishTimes": 1,
"Award": {
"100011": 50
"100011": 20
}
},
{
@ -818,7 +818,7 @@
"TargetTimes": 3600,
"FinishTimes": 1,
"Award": {
"100011": 51
"100011": 20
},
"Position": [
1,
@ -833,7 +833,7 @@
"TargetTimes": 1,
"FinishTimes": 1,
"Award": {
"100011": 52
"100011": 30
},
"Position": [
0,
@ -848,7 +848,7 @@
"TargetTimes": 1,
"FinishTimes": 1,
"Award": {
"100011": 53
"100011": 30
}
},
{
@ -859,7 +859,7 @@
"TargetTimes": 3,
"FinishTimes": 1,
"Award": {
"100011": 54
"100011": 30
},
"GameType": 1
},
@ -871,7 +871,7 @@
"TargetTimes": 3,
"FinishTimes": 1,
"Award": {
"100011": 55
"100011": 30
},
"GameType": 1
},
@ -883,7 +883,7 @@
"TargetTimes": 1,
"FinishTimes": 1,
"Award": {
"100011": 56
"100011": 30
},
"GameType": 1
},
@ -895,7 +895,7 @@
"TargetTimes": 3,
"FinishTimes": 1,
"Award": {
"100011": 57
"100011": 50
},
"GameType": 1
},
@ -907,7 +907,7 @@
"TargetTimes": 1,
"FinishTimes": 1,
"Award": {
"100011": 58
"100011": 50
},
"GameType": 1
},
@ -919,7 +919,7 @@
"TargetTimes": 100,
"FinishTimes": 1,
"Award": {
"100011": 59
"100011": 80
},
"Position": [
1,
@ -934,7 +934,7 @@
"TargetTimes": 1,
"FinishTimes": 1,
"Award": {
"100011": 60
"100011": 80
},
"Position": [
1,

View File

@ -23,5 +23,6 @@
"ClosePreCreateRoom": true,
"AgoraAddress": "http://47.105.78.29:8081",
"InviteUrl": "http://47.105.78.29:8000/",
"RankTimeout": 2
"RankTimeout": 2,
"PermitInitScore": 1234
}

View File

@ -7,5 +7,7 @@
"RankAwardTitle": "{\"zh\":\"赛季奖励-%v\",\"vi\":\"Hạng bạc-%v\",\"en\":\"Season rewards-%v\",\"kh\":\"រង្វាន់រដូវកាល-%v\"}",
"RankAward": "{\"zh\":\"您上赛季有未领取的奖励\",\"vi\":\"Bạn có phần thưởng chưa được nhận từ mùa giải trước\",\"en\":\"You have unclaimed rewards from last season\",\"kh\":\"អ្នកមិនទាន់បានយករង្វាន់តាំងពីរដូវកាលមុន\"}",
"MatchAwardTitle": "{\"zh\":\"话费充值兑换码\",\"vi\":\"Mã nạp tiền ĐT\",\"en\":\"Phone recharge code\",\"kh\":\"កូដបញ្ចូលទូរស័ព្ទ\"}",
"MatchAward": "{\"zh\":\"恭喜您获得电话预付卡“%v$”话费充值奖励,兑换码:%v,请尽快使用\",\"vi\":\"Chúc mừng bạn đã nhận được Thẻ trả trước ĐT “%v$” phần thưởng nạp tiền tín dụng ĐT, mã đổi thưởng %v xin sử dụng ngay lập tức\",\"en\":\"Congratulations, you have received the phone prepaid card “%v$” mobile credit top-up reward, redemption code: %v please use it immediately.\",\"kh\":\"សូមអបអរសាទរ អ្នកទទួលបានរង្វាន់កាតបញ្ចូលទូរស័ព្ទ កាតទូរស័ព្ទបង់ប្រាក់ជាមុន “%v$”លេខកូដដោះដូរ %v សូមប្រើវាភ្លាមៗ\"}"
"MatchAward": "{\"zh\":\"恭喜您获得电话预付卡“%v$”话费充值奖励,兑换码:%v,请尽快使用\",\"vi\":\"Chúc mừng bạn đã nhận được Thẻ trả trước ĐT “%v$” phần thưởng nạp tiền tín dụng ĐT, mã đổi thưởng %v xin sử dụng ngay lập tức\",\"en\":\"Congratulations, you have received the phone prepaid card “%v$” mobile credit top-up reward, redemption code: %v please use it immediately.\",\"kh\":\"សូមអបអរសាទរ អ្នកទទួលបានរង្វាន់កាតបញ្ចូលទូរស័ព្ទ កាតទូរស័ព្ទបង់ប្រាក់ជាមុន “%v$”លេខកូដដោះដូរ %v សូមប្រើវាភ្លាមៗ\"}",
"PermitAwardTitle": "{\"zh\":\"赛季通行证排行榜奖励\",\"vi\":\"赛季通行证排行榜奖励\",\"en\":\"赛季通行证排行榜奖励\",\"kh\":\"赛季通行证排行榜奖励\"}",
"PermitAward": "{\"zh\":\"恭喜您在上个赛季通行证排行中名次达到%v名排行奖励已发放请查收\",\"vi\":\"恭喜您在上个赛季通行证排行中名次达到%v名排行奖励已发放请查收\",\"en\":\"恭喜您在上个赛季通行证排行中名次达到%v名排行奖励已发放请查收\",\"kh\":\"恭喜您在上个赛季通行证排行中名次达到%v名排行奖励已发放请查收\"}"
}

View File

@ -22,7 +22,7 @@ func RankPlayerPermitCollection(plt string) *mongo.Collection {
c, first := s.DB().C(RankPlayerPermitCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"startts", "-exp"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"startts", "-exp", "-ts"}, Background: true, Sparse: true})
}
return c
}
@ -60,7 +60,7 @@ func (svc *RankPlayerPermitSvc) Find(args *model.FindPlayerPermitListArgs, ret *
return RankPlayerPermitColError
}
err := fc.Find(bson.M{"startts": args.StartTs}).Sort("-exp").Limit(int(model.GameParamData.RankPlayerPermitMaxNum)).All(&ret.List)
err := fc.Find(bson.M{"startts": args.StartTs}).Sort("-exp", "-ts").Limit(int(model.GameParamData.RankPlayerPermitMaxNum)).All(&ret.List)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Error("QueryPermit is err: ", err)
return err

View File

@ -81,6 +81,7 @@ type GameParam struct {
GameStaticsFightVersion int // 对战场统计数据版本
TestRankMatchAward bool // 测试段位奖励领取通知,直接改玩家排位积分使玩家获得奖励
RankPlayerPermitMaxNum int32 // 赛季通行证积分排行榜最大人数
PermitInitScore int64 // 赛季通行证初始积分
}
var GameParamPath = "../data/gameparam.json"
@ -206,6 +207,6 @@ func InitGameParam() {
GameParamData.BackendTimeLocal = 8
}
if GameParamData.RankPlayerPermitMaxNum == 0 {
GameParamData.RankPlayerPermitMaxNum = 100
GameParamData.RankPlayerPermitMaxNum = 20
}
}

View File

@ -38,6 +38,7 @@ const (
MSGTYPE_ITEM //获取道具
MSGTYPE_RANK_REWARD //排行榜奖励
MSGTYPE_ITEM_CHANGE //背包使用兑换
MSGTYPE_RANK_PermitReward // 通行证排行奖励
)
const (

39
model/permit.go Normal file
View File

@ -0,0 +1,39 @@
package model
// BackendPermitCycle 赛季周期
type BackendPermitCycle struct {
Platform string // 平台
StartTs, EndTs int64 // 活动开始时间
}
type AwardItem struct {
Id int32 // 道具id
Num int64
}
// BackendPermitRank 玩家排名奖励
type BackendPermitRank struct {
Platform string // 平台
StartTs int64 // 活动开始时间
SnId int32 // 玩家id
Rank int32 // 排名 1~100
Awards []AwardItem // 奖励
Score int64 // 积分
}
// BackendPermitExchange 玩家兑换
type BackendPermitExchange struct {
Platform string // 平台
StartTs int64 // 活动开始时间
SnId int32 // 玩家id
Cost []AwardItem // 消耗
Gain []AwardItem // 获得
Ts int64 // 时间戳
}
// BackendPermitJoin 玩家参与活动
type BackendPermitJoin struct {
Platform string // 平台
StartTs int64 // 活动开始时间
SnId int32 // 玩家id
}

View File

@ -75,6 +75,7 @@ type PlayerDiffData struct {
RankScore map[int32]int64 // 排位积分
PhoneScore int64 //手机积分
InviteScore int64 // 邀请积分
Long int64 // 龙币
}
type PlayerBaseData struct {
@ -109,8 +110,7 @@ const (
SystemFreeGive_GiveType_TaskAchievement // 成就任务
SystemFreeGive_GiveType_TaskEveryDay // 每日任务
SystemFreeGive_GiveType_TaskWeekActive // 周活跃奖励
SystemFreeGive_GiveType_PermitAward // 赛季通行证普通奖励
SystemFreeGive_GiveType_PermitAwardSupper // 赛季通行证典藏奖励
SystemFreeGive_GiveType_PermitAward // 赛季通行证奖励
SystemFreeGive_GiveType_TaskPermit // 赛季通行证任务
)
const (
@ -563,6 +563,7 @@ type PlayerBaseInfo struct {
TelephoneCallNum int32
LastLogoutTime time.Time
Roles *RolePetInfo
LastChannel string // 最后包类型
}
type PlayerBaseInfo2 struct {
@ -619,6 +620,8 @@ type WebPlayerDataParam struct {
PlayerPoolUpper, PlayerPoolLower, PlayerPoolCurrent, PlayerPoolOdds int64
RoleAdded, VipAdded, VipExp int64
Items []*WebItem
IsPermit bool
Long, PermitScore int64
}
func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData {
@ -695,6 +698,9 @@ func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData {
Name: v.Name,
})
}
pdfw.IsPermit = param.IsPermit
pdfw.PermitScore = param.PermitScore
pdfw.Long = param.Long
return pdfw
}
func (this *PlayerData) IsMarkFlag(flag int) bool {

View File

@ -285,6 +285,7 @@ type PermitScore struct {
Exp int64
ModId int32 //头像
StartTs int64 // 赛季开始时间戳
Ts int64
}
type FindPlayerPermitListArgs struct {

View File

@ -2,14 +2,18 @@ package mq
// 后台消息
const (
BackBankrupt = "log_bankrupt"
BackClientLog = "log_clientlog_mysql"
BackGameRecord = "evt_gamerec"
BackLogin = "evt_login"
BackOnline = "evt_online"
BackPhoneLottery = "evt_phonelottery"
BackReliefund = "log_relieffund"
BackSystemFreeGive = "evt_systemfreegive"
BackBankrupt = "log_bankrupt"
BackClientLog = "log_clientlog_mysql"
BackGameRecord = "evt_gamerec"
BackLogin = "evt_login"
BackOnline = "evt_online"
BackPhoneLottery = "evt_phonelottery"
BackReliefund = "log_relieffund"
BackSystemFreeGive = "evt_systemfreegive"
BackSystemPermitCycle = "back_permitcycle"
BackSystemPermitRank = "back_permitrank"
BackSystemPermitExchange = "back_permitexchange"
BackSystemPermitJoin = "back_permitjoin"
)
// dbproxy 消息

View File

@ -1107,6 +1107,7 @@ type SCLogin struct {
Token string `protobuf:"bytes,16,opt,name=Token,proto3" json:"Token,omitempty"` // md5(密码+AppId)
ClientParam string `protobuf:"bytes,17,opt,name=ClientParam,proto3" json:"ClientParam,omitempty"` // 客户端配置文件
GameSwitch []*EntrySwitch `protobuf:"bytes,18,rep,name=GameSwitch,proto3" json:"GameSwitch,omitempty"` //入口开关
NextDayTs int64 `protobuf:"varint,19,opt,name=NextDayTs,proto3" json:"NextDayTs,omitempty"` // 服务器的下一天时间戳
}
func (x *SCLogin) Reset() {
@ -1267,6 +1268,13 @@ func (x *SCLogin) GetGameSwitch() []*EntrySwitch {
return nil
}
func (x *SCLogin) GetNextDayTs() int64 {
if x != nil {
return x.NextDayTs
}
return 0
}
//公告参数
type Bulletion struct {
state protoimpl.MessageState
@ -2917,7 +2925,7 @@ var file_login_proto_rawDesc = []byte{
0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74,
0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x22, 0xf4, 0x04, 0x0a, 0x07, 0x53, 0x43, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x09,
0x22, 0x92, 0x05, 0x0a, 0x07, 0x53, 0x43, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x31, 0x0a, 0x09,
0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x13, 0x2e, 0x6c, 0x6f, 0x67, 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,
@ -2956,273 +2964,275 @@ var file_login_proto_rawDesc = []byte{
0x72, 0x61, 0x6d, 0x12, 0x32, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63,
0x68, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x0a, 0x47, 0x61, 0x6d,
0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x97, 0x01, 0x0a, 0x09, 0x42, 0x75, 0x6c, 0x6c,
0x65, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x54,
0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4e, 0x6f, 0x74, 0x69,
0x63, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x63,
0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a,
0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a,
0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72,
0x74, 0x22, 0x59, 0x0a, 0x0f, 0x53, 0x43, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f,
0x6e, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f,
0x67, 0x69, 0x6e, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62,
0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x33, 0x0a, 0x0f,
0x43, 0x53, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61,
0x67, 0x22, 0xa8, 0x01, 0x0a, 0x08, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x0e,
0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25,
0x0a, 0x0e, 0x77, 0x65, 0x69, 0x78, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x65, 0x69, 0x78, 0x69, 0x6e, 0x41, 0x63,
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x75, 0x72, 0x6c,
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x75, 0x72, 0x6c, 0x12,
0x1a, 0x0a, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65,
0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a,
0x0a, 0x71, 0x71, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x71, 0x71, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x12,
0x53, 0x43, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69,
0x73, 0x74, 0x12, 0x33, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4c, 0x69,
0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e,
0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x43, 0x75, 0x73,
0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x30, 0x0a,
0x08, 0x43, 0x53, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
0x03, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x22,
0x51, 0x0a, 0x08, 0x53, 0x43, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x4f,
0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13,
0x2e, 0x6c, 0x6f, 0x67, 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, 0x12,
0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79,
0x70, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x5f, 0x0a, 0x0f, 0x53, 0x43, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70,
0x65, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70,
0x65, 0x6e, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x53, 0x44, 0x69, 0x73, 0x63,
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f,
0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69,
0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x34, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x6c,
0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b,
0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x22, 0x79,
0x0a, 0x09, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x43, 0x66, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x52,
0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12,
0x20, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64,
0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x47, 0x69, 0x76, 0x65, 0x4f, 0x76, 0x65, 0x72,
0x64, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4e, 0x6f, 0x74, 0x47, 0x69,
0x76, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x75, 0x65, 0x22, 0x8f, 0x03, 0x0a, 0x07, 0x43, 0x6c,
0x75, 0x62, 0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x43,
0x6c, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x4f, 0x70, 0x65,
0x6e, 0x43, 0x6c, 0x75, 0x62, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x72, 0x65,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x63,
0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a,
0x11, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x6e, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e,
0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x6e,
0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x49,
0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d,
0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x62, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x79, 0x4d, 0x61,
0x6e, 0x75, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x43, 0x6c, 0x75, 0x62, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x79, 0x4d, 0x61, 0x6e,
0x75, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x16, 0x45, 0x64, 0x69, 0x74, 0x43, 0x6c, 0x75, 0x62, 0x4e,
0x6f, 0x74, 0x69, 0x63, 0x65, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x07, 0x20,
0x01, 0x28, 0x08, 0x52, 0x16, 0x45, 0x64, 0x69, 0x74, 0x43, 0x6c, 0x75, 0x62, 0x4e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f,
0x6d, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x47, 0x69, 0x76, 0x65, 0x43,
0x6f, 0x69, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x47,
0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x22, 0x81, 0x05, 0x0a, 0x10,
0x53, 0x43, 0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x31, 0x0a, 0x09,
0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x13, 0x2e, 0x6c, 0x6f, 0x67, 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,
0x36, 0x0a, 0x16, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
0x74, 0x47, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x16, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47,
0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78,
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x78, 0x18, 0x06,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61,
0x78, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, 0x20,
0x03, 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x20, 0x0a,
0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
0x22, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x18,
0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46,
0x6c, 0x6f, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x70, 0x72, 0x65, 0x61,
0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a,
0x06, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e,
0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x43, 0x66, 0x67, 0x52,
0x06, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x43, 0x6c, 0x75, 0x62, 0x18,
0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x6c,
0x75, 0x62, 0x43, 0x66, 0x67, 0x52, 0x04, 0x43, 0x6c, 0x75, 0x62, 0x12, 0x28, 0x0a, 0x0f, 0x45,
0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x18, 0x0e,
0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x61,
0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05,
0x52, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79,
0x4d, 0x61, 0x78, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d,
0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x45,
0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x22,
0x44, 0x0a, 0x0f, 0x53, 0x43, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x12, 0x31, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 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, 0x22, 0x42, 0x0a, 0x0c, 0x43, 0x53, 0x56, 0x65, 0x72, 0x69, 0x66,
0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x61, 0x0a, 0x0c, 0x53, 0x43, 0x56,
0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x4f, 0x70, 0x52,
0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x78, 0x74, 0x44,
0x61, 0x79, 0x54, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4e, 0x65, 0x78, 0x74,
0x44, 0x61, 0x79, 0x54, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x09, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74,
0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x02, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x54, 0x69, 0x74,
0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x4e, 0x6f,
0x74, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x55,
0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53,
0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x22,
0x59, 0x0a, 0x0f, 0x53, 0x43, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x69, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x62, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x4c,
0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f, 0x67, 0x69,
0x6e, 0x2e, 0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62, 0x75, 0x6c,
0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x33, 0x0a, 0x0f, 0x43, 0x53,
0x42, 0x75, 0x6c, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x0a,
0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x22,
0xa8, 0x01, 0x0a, 0x08, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0e,
0x77, 0x65, 0x69, 0x78, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x65, 0x69, 0x78, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x75, 0x72, 0x6c, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x75, 0x72, 0x6c, 0x12, 0x1a, 0x0a,
0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x6e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x78, 0x74,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x71,
0x71, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x71, 0x71, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x49, 0x0a, 0x12, 0x53, 0x43,
0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74,
0x12, 0x33, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65,
0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x43, 0x53, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x30, 0x0a, 0x08, 0x43,
0x53, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53,
0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x22, 0x51, 0x0a,
0x08, 0x53, 0x43, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x4f, 0x70, 0x52,
0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c,
0x6f, 0x67, 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, 0x1e, 0x0a, 0x0a,
0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x38, 0x0a, 0x14,
0x43, 0x53, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79,
0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66,
0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x22, 0x69, 0x0a, 0x14, 0x53, 0x43, 0x52, 0x65, 0x67, 0x69,
0x73, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31,
0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 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, 0x1e, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70,
0x65, 0x22, 0x37, 0x0a, 0x0e, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x47, 0x61, 0x6d, 0x65, 0x46,
0x72, 0x65, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x11, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0e, 0x53, 0x43,
0x41, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x66, 0x67, 0x12, 0x22, 0x0a, 0x0c,
0x41, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03,
0x28, 0x05, 0x52, 0x0c, 0x41, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x66, 0x67,
0x22, 0x47, 0x0a, 0x0f, 0x43, 0x53, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x47, 0x61, 0x6d, 0x65,
0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12,
0x18, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x4c, 0x0a, 0x0f, 0x53, 0x43, 0x47,
0x65, 0x74, 0x54, 0x68, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x39, 0x0a, 0x0a,
0x54, 0x68, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x68,
0x72, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x54, 0x68, 0x72,
0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x24, 0x0a, 0x10, 0x43, 0x53, 0x41, 0x63, 0x63,
0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41,
0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x2a, 0xf7, 0x03,
0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f,
0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12,
0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12,
0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69,
0x6c, 0x65, 0x64, 0x10, 0xe8, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c,
0x6f, 0x67, 0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x72, 0x72, 0x10, 0xe9, 0x07, 0x12, 0x19,
0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4f, 0x74, 0x68, 0x65,
0x72, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x10, 0xeb, 0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x53, 0x75, 0x63, 0x63, 0x65,
0x73, 0x73, 0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0xed, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f,
0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x10, 0xee, 0x07, 0x12,
0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61,
0x6d, 0x65, 0x53, 0x61, 0x6d, 0x65, 0x10, 0xef, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x6f,
0x72, 0x10, 0xf0, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10,
0xf1, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x42, 0x65, 0x46, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x10, 0xf2, 0x07, 0x12, 0x19, 0x0a,
0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72,
0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77,
0x10, 0x95, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e,
0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x10,
0x9e, 0x08, 0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72,
0x72, 0x6f, 0x72, 0x10, 0xa9, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54,
0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x10, 0xaa, 0x08, 0x12,
0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x45,
0x72, 0x72, 0x6f, 0x72, 0x10, 0xab, 0x08, 0x2a, 0xbc, 0x05, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f,
0x47, 0x49, 0x4e, 0x10, 0x83, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x4e, 0x10, 0x84, 0x10, 0x12, 0x15, 0x0a, 0x10,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x4f, 0x55, 0x54,
0x10, 0x85, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x4c, 0x4f, 0x47, 0x4f, 0x55, 0x54, 0x10, 0x86, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46,
0x49, 0x47, 0x10, 0x87, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f,
0x10, 0x88, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x89,
0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43,
0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10,
0x8a, 0x10, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54,
0x10, 0x8b, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x8c,
0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43,
0x55, 0x53, 0x54, 0x4f, 0x4d, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x8d, 0x10, 0x12,
0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41,
0x54, 0x46, 0x4f, 0x52, 0x4d, 0x43, 0x46, 0x47, 0x10, 0x8e, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52,
0x4d, 0x43, 0x46, 0x47, 0x10, 0x8f, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x43, 0x48, 0x45,
0x43, 0x4b, 0x10, 0x90, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x91, 0x10,
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x45,
0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x92, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45,
0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x93, 0x10, 0x12, 0x21,
0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49,
0x53, 0x54, 0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x94,
0x10, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53,
0x59, 0x4e, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x52, 0x45, 0x45, 0x10, 0x95, 0x10, 0x12, 0x1b,
0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x53,
0x57, 0x49, 0x54, 0x43, 0x48, 0x43, 0x46, 0x47, 0x10, 0x96, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x48, 0x52, 0x47,
0x41, 0x4d, 0x45, 0x43, 0x46, 0x47, 0x10, 0x97, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x48, 0x52, 0x47, 0x41, 0x4d,
0x45, 0x43, 0x46, 0x47, 0x10, 0x98, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x56, 0x41,
0x4c, 0x49, 0x44, 0x10, 0x99, 0x10, 0x2a, 0xbf, 0x01, 0x0a, 0x14, 0x53, 0x53, 0x44, 0x69, 0x73,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x0e, 0x0a, 0x0a, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12,
0x11, 0x0a, 0x0d, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x65,
0x7a, 0x65, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x53, 0x65,
0x72, 0x76, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x53,
0x53, 0x44, 0x54, 0x43, 0x5f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74,
0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x53, 0x44, 0x54,
0x43, 0x5f, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x10, 0x05, 0x12, 0x14, 0x0a,
0x10, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x4c, 0x6f,
0x77, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x42, 0x6c, 0x61,
0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x07, 0x42, 0x25, 0x5a, 0x23, 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, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65,
0x22, 0x11, 0x0a, 0x0f, 0x43, 0x53, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x22, 0x5f, 0x0a, 0x0f, 0x53, 0x43, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x70, 0x65, 0x6e,
0x46, 0x6c, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x70, 0x65, 0x6e,
0x46, 0x6c, 0x61, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x79,
0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d,
0x54, 0x79, 0x70, 0x65, 0x22, 0x40, 0x0a, 0x0c, 0x53, 0x53, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e,
0x6e, 0x65, 0x63, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x34, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x74,
0x46, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61, 0x67, 0x22, 0x79, 0x0a, 0x09,
0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x43, 0x66, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x62,
0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a,
0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12,
0x26, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x47, 0x69, 0x76, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x64, 0x75,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4e, 0x6f, 0x74, 0x47, 0x69, 0x76, 0x65,
0x4f, 0x76, 0x65, 0x72, 0x64, 0x75, 0x65, 0x22, 0x8f, 0x03, 0x0a, 0x07, 0x43, 0x6c, 0x75, 0x62,
0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x6c, 0x75,
0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x4f, 0x70, 0x65, 0x6e, 0x43,
0x6c, 0x75, 0x62, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x6e, 0x63, 0x72, 0x65,
0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x49,
0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x43,
0x6c, 0x75, 0x62, 0x49, 0x6e, 0x69, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x6e, 0x69, 0x74,
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x11, 0x49, 0x6e, 0x63,
0x72, 0x65, 0x61, 0x73, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x38, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x43, 0x6c, 0x75, 0x62, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x75,
0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x43, 0x6c, 0x75, 0x62, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x75, 0x61,
0x6c, 0x12, 0x36, 0x0a, 0x16, 0x45, 0x64, 0x69, 0x74, 0x43, 0x6c, 0x75, 0x62, 0x4e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28,
0x08, 0x52, 0x16, 0x45, 0x64, 0x69, 0x74, 0x43, 0x6c, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x63,
0x65, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x10, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20,
0x01, 0x28, 0x03, 0x52, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x41,
0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x47, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x69,
0x6e, 0x52, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0c, 0x47, 0x69, 0x76,
0x65, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x61, 0x74, 0x65, 0x22, 0x81, 0x05, 0x0a, 0x10, 0x53, 0x43,
0x50, 0x6c, 0x61, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a,
0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x31, 0x0a, 0x09, 0x4f, 0x70,
0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e,
0x6c, 0x6f, 0x67, 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, 0x36, 0x0a,
0x16, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47,
0x69, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x55,
0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x47, 0x69, 0x76,
0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x4d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68,
0x61, 0x6e, 0x67, 0x65, 0x4d, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x45, 0x78, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a,
0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0b, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x78, 0x12,
0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28,
0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4f,
0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x22, 0x0a,
0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x09, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x46, 0x6c, 0x6f,
0x77, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x53, 0x70, 0x72, 0x65, 0x61, 0x64, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52,
0x65, 0x62, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x6f,
0x67, 0x69, 0x6e, 0x2e, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x43, 0x66, 0x67, 0x52, 0x06, 0x52,
0x65, 0x62, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x43, 0x6c, 0x75, 0x62, 0x18, 0x0d, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x6c, 0x75, 0x62,
0x43, 0x66, 0x67, 0x52, 0x04, 0x43, 0x6c, 0x75, 0x62, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x18, 0x0e, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x61, 0x6e, 0x6b,
0x4d, 0x61, 0x78, 0x12, 0x2c, 0x0a, 0x11, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41,
0x6c, 0x69, 0x70, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6c, 0x69, 0x70, 0x61, 0x79, 0x4d, 0x61,
0x78, 0x12, 0x2a, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x75, 0x6c,
0x74, 0x69, 0x70, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x45, 0x78, 0x63,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x22, 0x44, 0x0a,
0x0f, 0x53, 0x43, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x68, 0x65, 0x63, 0x6b,
0x12, 0x31, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67, 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, 0x22, 0x42, 0x0a, 0x0c, 0x43, 0x53, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54,
0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54,
0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f,
0x72, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x54, 0x65, 0x6c, 0x22, 0x61, 0x0a, 0x0c, 0x53, 0x43, 0x56, 0x65, 0x72,
0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x6c, 0x6f, 0x67,
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, 0x1e, 0x0a, 0x0a, 0x56, 0x65,
0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x38, 0x0a, 0x14, 0x43, 0x53,
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79,
0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x54, 0x61,
0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
0x6d, 0x54, 0x61, 0x67, 0x22, 0x69, 0x0a, 0x14, 0x53, 0x43, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
0x65, 0x72, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x0a, 0x09,
0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x13, 0x2e, 0x6c, 0x6f, 0x67, 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,
0x1e, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22,
0x37, 0x0a, 0x0e, 0x53, 0x43, 0x53, 0x79, 0x6e, 0x63, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65,
0x65, 0x12, 0x25, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x11, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0e, 0x53, 0x43, 0x41, 0x63,
0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x66, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x63,
0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05,
0x52, 0x0c, 0x41, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x66, 0x67, 0x22, 0x47,
0x0a, 0x0f, 0x43, 0x53, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66,
0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a,
0x07, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0x4c, 0x0a, 0x0f, 0x53, 0x43, 0x47, 0x65, 0x74,
0x54, 0x68, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x39, 0x0a, 0x0a, 0x54, 0x68,
0x72, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x47,
0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x54, 0x68, 0x72, 0x47, 0x61,
0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x24, 0x0a, 0x10, 0x43, 0x53, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x63,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x2a, 0xf7, 0x03, 0x0a, 0x0c,
0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a,
0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x15, 0x0a,
0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65,
0x64, 0x10, 0xe8, 0x07, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67,
0x69, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x72, 0x72, 0x10, 0xe9, 0x07, 0x12, 0x19, 0x0a, 0x14,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50,
0x6c, 0x61, 0x63, 0x65, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xeb,
0x07, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x45, 0x72, 0x72, 0x6f, 0x72,
0x10, 0xed, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69,
0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x61, 0x6e, 0x67, 0x10, 0xee, 0x07, 0x12, 0x18, 0x0a,
0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65,
0x53, 0x61, 0x6d, 0x65, 0x10, 0xef, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10,
0xf0, 0x07, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xf1, 0x07,
0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x42, 0x65, 0x46, 0x72, 0x65, 0x65, 0x7a, 0x65, 0x10, 0xf2, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73,
0x4c, 0x6f, 0x77, 0x10, 0x94, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59,
0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x10, 0x95,
0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x10, 0x9e, 0x08,
0x12, 0x12, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x45, 0x72, 0x72, 0x6f,
0x72, 0x10, 0xa9, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c,
0x43, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x10, 0xaa, 0x08, 0x12, 0x16, 0x0a,
0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0xab, 0x08, 0x2a, 0xbc, 0x05, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x50,
0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x14,
0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x49,
0x4e, 0x10, 0x83, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x4e, 0x10, 0x84, 0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f, 0x47, 0x4f, 0x55, 0x54, 0x10, 0x85,
0x10, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c,
0x4f, 0x47, 0x4f, 0x55, 0x54, 0x10, 0x86, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47,
0x10, 0x87, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x88,
0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42,
0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x89, 0x10, 0x12,
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53,
0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x8a, 0x10,
0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55,
0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x8b,
0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43,
0x55, 0x53, 0x54, 0x4f, 0x4d, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x8c, 0x10, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53,
0x54, 0x4f, 0x4d, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x8d, 0x10, 0x12, 0x1a, 0x0a,
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46,
0x4f, 0x52, 0x4d, 0x43, 0x46, 0x47, 0x10, 0x8e, 0x10, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x43,
0x46, 0x47, 0x10, 0x8f, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x43, 0x48, 0x45, 0x43, 0x4b,
0x10, 0x90, 0x10, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x91, 0x10, 0x12, 0x19,
0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49,
0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x92, 0x10, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x56,
0x45, 0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x93, 0x10, 0x12, 0x21, 0x0a, 0x1c,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54,
0x45, 0x52, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x54, 0x59, 0x50, 0x45, 0x10, 0x94, 0x10, 0x12,
0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e,
0x43, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x52, 0x45, 0x45, 0x10, 0x95, 0x10, 0x12, 0x1b, 0x0a, 0x16,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x53, 0x57, 0x49,
0x54, 0x43, 0x48, 0x43, 0x46, 0x47, 0x10, 0x96, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x48, 0x52, 0x47, 0x41, 0x4d,
0x45, 0x43, 0x46, 0x47, 0x10, 0x97, 0x10, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x48, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x43,
0x46, 0x47, 0x10, 0x98, 0x10, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
0x44, 0x10, 0x99, 0x10, 0x2a, 0xbf, 0x01, 0x0a, 0x14, 0x53, 0x53, 0x44, 0x69, 0x73, 0x63, 0x6f,
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a,
0x0a, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x11, 0x0a,
0x0d, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x10, 0x01,
0x12, 0x10, 0x0a, 0x0c, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x46, 0x72, 0x65, 0x65, 0x7a, 0x65,
0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x53, 0x65, 0x72, 0x76,
0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x53, 0x44,
0x54, 0x43, 0x5f, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e,
0x61, 0x6e, 0x63, 0x65, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f,
0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x53,
0x53, 0x44, 0x54, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x10,
0x06, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x53, 0x44, 0x54, 0x43, 0x5f, 0x42, 0x6c, 0x61, 0x63, 0x6b,
0x4c, 0x69, 0x73, 0x74, 0x10, 0x07, 0x42, 0x25, 0x5a, 0x23, 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, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -159,6 +159,7 @@ message SCLogin {
string Token = 16;// md5(+AppId)
string ClientParam = 17;//
repeated EntrySwitch GameSwitch = 18;//
int64 NextDayTs = 19; //
}
//
message Bulletion{

File diff suppressed because it is too large Load Diff

View File

@ -202,6 +202,9 @@ message PlayerData{
string Channel = 53; //
string LastChannel = 54; // 使
repeated ItemInfo Items = 55; //
bool IsPermit = 56; //
int64 Long = 57; //
int64 PermitScore = 58; //
}
message RoomInfo{

View File

@ -3404,7 +3404,7 @@ type PermitRankAward struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Start int32 `protobuf:"varint,1,opt,name=Start,proto3" json:"Start,omitempty"` // 开始排名;第一名为0
Start int32 `protobuf:"varint,1,opt,name=Start,proto3" json:"Start,omitempty"` // 开始排名;第一名为1
End int32 `protobuf:"varint,2,opt,name=End,proto3" json:"End,omitempty"` // 结束排名
ItemId []*PropInfo `protobuf:"bytes,3,rep,name=ItemId,proto3" json:"ItemId,omitempty"` // 奖励
}
@ -3475,6 +3475,7 @@ type SCPermitInfo struct {
ShowList []*PermitShow `protobuf:"bytes,5,rep,name=ShowList,proto3" json:"ShowList,omitempty"` // 展示列表
IsPermit bool `protobuf:"varint,6,opt,name=IsPermit,proto3" json:"IsPermit,omitempty"` // 是否已购买典藏通行证
RankAward []*PermitRankAward `protobuf:"bytes,7,rep,name=RankAward,proto3" json:"RankAward,omitempty"` // 排行榜奖励
RefreshTs int64 `protobuf:"varint,8,opt,name=RefreshTs,proto3" json:"RefreshTs,omitempty"` // 下次刷新时间戳
}
func (x *SCPermitInfo) Reset() {
@ -3558,6 +3559,13 @@ func (x *SCPermitInfo) GetRankAward() []*PermitRankAward {
return nil
}
func (x *SCPermitInfo) GetRefreshTs() int64 {
if x != nil {
return x.RefreshTs
}
return 0
}
// 领取赛季通行证奖励
//PACKET_CSPermitAward
type CSPermitAward struct {
@ -4449,7 +4457,7 @@ var file_welfare_proto_rawDesc = []byte{
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, 0x85, 0x02, 0x0a, 0x0c, 0x53, 0x43, 0x50, 0x65,
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,
@ -4465,174 +4473,176 @@ var file_welfare_proto_rawDesc = []byte{
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, 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,
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, 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, 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, 0x9d,
0x0b, 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,
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, 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, 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,
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, 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, 0x9d, 0x0b, 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, 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 (

View File

@ -425,7 +425,7 @@ message PermitShow{
}
message PermitRankAward{
int32 Start = 1; // 0
int32 Start = 1; // 1
int32 End = 2; //
repeated PropInfo ItemId = 3; //
}
@ -439,6 +439,7 @@ message SCPermitInfo{
repeated PermitShow ShowList = 5; //
bool IsPermit = 6; //
repeated PermitRankAward RankAward = 7; //
int64 RefreshTs = 8; //
}
//

2
public

@ -1 +1 @@
Subproject commit 65710a75b2bc39d1e899c49492db6b9978ab52e9
Subproject commit 6c801eab0d99ba3c8878278677bb5ef17a1370bd

View File

@ -21,9 +21,13 @@ func main() {
defer core.ClosePackages()
// core hook
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
etcd.Start()
model.StartupRPClient(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"), time.Duration(common.CustomConfig.GetInt("MgoRpcCliReconnInterV"))*time.Second)
mq.StartConsumer(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true)
err := model.InitGameKVData()
if err != nil {
panic(err)
}
etcd.Start()
return nil
})
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {

View File

@ -52,7 +52,7 @@ func IsTaskReward(p *Player, id int32) bool {
if data := p.WelfData.Task[id]; data != nil && data.Ts > 0 {
t := srvdata.PBDB_TaskMgr.GetData(id)
switch t.ActivityType {
case common.TaskActivityTypeEveryDay:
case common.TaskActivityTypeEveryDay, common.TaskActivityTypePermit:
if common.TsInSameDay(time.Now().Unix(), data.Ts) {
return true
}
@ -73,8 +73,12 @@ func IsTaskReward(p *Player, id int32) bool {
}
func SendReward(p *Player, m map[int64]int64, tp int32) {
isPermit := p.GetIsPermit()
var items []*Item
for k, v := range m {
if k == common.ItemIDPermit && isPermit {
v += v / 2 // 增加50%
}
items = append(items, &Item{
ItemId: int32(k),
ItemNum: v,
@ -167,15 +171,13 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64)
return nil
}
isPermit := p.GetIsPermit()
ret := &taskproto.SCTaskReward{
OpCode: taskproto.OpResultCode_OPRC_Error,
Tp: msg.GetTp(),
Id: msg.GetId(),
Reward: make(map[int64]int64),
}
isPermit := p.GetIsPermit()
f := func(id int32) {
if IsTaskFinish(p, id) && !IsTaskReward(p, id) {
p.WelfData.Task[id].Ts = time.Now().Unix()
@ -183,17 +185,10 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64)
if data != nil {
SendReward(p, data.Award, msg.Tp)
for k, vv := range data.GetAward() {
ret.Reward[k] = ret.Reward[k] + vv
}
// 赛季通行证积分
if data.GetActivityType() == common.TaskActivityTypePermit {
ret.Reward[common.ItemIDPermit] = common.PermitTaskScore
if isPermit {
ret.Reward[common.ItemIDPermit] = common.PermitTaskScore * 1.5
if k == common.ItemIDPermit && isPermit {
vv += vv / 2 // 增加50%
}
BagMgrSingleton.AddItem(
p, common.ItemIDPermit, ret.Reward[common.ItemIDPermit], 0, 0,
"system", "任务获得赛季通行证积分", 0, 0, true)
ret.Reward[k] = ret.Reward[k] + vv
}
}
ret.OpCode = taskproto.OpResultCode_OPRC_Success

View File

@ -539,8 +539,8 @@ func SendPermitReward(p *Player, m map[int64]int64, tp int32) {
gain = common.GainWayPermitAward
giveType = model.SystemFreeGive_GiveType_PermitAward
case 2:
gain = common.GainWayPermitAwardSupper
giveType = model.SystemFreeGive_GiveType_PermitAwardSupper
gain = common.GainWayPermitAward
giveType = model.SystemFreeGive_GiveType_PermitAward
}
BagMgrSingleton.AddItems(p, items, 0, gain, "system", "通行证奖励", 0, 0, false)
for _, v := range items {
@ -595,8 +595,9 @@ func CSPermitInfo(s *netlib.Session, packetid int, data interface{}, sid int64)
pack := &welfare.SCPermitInfo{
Exp: exp,
Level: level,
Timestamp: []int64{startTs, endTs},
Timestamp: []int64{startTs, endTs - 1},
IsPermit: p.GetIsPermit(),
RefreshTs: common.GetDayNextStartTs(time.Now().Unix()),
}
// 等级奖励
for _, v := range channelConfig.GetLevelConfig() {
@ -697,15 +698,14 @@ func CSPermitAward(s *netlib.Session, packetid int, data interface{}, sid int64)
}
startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs
endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs
if startTs == 0 || endTs == 0 {
now := time.Now()
if startTs == 0 || endTs == 0 || now.Unix() < startTs || now.Unix() >= endTs {
logger.Logger.Errorf("CSPermitAward not startTs %v", p.SnId)
return nil
}
now := time.Now()
pack := &welfare.SCPermitAward{
OpRetCode: welfare.OpResultCode_OPRC_Error,
OpRetCode: welfare.OpResultCode_OPRC_Sucess,
Tp: msg.GetTp(),
Id: msg.GetId(),
}
@ -776,8 +776,8 @@ func CSPermitAward(s *netlib.Session, packetid int, data interface{}, sid int64)
p.WelfData.PermitAward[v.GetRank()*1000] = now.Unix()
}
} else {
if v.GetRank() == msg.GetId() {
if IsPermitCanReward(p, v.GetRank()*1000) {
if v.GetRank()*1000 == msg.GetId() {
if IsPermitCanReward(p, msg.GetId()) {
for _, vv := range v.GetAward2() {
pack.Award2 = append(pack.Award2, &welfare.PropInfo{
ItemId: vv.GetItemId(),
@ -940,11 +940,15 @@ func CSPermitExchangeList(s *netlib.Session, packetid int, data interface{}, sid
times := int32(v.GetTimes()) - int32(GetPermitExchangeNum(p, v.GetId()))
exchangeTimes := v.GetTimes()
if exchangeTimes == 0 {
exchangeTimes = -1
}
pack.List = append(pack.List, &welfare.ShopInfo{
Id: v.GetId(),
Gain: gain,
Cost: cost,
ExchangeTimes: int32(v.GetTimes()),
ExchangeTimes: int32(exchangeTimes),
RemainTimes: times,
Level: v.GetLevel(),
NeedPermit: v.GetIsPermit(),
@ -977,13 +981,12 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
}
startTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs
endTs := PlatformMgrSingleton.GetConfig(p.Platform).PermitEndTs
if startTs == 0 || endTs == 0 {
now := time.Now()
if startTs == 0 || endTs == 0 || now.Unix() < startTs || now.Unix() >= endTs {
logger.Logger.Errorf("CSPermitExchange not startTs %v", p.SnId)
return nil
}
now := time.Now()
isExchange, code := GetPermitCanExchange(p, msg.GetId())
pack := &welfare.SCPermitExchange{
OpRetCode: welfare.OpResultCode_OPRC_Sucess,
@ -1019,29 +1022,38 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
// 检查背包是否足够
var items []*Item
var costItems []*Item
for k, v := range exchangeConfig.GetCost() {
item := BagMgrSingleton.GetItem(p.SnId, int32(k))
var cost, gain []model.AwardItem
for _, v := range exchangeConfig.GetCost() {
item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId())
if item == nil || item.ItemNum < v.GetItemNum() {
send(welfare.OpResultCode_OPRC_ErrCost)
return nil
}
info := srvdata.PBDB_GameItemMgr.GetData(int32(k))
info := srvdata.PBDB_GameItemMgr.GetData(v.GetItemId())
if info != nil {
costItems = append(costItems, &Item{
ItemId: int32(k),
ItemId: v.GetItemId(),
ItemNum: v.GetItemNum(),
Name: info.Name,
})
cost = append(cost, model.AwardItem{
Id: v.GetItemId(),
Num: v.GetItemNum(),
})
}
}
for k, v := range exchangeConfig.GetGain() {
info := srvdata.PBDB_GameItemMgr.GetData(int32(k))
for _, v := range exchangeConfig.GetGain() {
info := srvdata.PBDB_GameItemMgr.GetData(v.GetItemId())
if info != nil {
items = append(items, &Item{
ItemId: int32(k),
ItemId: v.GetItemId(),
ItemNum: v.GetItemNum(),
Name: info.Name,
})
gain = append(gain, model.AwardItem{
Id: v.GetItemId(),
Num: v.GetItemNum(),
})
}
}
// 扣除背包物品
@ -1051,14 +1063,19 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int
// 增加背包物品
BagMgrSingleton.AddItems(p, items, 0, common.GainWayPermitExchangeGain, "system", "赛季通行证兑换获得", 0, 0, false)
p.WelfData.PermitExchange[msg.GetId()] = append(p.WelfData.PermitExchange[msg.GetId()], now.Unix())
// 兑换记录
LogChannelSingleton.WriteLog(&model.BackendPermitExchange{
Platform: p.Platform,
StartTs: startTs,
SnId: p.SnId,
Cost: cost,
Gain: gain,
Ts: now.Unix(),
})
}
}
if !isExchange {
pack.OpRetCode = welfare.OpResultCode_OPRC_Error
}
p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitExchange), pack)
logger.Logger.Tracef("SCPermitExchange: %v", pack)
send(welfare.OpResultCode_OPRC_Sucess)
return nil
}

View File

@ -149,6 +149,7 @@ func (this *BagMgr) GetItem(snid, itemId int32) *Item {
// noLog 是否不记录日志
func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int32, operator, remark string,
gameId, gameFreeId int64, noLog bool) (*BagInfo, bag.OpResultCode, bool) {
longItem := this.GetItem(p.SnId, common.ItemIDPermit)
var items []*Item
for _, v := range addItems {
if v == nil || v.ItemNum == 0 {
@ -311,9 +312,21 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int
Exp: item.ItemNum,
ModId: p.Roles.ModId,
StartTs: startTs,
Ts: time.Now().Unix(),
})
// 参与赛季通行证活动
if longItem == nil || longItem.ItemNum == 0 {
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
Platform: p.Platform,
StartTs: PlatformMgrSingleton.GetConfig(p.Platform).PermitStartTs,
SnId: p.SnId,
})
}
}
}
if v == common.ItemIDLong {
p.SendDiffData()
}
}
if code != bag.OpResultCode_OPRC_Sucess {

View File

@ -8,6 +8,7 @@ import (
"go.etcd.io/etcd/client/v3"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/task"
"mongo.games.com/game/common"
@ -17,7 +18,6 @@ import (
loginproto "mongo.games.com/game/protocol/login"
playerproto "mongo.games.com/game/protocol/player"
"mongo.games.com/game/protocol/webapi"
"mongo.games.com/goserver/core/logger"
)
func init() {
@ -207,7 +207,6 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
case *webapi.ActInviteConfig:
PlatformMgrSingleton.GetConfig(config.Platform).ActInviteConfig = config
case *webapi.ActPermitConfig:
break
PlatformMgrSingleton.GetConfig(config.Platform).ActPermitConfig = config
st := new(model.PermitStartTs)
permit := model.GetStrKVGameData(common.PermitStartTsKey + config.Platform)
@ -246,102 +245,20 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
}
}
return nil
}), nil).StartByExecutor("permit_start_ts")
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if st.StartTs > 0 {
LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
Platform: config.Platform,
StartTs: st.StartTs,
EndTs: st.EndTs,
})
}
})).StartByExecutor("permit_start_ts")
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}
// test
actConfig := &webapi.ActPermitConfig{
Platform: "1",
StartTs: 1719646575,
Days: 7,
}
channelConfig := webapi.PermitChannelConfig{
Channel: "Official",
}
for i := 0; i < 100; i++ {
channelConfig.LevelConfig = append(channelConfig.LevelConfig, &webapi.PermitLevelConfig{
Rank: int32(i + 1),
Score: int64((i + 1) * 100),
Award1: []*webapi.ItemInfo{
{
ItemId: common.ItemIDCoin,
ItemNum: 100,
},
},
Award2: []*webapi.ItemInfo{
{
ItemId: common.ItemIDCoin,
ItemNum: 100,
},
{
ItemId: common.ItemIDDiamond,
ItemNum: 100,
},
},
})
}
itemId := []int32{100001, 100002, 10001, 20001, 20002, 20003}
for i := 0; i < 10; i++ {
level := 0
if common.RandInt(0, 3) == 0 {
level = common.RandInt(1, 101)
}
channelConfig.ExchangeConfig = append(channelConfig.ExchangeConfig, &webapi.PermitExchangeConfig{
Id: int32(i + 1),
SortId: int32(100 - i),
Gain: []*webapi.ItemInfo{
{
ItemId: itemId[common.RandInt(len(itemId))],
ItemNum: 1,
},
},
Cost: []*webapi.ItemInfo{{
ItemId: common.ItemIDLong,
ItemNum: int64(common.RandInt(50, 101)),
}},
IsPermit: common.RandInt(0, 3) == 0,
Level: int64(level),
Times: int64(common.RandInt(0, 5)),
IsShow: common.RandInt(0, 4) != 0,
})
}
rankN := 1
for i := 0; i < 3; i++ {
sub := common.RandInt(0, 3)
items := []*webapi.ItemInfo{
{
ItemId: common.ItemIDCoin,
ItemNum: 100,
},
}
if common.RandInt(2) == 0 {
items = append(items, &webapi.ItemInfo{
ItemId: common.ItemIDDiamond,
ItemNum: 100,
})
}
channelConfig.RankConfig = append(channelConfig.RankConfig, &webapi.PermitRankConfig{
Start: int32(rankN),
End: int32(rankN + sub),
ItemId: items,
})
rankN = rankN + sub + 1
}
actConfig.Configs = append(actConfig.Configs, &channelConfig)
webConfig := channelConfig
webConfig.Channel = "Web"
actConfig.Configs = append(actConfig.Configs, &webConfig)
googleConfig := channelConfig
googleConfig.Channel = "GooglePlay"
actConfig.Configs = append(actConfig.Configs, &googleConfig)
PlatformMgrSingleton.GetConfig("1").ActPermitConfig = actConfig
PlatformMgrSingleton.GetConfig("1").PermitStartTs = common.GetDayStartTs(1719646575)
PlatformMgrSingleton.GetConfig("1").PermitEndTs = common.GetDayStartTs(1719646575) + int64(actConfig.GetDays()*24*3600)
logger.Logger.Tracef("==> PermitConfig: %v ", actConfig)
// test
}
func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {

View File

@ -3,6 +3,8 @@ package main
import (
"reflect"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
@ -39,6 +41,7 @@ func (c *LogChannel) WriteLog(log interface{}) {
if cname == "" {
cname = "_null_"
}
logger.Logger.Tracef("==> RabbitMQ(%v): %#v", cname, log)
mq.Send(cname, log)
}
@ -61,4 +64,8 @@ func init() {
LogChannelSingleton.RegisterLogCName(model.EvtInvite, &model.EvtInviteMsg{})
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerLevel, &model.PlayerLevelInfo{})
LogChannelSingleton.RegisterLogCName(model.MQRankPlayerPermit, &model.PermitScore{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitCycle, &model.BackendPermitCycle{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitRank, &model.BackendPermitRank{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitExchange, &model.BackendPermitExchange{})
LogChannelSingleton.RegisterLogCName(mq.BackSystemPermitJoin, &model.BackendPermitJoin{})
}

View File

@ -5,6 +5,7 @@ import (
"time"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/i18n"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/task"
@ -26,11 +27,12 @@ func (r *PermitMgr) OnDayTimer() {
logger.Logger.Info("(this *PermitMgr) OnDayTimer")
now := time.Now()
for _, v := range PlatformMgrSingleton.GetPlatforms() {
pl := PlatformMgrSingleton.GetConfig(v.IdStr).ActPermitConfig
platform := v.IdStr
pl := PlatformMgrSingleton.GetConfig(platform).ActPermitConfig
if pl == nil {
continue
}
b := model.GetStrKVGameData(common.PermitStartTsKey + v.IdStr)
b := model.GetStrKVGameData(common.PermitStartTsKey + platform)
if b == "" {
logger.Logger.Errorf("(this *PermitMgr) OnDayTimer GetStrKVGameData not found")
continue
@ -40,6 +42,7 @@ func (r *PermitMgr) OnDayTimer() {
logger.Logger.Errorf("(this *PermitMgr) OnDayTimer json.Unmarshal err:%v", err)
continue
}
logger.Logger.Tracef("(this *PermitMgr) OnDayTimer se:%+v now:%v", *se, now)
if se.StartTs <= now.Unix() && now.Unix() < se.EndTs {
// 在活动内
continue
@ -49,6 +52,100 @@ func (r *PermitMgr) OnDayTimer() {
continue
}
if now.Unix() >= se.EndTs {
// 活动结束,发送排行榜奖励
startTs := se.StartTs
var err error
var list *model.FindPlayerPermitListReply
var players []*model.PlayerBaseInfo
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
list, err = model.FindPlayerPermitList(&model.FindPlayerPermitListArgs{
Platform: platform,
StartTs: startTs,
})
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("PermitMgr OnDayTimer FindPlayerPermitList err:%v", err)
return
}
for k, player := range players {
if player == nil {
logger.Logger.Errorf("PermitMgr OnDayTimer FindPlayerPermitList player is nil %v", list.List[k].SnId)
continue
}
curPlayer := player
// 发送奖励
cfg := PlatformMgrSingleton.GetPermitConfig(platform, player.LastChannel).GetRankConfig()
rank := k + 1
for _, rankInfo := range cfg {
var has bool
var items []int32
for r := rankInfo.GetStart(); r <= rankInfo.GetEnd(); r++ {
if rank == int(r) {
has = true
var awards []model.AwardItem
for _, item := range rankInfo.GetItemId() {
items = append(items, item.GetItemId())
items = append(items, int32(item.GetItemNum()))
awards = append(awards, model.AwardItem{
Id: item.GetItemId(),
Num: item.GetItemNum(),
})
}
if len(items) == 0 {
break
}
logger.Logger.Infof("PermitMgr rank award snid:%v rank:%v", player.SnId, rank)
// 领奖记录
LogChannelSingleton.WriteLog(&model.BackendPermitRank{
Platform: platform,
StartTs: startTs,
SnId: curPlayer.SnId,
Rank: int32(rank),
Score: list.List[k].Exp,
Awards: awards,
})
// 发邮件
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{rank, rank, rank, rank})
newMsg = model.NewMessage("", 0, "", curPlayer.SnId, model.MSGTYPE_RANK_PermitReward,
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", curPlayer.SnId, err)
return err
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
p := PlayerMgrSington.GetPlayerBySnId(curPlayer.SnId)
if p != nil {
p.AddMessage(newMsg)
}
})).Start()
break
}
}
if has {
break
}
}
}
})).StartByExecutor("permit_rank_award")
// 活动已结束, 新开始
se.StartTs = se.EndTs
se.EndTs = se.EndTs + int64(pl.Days*24*3600)
@ -56,17 +153,25 @@ func (r *PermitMgr) OnDayTimer() {
se.StartTs = common.GetDayStartTs(now.Unix())
se.EndTs = se.StartTs + int64(pl.Days*24*3600)
}
PlatformMgrSingleton.GetConfig(v.IdStr).PermitStartTs = se.StartTs
PlatformMgrSingleton.GetConfig(v.IdStr).PermitEndTs = se.EndTs
PlatformMgrSingleton.GetConfig(platform).PermitStartTs = se.StartTs
PlatformMgrSingleton.GetConfig(platform).PermitEndTs = se.EndTs
b, err := json.Marshal(se)
if err != nil {
logger.Logger.Errorf("(this *PermitMgr) OnDayTimer json.Marshal err:%v", err)
continue
}
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
model.UptStrKVGameData(common.PermitStartTsKey+v.IdStr, string(b))
model.UptStrKVGameData(common.PermitStartTsKey+platform, string(b))
return nil
}), nil).StartByExecutor("permit_start_ts")
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if se.StartTs > 0 {
LogChannelSingleton.WriteLog(&model.BackendPermitCycle{
Platform: platform,
StartTs: se.StartTs,
EndTs: se.EndTs,
})
}
})).StartByExecutor("permit_start_ts")
}
}
}

View File

@ -1215,6 +1215,10 @@ func (this *Player) GetMessageAttach(id string) {
remark = "排位赛段位奖励"
gainWay = common.GainWay_RankMatch
addItem()
case model.MSGTYPE_RANK_PermitReward:
remark = "通行证排行奖励"
gainWay = common.GainWayItemPermitRank
addItem()
}
if msg.Coin > 0 {
this.AddCoin(msg.Coin, 0, gainWay, msg.Id.Hex(), remark)
@ -2269,23 +2273,26 @@ func (this *Player) ResetPermit() {
permitStartTs := PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs
if (this.PermitStartTs == 0 || this.PermitStartTs < permitStartTs) && permitStartTs > 0 {
this.PermitStartTs = permitStartTs
this.Permit = time.Time{}
this.WelfData.PermitAward = make(map[int32]int64)
this.WelfData.PermitExchange = make(map[int32][]int64)
this.dirty = true
// 清理数据
bag := BagMgrSingleton.GetBagInfo(this.SnId)
if bag != nil {
delete(bag.BagItem, common.ItemIDPermit)
//todo 上线前删除
bagInfo := BagMgrSingleton.GetBagInfo(this.SnId)
if bagInfo != nil {
bagInfo.BagItem[common.ItemIDPermit] = &Item{
ItemId: common.ItemIDPermit,
ItemNum: 845,
ObtainTime: time.Now().Unix(),
if model.GameParamData.PermitInitScore > 0 {
bagInfo := BagMgrSingleton.GetBagInfo(this.SnId)
if bagInfo != nil {
bagInfo.BagItem[common.ItemIDPermit] = &Item{
ItemId: common.ItemIDPermit,
ItemNum: model.GameParamData.PermitInitScore,
ObtainTime: time.Now().Unix(),
}
this.Permit = time.Now()
}
}
//todo 上线前删除
}
this.WelfData.PermitAward = make(map[int32]int64)
this.WelfData.PermitExchange = make(map[int32][]int64)
}
}
@ -2994,10 +3001,8 @@ func (this *Player) SendPlayerInfo() {
scPlayerData.Data.ReliefFundTimes = this.WelfData.ReliefFundTimes
}
if item := BagMgrSingleton.GetItem(this.SnId, VCard); item != nil {
scPlayerData.Data.VCoin = int64(item.ItemNum) //V卡
scPlayerData.Data.VCoin = item.ItemNum //V卡
}
// 排位积分
scPlayerData.Data.RankScore = RankMgrSingleton.GetPlayerRankScore(this.SnId)
@ -3917,6 +3922,11 @@ func (this *Player) GetPayGoodsInfo() {
}
if info.PageId == ShopPagePermit {
this.Permit = info.CreateTs.Local()
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
Platform: this.Platform,
StartTs: PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs,
SnId: this.SnId,
})
}
switch info.Remark {
case "BlindBox":

View File

@ -278,6 +278,7 @@ func SCLogin(s *netlib.Session, sid int64, csLogin *login_proto.CSLogin, acc *mo
sclogin := &login_proto.SCLogin{
OpRetCode: code,
ClientParam: string(model.ClinetBuf),
NextDayTs: common.GetDayNextStartTs(time.Now().Unix()),
}
if acc != nil {
now := time.Now()

View File

@ -4126,6 +4126,11 @@ func init() {
}
if info.PageId == ShopPagePermit {
player.Permit = info.CreateTs.Local()
LogChannelSingleton.WriteLog(&model.BackendPermitJoin{
Platform: player.Platform,
StartTs: PlatformMgrSingleton.GetConfig(player.Platform).PermitStartTs,
SnId: player.SnId,
})
}
switch info.Remark {
case "BlindBox":
@ -4448,6 +4453,7 @@ func getPlayerDataParam(param *playerDataParam) *model.WebPlayerDataParam {
}
}
}
var long, permitScore int64
var items []*model.WebItem
if param.Items == nil {
b := BagMgrSingleton.GetBagInfo(param.P.SnId)
@ -4461,6 +4467,12 @@ func getPlayerDataParam(param *playerDataParam) *model.WebPlayerDataParam {
N: v.ItemNum,
Name: e.Name,
})
if e.Id == common.ItemIDLong {
long += v.ItemNum
}
if e.Id == common.ItemIDPermit {
permitScore += v.ItemNum
}
}
} else {
for _, v := range param.Items.BagItem {
@ -4473,6 +4485,12 @@ func getPlayerDataParam(param *playerDataParam) *model.WebPlayerDataParam {
N: v.ItemNum,
Name: e.Name,
})
if e.Id == common.ItemIDLong {
long += v.ItemNum
}
if e.Id == common.ItemIDPermit {
permitScore += v.ItemNum
}
}
}
@ -4502,6 +4520,9 @@ func getPlayerDataParam(param *playerDataParam) *model.WebPlayerDataParam {
VipAdded: int64(vipAdded),
VipExp: vipExp,
Items: items,
IsPermit: !param.P.Permit.IsZero(),
Long: long,
PermitScore: permitScore,
}
return ret

Binary file not shown.

Binary file not shown.