diff --git a/.gitignore b/.gitignore index 061da66..0b3c7b4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ _test **/backup /bin/* !/bin/protoc* +/deploy/* # Architecture specific extensions/prefixes *.[568vq] diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8521704..a05e2a1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,7 +35,7 @@ build-job: - git pull origin $CI_COMMIT_REF_NAME # 拷贝到GOPATH - echo '拷贝到GOPATH' - - cp -rfp ./* $GOPATH/src/$ProjectPath + - rsync -rvz --delete ./* $GOPATH/src/$ProjectPath # 进入项目目录 - cd $GOPATH/src/$ProjectPath # 编译 diff --git a/common/constant.go b/common/constant.go index 922a6b2..95de3f4 100644 --- a/common/constant.go +++ b/common/constant.go @@ -573,6 +573,7 @@ const ( ItemDiamondScore = 100012 //钻石积分 ItemIDClawdoll = 40003 // 娃娃卡 ItemDollCard = 40004 // 娃娃卡积分 + ItemIDRoomCard = 40002 // 房卡 ) func ToItemId(id int32) int32 { @@ -869,3 +870,9 @@ const ( const ( PlayerFlagsGuideCustom = 1 << iota // 竞技馆引导页关闭状态 ) + +const ( + LotteryStateOver = 1 // 抽奖结束 + LotteryStateRun = 2 // 抽奖进行中 + LotteryStateNoStart = 3 // 抽奖未开始 +) diff --git a/common/time.go b/common/time.go index be32bd5..4dc02fe 100644 --- a/common/time.go +++ b/common/time.go @@ -182,3 +182,19 @@ func GetMonthTimestamp() []int64 { et := time.Date(year, month, 1, 0, 0, 0, 0, now.Location()).Unix() return []int64{st, et} } + +// HMSToTime 将时分秒转换为今天的time +// h: 时 +// m: 分 +// s: 秒 +func HMSToTime(h, m, s int) time.Time { + now := time.Now().Local() + year, month, day := now.Date() + return time.Date(year, month, day, h, m, s, 0, now.Location()) +} + +// IntToTime 将int转换为time +// n: 时*10000 + 分*100 + 秒 +func IntToTime(n int) time.Time { + return HMSToTime(n/10000, n%10000/100, n%100) +} diff --git a/data/DB_GameFree.json b/data/DB_GameFree.json index 443ed6f..1ecae87 100644 --- a/data/DB_GameFree.json +++ b/data/DB_GameFree.json @@ -6502,7 +6502,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 30800, - "LimitCoin": 10000, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 30800, "BetDec": "1000", @@ -6536,7 +6536,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 30900, - "LimitCoin": 10000, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 30900, "BetDec": "1000", @@ -6570,7 +6570,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 31000, - "LimitCoin": 10000, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 31000, "BetDec": "1000", @@ -6604,7 +6604,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 31100, - "LimitCoin": 10000, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 31100, "BetDec": "1000", @@ -6638,7 +6638,7 @@ "Desc": "0", "ShowType": 2, "ShowId": 31200, - "LimitCoin": 10000, + "LimitCoin": 10000, "BaseScore": 1000, "Turn": 31200, "BetDec": "1000", @@ -6679,7 +6679,7 @@ 0 ], "OtherIntParams": [ - 1 + 1 ], "RobotNumRng": [ 0 @@ -6712,7 +6712,7 @@ 0 ], "OtherIntParams": [ - 1 + 1 ], "RobotNumRng": [ 0 @@ -6745,7 +6745,7 @@ 0 ], "OtherIntParams": [ - 2 + 2 ], "RobotNumRng": [ 0 @@ -6778,7 +6778,7 @@ 0 ], "OtherIntParams": [ - 2 + 2 ], "RobotNumRng": [ 0 diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index b800172..f7c2083 100644 Binary files a/data/DB_PropExchange.dat and b/data/DB_PropExchange.dat differ diff --git a/data/DB_Task.dat b/data/DB_Task.dat index dcc98f2..09a699f 100644 Binary files a/data/DB_Task.dat and b/data/DB_Task.dat differ diff --git a/data/DB_Task.json b/data/DB_Task.json index 8cdf03e..6577f2f 100644 --- a/data/DB_Task.json +++ b/data/DB_Task.json @@ -191,6 +191,30 @@ "30008": 1 } }, + { + "Id": 29, + "Order": 6, + "Name": "周活跃任务", + "ActivityType": 2, + "TaskType": 14, + "TargetTimes": 900, + "FinishTimes": 1, + "Award": { + "30010": 1 + } + }, + { + "Id": 30, + "Order": 7, + "Name": "周活跃任务", + "ActivityType": 2, + "TaskType": 14, + "TargetTimes": 1250, + "FinishTimes": 1, + "Award": { + "73001": 1 + } + }, { "Id": 12, "Order": 1, diff --git a/data/i18n/languages.json b/data/i18n/languages.json index a279475..904f89e 100644 --- a/data/i18n/languages.json +++ b/data/i18n/languages.json @@ -11,5 +11,7 @@ "PermitAwardTitle": "{\"zh\":\"通行证排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}", "PermitAward": "{\"zh\":\"恭喜您在上个赛季通行证排行中名次达到%v名,排行奖励已发放,请查收\",\"vi\":\"Chúc mừng bạn đã đạt được %v trong bảng xếp hạng vượt qua. Phần thưởng xếp hạng đã được phân phối, vui lòng kiểm tra.\",\"en\":\"Congratulations on reaching %vth place in the pass ranking. Ranking rewards have been issued. Please check.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈានដល់ចំណាត់ថ្នាក់ទី %v ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}", "UpgradeTitle": "{\"zh\":\"更新奖励\",\"vi\":\"Phần thưởng cập nhật\",\"en\":\"Update Rewards\",\"kh\":\"រង្វាន់ដំឡើង\"}", - "Upgrade": "{\"zh\":\"感谢您更新客户端,更新奖励已发放至附近,请注意查收\",\"vi\":\"Cảm ơn bạn đã cập nhật ứng dụng khách. Phần thưởng cập nhật đã được phân phối gần đó, vui lòng chú ý kiểm tra nhận\",\"en\":\"Thank you for updating the client. The update reward has been distributed to everyone. Please check it carefully.\",\"kh\":\"អរគុណសម្រាប់ការធ្វើបច្ចុប្បន្នភាពហ្គេម។ រង្វាន់នៃការធ្វើបច្ចុប្បន្នភាពត្រូវបានចែកចាយទៅគ្រប់គ្នា។ សូមពិនិត្យអោយបានច្បាស់លាស់។\"}" + "Upgrade": "{\"zh\":\"感谢您更新客户端,更新奖励已发放至附近,请注意查收\",\"vi\":\"Cảm ơn bạn đã cập nhật ứng dụng khách. Phần thưởng cập nhật đã được phân phối gần đó, vui lòng chú ý kiểm tra nhận\",\"en\":\"Thank you for updating the client. The update reward has been distributed to everyone. Please check it carefully.\",\"kh\":\"អរគុណសម្រាប់ការធ្វើបច្ចុប្បន្នភាពហ្គេម។ រង្វាន់នៃការធ្វើបច្ចុប្បន្នភាពត្រូវបានចែកចាយទៅគ្រប់គ្នា។ សូមពិនិត្យអោយបានច្បាស់លាស់។\"}", + "LotteryTitle": "{\"zh\":\"玩游戏抽奖品\",\"vi\":\"Chơi game rút thưởng\",\"en\":\"Play games, draw prizes\",\"kh\":\"លេងហ្គេម ចាប់រង្វាន់\"}", + "Lottery": "{\"zh\":\"恭喜您在好友房玩游戏抽奖品活动中获得了大奖,奖品随邮件发放,请注意查收\",\"vi\":\"Chúc mừng bạn đã trúng giải thưởng lớn trong hoạt động rút thưởng trò chơi tại phòng bạn bè. Giải thưởng sẽ được gửi qua email, vui lòng kiểm tra cẩn thận.\",\"en\":\"Congratulations on winning the grand prize in the lucky draw activity in the friend room. The prize will be sent via email, please check it carefully.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈ្នះរង្វាន់ធំក្នុងសកម្មភាពចាប់រង្វាន់ក្នុងបន្ទប់មិត្តភ័ក្តិរបស់អ្នក រង្វាន់នឹងត្រូវបានផ្ញើតាមអ៊ីម៉ែល សូមពិនិត្យមើលវាដោយយកចិត្តទុកដាក់។\"}" } \ No newline at end of file diff --git a/db/export.go b/db/export.go new file mode 100644 index 0000000..f8466a0 --- /dev/null +++ b/db/export.go @@ -0,0 +1,36 @@ +package db + +import ( + "errors" + "net" + + "google.golang.org/grpc" + "mongo.games.com/goserver/core/logger" +) + +var GrpcServer *grpc.Server +var GrpcClientConn *grpc.ClientConn + +func RunGrpcServer() { + GrpcServer = grpc.NewServer() + registerGrpcServer() + ln, err := net.Listen("tcp", ":8899") + if err != nil { + panic(errors.New("db grpc failed to listen: " + err.Error())) + } + + err = GrpcServer.Serve(ln) + if err != nil { + panic(errors.New("db grpc failed to serve: " + err.Error())) + } + logger.Logger.Infof("db grpc start success") +} + +func NewGrpcClientConn() { + var err error + GrpcClientConn, err = grpc.NewClient("localhost:8899", grpc.WithInsecure()) + if err != nil { + panic(errors.New("db grpc failed to dial: " + err.Error())) + } + registerGrpcClient() +} diff --git a/db/gen_rpc.bat b/db/gen_rpc.bat new file mode 100644 index 0000000..1a855f4 --- /dev/null +++ b/db/gen_rpc.bat @@ -0,0 +1,16 @@ +set work_path=%cd% +set proto_path=%work_path%\proto +set protoc=%work_path%\..\bin\protoc-3.19.4-win64\bin\protoc.exe +set protoc-gen-go-plugin-path="%work_path%\..\bin\protoc-gen-go.exe" +set protoc-gen-go-grpc-plugin-path="%work_path%\..\bin\protoc-gen-go-grpc.exe" + +rem echo %protoc3% +cd %proto_path% +for /d %%s in (,*) do ( + cd %%s + for %%b in (,*.proto) do ( + %protoc% --proto_path=%GOPATH%\src\mongo.games.com\game\db\proto --proto_path=. --plugin=protoc-gen-go=%protoc-gen-go-plugin-path% --plugin=protoc-gen-go-grpc=%protoc-gen-go-grpc-plugin-path% --go_out=%GOPATH%\src --go-grpc_out=%GOPATH%\src %%b + ) + cd .. +) +cd %work_path% \ No newline at end of file diff --git a/db/model/lottery.go b/db/model/lottery.go new file mode 100644 index 0000000..f9b80ac --- /dev/null +++ b/db/model/lottery.go @@ -0,0 +1,34 @@ +package model + +import ( + "context" + + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/db/proto/lottery" +) + +// 竞技馆抽奖记录 + +type Lottery struct { + Ts int64 // 中奖时间 + SnId int32 // 玩家id + Name string // 玩家昵称 + Number int64 // 中奖号码 + Award map[int32]int64 // 奖品,key为奖品id,value为奖品数量 + Video string // 视频地址 +} + +type LotteryServer struct { + lottery.UnimplementedLotteryServerServer +} + +func (l *Lottery) Save(ctx context.Context, req *lottery.SaveReq) (*lottery.SaveRsp, error) { + logger.Logger.Infof("Lottery Save: %v", req) + return nil, nil +} + +func (l *Lottery) Find(ctx context.Context, req *lottery.FindReq) (*lottery.FindRsp, error) { + logger.Logger.Infof("Lottery Find: %v", req) + return nil, nil +} diff --git a/db/proto/lottery/lottery.pb.go b/db/proto/lottery/lottery.pb.go new file mode 100644 index 0000000..d11907e --- /dev/null +++ b/db/proto/lottery/lottery.pb.go @@ -0,0 +1,448 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: lottery.proto + +package lottery + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + public "mongo.games.com/game/db/proto/public" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Lottery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 中奖时间 + SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id + Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家昵称 + Number int64 `protobuf:"varint,4,opt,name=Number,proto3" json:"Number,omitempty"` // 中奖号码 + Award []*public.Item `protobuf:"bytes,5,rep,name=Award,proto3" json:"Award,omitempty"` // 奖品,key为奖品id,value为奖品数量 +} + +func (x *Lottery) Reset() { + *x = Lottery{} + if protoimpl.UnsafeEnabled { + mi := &file_lottery_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Lottery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Lottery) ProtoMessage() {} + +func (x *Lottery) ProtoReflect() protoreflect.Message { + mi := &file_lottery_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Lottery.ProtoReflect.Descriptor instead. +func (*Lottery) Descriptor() ([]byte, []int) { + return file_lottery_proto_rawDescGZIP(), []int{0} +} + +func (x *Lottery) GetTs() int64 { + if x != nil { + return x.Ts + } + return 0 +} + +func (x *Lottery) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *Lottery) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Lottery) GetNumber() int64 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *Lottery) GetAward() []*public.Item { + if x != nil { + return x.Award + } + return nil +} + +//客户端发送给服务端 +type SaveReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *SaveReq) Reset() { + *x = SaveReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lottery_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveReq) ProtoMessage() {} + +func (x *SaveReq) ProtoReflect() protoreflect.Message { + mi := &file_lottery_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveReq.ProtoReflect.Descriptor instead. +func (*SaveReq) Descriptor() ([]byte, []int) { + return file_lottery_proto_rawDescGZIP(), []int{1} +} + +func (x *SaveReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +//服务端返回给客户端 +type SaveRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *SaveRsp) Reset() { + *x = SaveRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_lottery_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SaveRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SaveRsp) ProtoMessage() {} + +func (x *SaveRsp) ProtoReflect() protoreflect.Message { + mi := &file_lottery_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SaveRsp.ProtoReflect.Descriptor instead. +func (*SaveRsp) Descriptor() ([]byte, []int) { + return file_lottery_proto_rawDescGZIP(), []int{2} +} + +func (x *SaveRsp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +//客户端发送给服务端 +type FindReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *FindReq) Reset() { + *x = FindReq{} + if protoimpl.UnsafeEnabled { + mi := &file_lottery_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FindReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FindReq) ProtoMessage() {} + +func (x *FindReq) ProtoReflect() protoreflect.Message { + mi := &file_lottery_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FindReq.ProtoReflect.Descriptor instead. +func (*FindReq) Descriptor() ([]byte, []int) { + return file_lottery_proto_rawDescGZIP(), []int{3} +} + +func (x *FindReq) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +//服务端返回给客户端 +type FindRsp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` +} + +func (x *FindRsp) Reset() { + *x = FindRsp{} + if protoimpl.UnsafeEnabled { + mi := &file_lottery_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FindRsp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FindRsp) ProtoMessage() {} + +func (x *FindRsp) ProtoReflect() protoreflect.Message { + mi := &file_lottery_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FindRsp.ProtoReflect.Descriptor instead. +func (*FindRsp) Descriptor() ([]byte, []int) { + return file_lottery_proto_rawDescGZIP(), []int{4} +} + +func (x *FindRsp) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +var File_lottery_proto protoreflect.FileDescriptor + +var file_lottery_proto_rawDesc = []byte{ + 0x0a, 0x0d, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x07, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x1a, 0x13, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7d, 0x0a, + 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x1d, 0x0a, 0x07, + 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x07, 0x53, + 0x61, 0x76, 0x65, 0x52, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x1d, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64, + 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64, 0x52, + 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6d, 0x73, 0x67, 0x32, 0x6b, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x53, 0x61, 0x76, 0x65, 0x12, 0x10, 0x2e, + 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x10, 0x2e, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x73, + 0x70, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x6c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, + 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x73, 0x70, 0x22, + 0x00, 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, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_lottery_proto_rawDescOnce sync.Once + file_lottery_proto_rawDescData = file_lottery_proto_rawDesc +) + +func file_lottery_proto_rawDescGZIP() []byte { + file_lottery_proto_rawDescOnce.Do(func() { + file_lottery_proto_rawDescData = protoimpl.X.CompressGZIP(file_lottery_proto_rawDescData) + }) + return file_lottery_proto_rawDescData +} + +var file_lottery_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_lottery_proto_goTypes = []interface{}{ + (*Lottery)(nil), // 0: lottery.Lottery + (*SaveReq)(nil), // 1: lottery.SaveReq + (*SaveRsp)(nil), // 2: lottery.SaveRsp + (*FindReq)(nil), // 3: lottery.FindReq + (*FindRsp)(nil), // 4: lottery.FindRsp + (*public.Item)(nil), // 5: public.Item +} +var file_lottery_proto_depIdxs = []int32{ + 5, // 0: lottery.Lottery.Award:type_name -> public.Item + 1, // 1: lottery.LotteryServer.Save:input_type -> lottery.SaveReq + 3, // 2: lottery.LotteryServer.Find:input_type -> lottery.FindReq + 2, // 3: lottery.LotteryServer.Save:output_type -> lottery.SaveRsp + 4, // 4: lottery.LotteryServer.Find:output_type -> lottery.FindRsp + 3, // [3:5] is the sub-list for method output_type + 1, // [1:3] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_lottery_proto_init() } +func file_lottery_proto_init() { + if File_lottery_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_lottery_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Lottery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lottery_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lottery_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SaveRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lottery_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FindReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_lottery_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FindRsp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_lottery_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_lottery_proto_goTypes, + DependencyIndexes: file_lottery_proto_depIdxs, + MessageInfos: file_lottery_proto_msgTypes, + }.Build() + File_lottery_proto = out.File + file_lottery_proto_rawDesc = nil + file_lottery_proto_goTypes = nil + file_lottery_proto_depIdxs = nil +} diff --git a/db/proto/lottery/lottery.proto b/db/proto/lottery/lottery.proto new file mode 100644 index 0000000..7116b0b --- /dev/null +++ b/db/proto/lottery/lottery.proto @@ -0,0 +1,28 @@ +syntax = "proto3"; +package lottery; +option go_package = "mongo.games.com/game/db/proto/lottery"; + +service LotteryServer { + rpc Save (SaveReq) returns (SaveRsp){} + rpc Find (FindReq) returns (FindRsp){} +} + +//客户端发送给服务端 +message SaveReq { + string name = 1 ; +} + +//服务端返回给客户端 +message SaveRsp { + string msg = 1 ; +} + +//客户端发送给服务端 +message FindReq { + string name = 1 ; +} + +//服务端返回给客户端 +message FindRsp { + string msg = 1 ; +} \ No newline at end of file diff --git a/db/proto/lottery/lottery_grpc.pb.go b/db/proto/lottery/lottery_grpc.pb.go new file mode 100644 index 0000000..067af9c --- /dev/null +++ b/db/proto/lottery/lottery_grpc.pb.go @@ -0,0 +1,146 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.19.4 +// source: lottery.proto + +package lottery + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + LotteryServer_Save_FullMethodName = "/lottery.LotteryServer/Save" + LotteryServer_Find_FullMethodName = "/lottery.LotteryServer/Find" +) + +// LotteryServerClient is the client API for LotteryServer service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type LotteryServerClient interface { + Save(ctx context.Context, in *SaveReq, opts ...grpc.CallOption) (*SaveRsp, error) + Find(ctx context.Context, in *FindReq, opts ...grpc.CallOption) (*FindRsp, error) +} + +type lotteryServerClient struct { + cc grpc.ClientConnInterface +} + +func NewLotteryServerClient(cc grpc.ClientConnInterface) LotteryServerClient { + return &lotteryServerClient{cc} +} + +func (c *lotteryServerClient) Save(ctx context.Context, in *SaveReq, opts ...grpc.CallOption) (*SaveRsp, error) { + out := new(SaveRsp) + err := c.cc.Invoke(ctx, LotteryServer_Save_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *lotteryServerClient) Find(ctx context.Context, in *FindReq, opts ...grpc.CallOption) (*FindRsp, error) { + out := new(FindRsp) + err := c.cc.Invoke(ctx, LotteryServer_Find_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// LotteryServerServer is the server API for LotteryServer service. +// All implementations must embed UnimplementedLotteryServerServer +// for forward compatibility +type LotteryServerServer interface { + Save(context.Context, *SaveReq) (*SaveRsp, error) + Find(context.Context, *FindReq) (*FindRsp, error) + mustEmbedUnimplementedLotteryServerServer() +} + +// UnimplementedLotteryServerServer must be embedded to have forward compatible implementations. +type UnimplementedLotteryServerServer struct { +} + +func (UnimplementedLotteryServerServer) Save(context.Context, *SaveReq) (*SaveRsp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Save not implemented") +} +func (UnimplementedLotteryServerServer) Find(context.Context, *FindReq) (*FindRsp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Find not implemented") +} +func (UnimplementedLotteryServerServer) mustEmbedUnimplementedLotteryServerServer() {} + +// UnsafeLotteryServerServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to LotteryServerServer will +// result in compilation errors. +type UnsafeLotteryServerServer interface { + mustEmbedUnimplementedLotteryServerServer() +} + +func RegisterLotteryServerServer(s grpc.ServiceRegistrar, srv LotteryServerServer) { + s.RegisterService(&LotteryServer_ServiceDesc, srv) +} + +func _LotteryServer_Save_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SaveReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LotteryServerServer).Save(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: LotteryServer_Save_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LotteryServerServer).Save(ctx, req.(*SaveReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _LotteryServer_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(FindReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LotteryServerServer).Find(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: LotteryServer_Find_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LotteryServerServer).Find(ctx, req.(*FindReq)) + } + return interceptor(ctx, in, info, handler) +} + +// LotteryServer_ServiceDesc is the grpc.ServiceDesc for LotteryServer service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var LotteryServer_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "lottery.LotteryServer", + HandlerType: (*LotteryServerServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Save", + Handler: _LotteryServer_Save_Handler, + }, + { + MethodName: "Find", + Handler: _LotteryServer_Find_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "lottery.proto", +} diff --git a/db/proto/public/public.pb.go b/db/proto/public/public.pb.go new file mode 100644 index 0000000..cd960c1 --- /dev/null +++ b/db/proto/public/public.pb.go @@ -0,0 +1,151 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1-devel +// protoc v3.19.4 +// source: public.proto + +package public + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // id + Num int64 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` // 数量 +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_public_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_public_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_public_proto_rawDescGZIP(), []int{0} +} + +func (x *Item) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Item) GetNum() int64 { + if x != nil { + return x.Num + } + return 0 +} + +var File_public_proto protoreflect.FileDescriptor + +var file_public_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, + 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_public_proto_rawDescOnce sync.Once + file_public_proto_rawDescData = file_public_proto_rawDesc +) + +func file_public_proto_rawDescGZIP() []byte { + file_public_proto_rawDescOnce.Do(func() { + file_public_proto_rawDescData = protoimpl.X.CompressGZIP(file_public_proto_rawDescData) + }) + return file_public_proto_rawDescData +} + +var file_public_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_public_proto_goTypes = []interface{}{ + (*Item)(nil), // 0: public.Item +} +var file_public_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_public_proto_init() } +func file_public_proto_init() { + if File_public_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_public_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_public_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_public_proto_goTypes, + DependencyIndexes: file_public_proto_depIdxs, + MessageInfos: file_public_proto_msgTypes, + }.Build() + File_public_proto = out.File + file_public_proto_rawDesc = nil + file_public_proto_goTypes = nil + file_public_proto_depIdxs = nil +} diff --git a/db/proto/public/public.proto b/db/proto/public/public.proto new file mode 100644 index 0000000..f92b031 --- /dev/null +++ b/db/proto/public/public.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; +package public; +option go_package = "mongo.games.com/game/db/proto/public"; + +// 通用数据结构 + +message Item { + int32 Id = 1; // id + int64 Num = 2; // 数量 +} \ No newline at end of file diff --git a/db/proto/public/通用数据结构 b/db/proto/public/通用数据结构 new file mode 100644 index 0000000..e69de29 diff --git a/db/register.go b/db/register.go new file mode 100644 index 0000000..d968ae5 --- /dev/null +++ b/db/register.go @@ -0,0 +1,21 @@ +package db + +import ( + "mongo.games.com/game/db/model" + "mongo.games.com/game/db/proto/lottery" +) + +/* + grpc 服务端注册 +*/ + +// registerGrpcServer 注册grpc服务 +func registerGrpcServer() { + lottery.RegisterLotteryServerServer(GrpcServer, new(model.LotteryServer)) +} + +var LotteryClient lottery.LotteryServerClient + +func registerGrpcClient() { + LotteryClient = lottery.NewLotteryServerClient(GrpcClientConn) +} diff --git a/dbproxy/main.go b/dbproxy/main.go index 8db7452..66a8db6 100644 --- a/dbproxy/main.go +++ b/dbproxy/main.go @@ -12,6 +12,7 @@ import ( _ "mongo.games.com/game" "mongo.games.com/game/common" + "mongo.games.com/game/db" _ "mongo.games.com/game/dbproxy/mq" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" @@ -39,6 +40,10 @@ func main() { log.Fatalln("rpc start fatal error: ", err) } go http.Serve(lis, nil) + + // grpc 服务 + go db.RunGrpcServer() + return nil }) core.RegisteHook(core.HOOK_AFTER_STOP, func() error { diff --git a/dbproxy/mq/c_lotterycode.go b/dbproxy/mq/c_lotterycode.go new file mode 100644 index 0000000..b703f53 --- /dev/null +++ b/dbproxy/mq/c_lotterycode.go @@ -0,0 +1,49 @@ +package mq + +import ( + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/dbproxy/svc" + "mongo.games.com/game/model" + "mongo.games.com/game/mq" +) + +func init() { + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBLotteryCode, + Data: &model.LotteryCode{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.LotteryCode) + if !ok { + return + } + c := svc.LotteryCodeCollection(log.Platform) + if c == nil { + return svc.LotteryCodeDBErr + } + if err = c.Insert(log); err != nil { + logger.Logger.Errorf("InsertLotteryCode error: %v", err) + return + } + return + }, + }) + + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.DBLotteryLog, + Data: &model.LotteryLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.LotteryLog) + if !ok { + return + } + + if err = svc.InsertLotteryLogs(log.Platform, log); err != nil { + logger.Logger.Errorf("InsertLotteryLogs error: %v", err) + } + + mq.Write(&model.LotteryLog{Platform: log.Platform}, mq.RankLotteryLog) + return + }, + }) +} diff --git a/dbproxy/svc/l_lotterycode.go b/dbproxy/svc/l_lotterycode.go new file mode 100644 index 0000000..c542a21 --- /dev/null +++ b/dbproxy/svc/l_lotterycode.go @@ -0,0 +1,120 @@ +package svc + +import ( + "errors" + "fmt" + "mongo.games.com/goserver/core/logger" + "net/rpc" + + "github.com/globalsign/mgo" + "github.com/globalsign/mgo/bson" + + "mongo.games.com/game/dbproxy/mongo" + "mongo.games.com/game/model" +) + +var ( + LotteryCodeDBErr = errors.New("log_lotterycode db open failed.") +) + +func LotteryCodeCollection(plt string) *mongo.Collection { + s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.LotteryCodeDBName) + if s != nil { + c, first := s.DB().C(model.LotteryCodeCollName) + if first { + c.EnsureIndex(mgo.Index{Key: []string{"snid", "index"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"startts"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-startts"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"code"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"index"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-index"}, Background: true, Sparse: true}) + } + return c + } + return nil +} + +// UpsertLotteryCode 记录玩家抽奖活动开奖码 +func UpsertLotteryCode(plt string, item *model.LotteryCode) (err error) { + c := LotteryCodeCollection(plt) + if c == nil { + return LotteryCodeDBErr + } + _, err = c.Upsert(bson.M{"snid": item.SnId, "cid": item.CId, "startts": item.StartTs}, item) + return +} + +// GetLotteryCode 获取玩家抽奖活动开奖码 +func GetLotteryCode(plt string, cid int64, startTs int64, code string) (*model.LotteryCode, error) { + c := LotteryCodeCollection(plt) + if c == nil { + return nil, LotteryCodeDBErr + } + var ret model.LotteryCode + err := c.Find(bson.M{"code": code, "cid": cid, "startts": startTs}).One(&ret) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + return nil, err + } + return &ret, nil +} + +type LotteryCodeSvc struct{} + +func (svc *LotteryCodeSvc) Upsert(req *model.UpsertLotteryCodeReq, ret *bool) (err error) { + err = UpsertLotteryCode(req.Platform, req.Item) + *ret = err == nil + return +} + +func (svc *LotteryCodeSvc) Get(req *model.GetLotteryCodeReq, resp *model.GetLotteryCodeResp) (err error) { + resp.Item, err = GetLotteryCode(req.Platform, req.CId, req.StartTs, req.Code) + return +} + +func (svc *LotteryCodeSvc) GetJoinNum(req *model.GetLotteryCodeReq, resp *int) (err error) { + c := LotteryCodeCollection(req.Platform) + if c == nil { + return LotteryCodeDBErr + } + type m struct { + Count int64 `bson:"count"` + } + tc := new(m) + err = c.Pipe([]bson.M{ + {"$match": bson.M{"snid": bson.M{"$gt": 0}, "cid": req.CId, "startts": req.StartTs}}, + {"$group": bson.M{"_id": bson.M{"snid": "$snid"}, "count": bson.M{"$sum": "$count"}}}, + }).AllowDiskUse().One(tc) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + logger.Logger.Warn("GetJoinNum error:", err) + return + } + *resp = int(tc.Count) + return nil +} + +func (svc *LotteryCodeSvc) GetRandom(req *model.GetLotteryCodeRandomReq, ret *model.GetLotteryCodeResp) error { + c := LotteryCodeCollection(req.Platform) + if c == nil { + return LotteryCodeDBErr + } + where := bson.M{"cid": req.CId, "startts": req.StartTs} + switch req.Tp { + case 1: + where["snid"] = 0 + where["index"] = req.Index + case 2: + where["code"] = fmt.Sprintf("%v", req.Index) + case 3: + where["snid"] = bson.M{"$gt": 0} + where["index"] = req.Index + } + if err := c.Find(where).One(&ret.Item); err != nil && !errors.Is(err, mgo.ErrNotFound) { + return err + } + return nil +} + +func init() { + rpc.Register(new(LotteryCodeSvc)) +} diff --git a/dbproxy/svc/l_lotterydata.go b/dbproxy/svc/l_lotterydata.go new file mode 100644 index 0000000..a1c69ba --- /dev/null +++ b/dbproxy/svc/l_lotterydata.go @@ -0,0 +1,74 @@ +package svc + +import ( + "errors" + "net/rpc" + + "github.com/globalsign/mgo" + "github.com/globalsign/mgo/bson" + + "mongo.games.com/game/dbproxy/mongo" + "mongo.games.com/game/model" +) + +var ( + LotteryDataDBErr = errors.New("log_lotterydata db open failed.") +) + +func LotteryDataCollection(plt string) *mongo.Collection { + s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.LotteryDataDBName) + if s != nil { + c, first := s.DB().C(model.LotteryDataCollName) + if first { + c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"startts"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-startts"}, Background: true, Sparse: true}) + } + return c + } + return nil +} + +func GetLotteryData(plt string) ([]*model.LotteryData, error) { + clog := LotteryDataCollection(plt) + if clog == nil { + return nil, LotteryDataDBErr + } + var logs []*model.LotteryData + err := clog.Find(nil).All(&logs) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + return nil, err + } + return logs, nil +} + +func UpsertLotteryData(plt string, arr []*model.LotteryData) error { + clog := LotteryDataCollection(plt) + if clog == nil { + return LotteryDataDBErr + } + for _, log := range arr { + _, err := clog.Upsert(bson.M{"cid": log.CId, "startts": log.StartTs}, log) + if err != nil { + return err + } + } + return nil +} + +type LotteryDataSvc struct{} + +func (s *LotteryDataSvc) Get(req *model.GetLotteryDataReq, reply *model.GetLotteryDataResp) (err error) { + reply.Data, err = GetLotteryData(req.Platform) + return +} + +func (s *LotteryDataSvc) Upsert(req *model.UpsertLotteryDataReq, reply *bool) (err error) { + err = UpsertLotteryData(req.Platform, req.Data) + *reply = err == nil + return +} + +func init() { + rpc.Register(new(LotteryDataSvc)) +} diff --git a/dbproxy/svc/l_lotterylog.go b/dbproxy/svc/l_lotterylog.go index d9e8e6f..bc6e298 100644 --- a/dbproxy/svc/l_lotterylog.go +++ b/dbproxy/svc/l_lotterylog.go @@ -7,43 +7,41 @@ import ( "github.com/globalsign/mgo" "github.com/globalsign/mgo/bson" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/game/dbproxy/mongo" "mongo.games.com/game/model" - "mongo.games.com/goserver/core/logger" ) var ( LotteryLogDBErr = errors.New("log_lottery db open failed.") ) -const LotteryLogMaxLimitPerQuery = 100 - func LotteryLogsCollection(plt string) *mongo.Collection { s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.LotteryLogDBName) if s != nil { c, first := s.DB().C(model.LotteryLogCollName) if first { - c.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true}) - c.EnsureIndex(mgo.Index{Key: []string{"gameid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"ctime"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-ctime"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"num"}, Background: true, Sparse: true}) c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true}) - c.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"name"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"playernum"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"code"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"isrobot"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"ismust"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true}) } return c } return nil } -func InsertLotteryLog(log *model.LotteryLog) error { - err := LotteryLogsCollection(log.Platform).Insert(log) - if err != nil { - logger.Logger.Info("InsertLotteryLog error:", err) - return err - } - return nil -} - -func InsertLotteryLogs(logs ...*model.LotteryLog) (err error) { - clog := LotteryLogsCollection(logs[0].Platform) +func InsertLotteryLogs(plt string, logs ...*model.LotteryLog) (err error) { + clog := LotteryLogsCollection(plt) if clog == nil { return } @@ -66,42 +64,36 @@ func InsertLotteryLogs(logs ...*model.LotteryLog) (err error) { return } -func RemoveLotteryLog(plt string, ts time.Time) (*mgo.ChangeInfo, error) { - return LotteryLogsCollection(plt).RemoveAll(bson.M{"time": bson.M{"$lt": ts}}) -} - -func GetLotteryLogBySnidAndLessTs(plt string, id int32, ts time.Time) (ret []model.LotteryLog, err error) { - err = LotteryLogsCollection(plt).Find(bson.M{"snid": id, "time": bson.M{"$lt": ts}}).Limit(LotteryLogMaxLimitPerQuery).All(&ret) - return -} - -type LotteryLogSvc struct { -} - -func (svc *LotteryLogSvc) InsertLotteryLogs(args []*model.LotteryLog, ret *bool) (err error) { - err = InsertLotteryLogs(args...) - if err == nil { - *ret = true +func GetLotteryLogs(plt string, count int) (ret []*model.LotteryLog, err error) { + clog := LotteryLogsCollection(plt) + if clog == nil { + return nil, LotteryLogDBErr + } + err = clog.Find(bson.M{"ts": bson.M{"$lt": time.Now().Unix()}}).Sort("-ts").Limit(count).All(&ret) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + return nil, err } return } -func (svc *LotteryLogSvc) InsertLotteryLog(args *model.LotteryLog, ret *bool) (err error) { - err = InsertLotteryLog(args) - if err == nil { - *ret = true +type LotteryLogSvc struct{} + +func (svc *LotteryLogSvc) GetLotteryLogs(req *model.GetLotteryLogReq, ret *model.GetLotteryLogResp) (err error) { + ret.LotteryLog, err = GetLotteryLogs(req.Platform, req.Num) + return +} + +func (svc *LotteryLogSvc) UpdateMedia(req *model.UpdateLotteryMediaReq, ret *bool) error { + clog := LotteryLogsCollection(req.Platform) + if clog == nil { + return LotteryLogDBErr } - return -} - -func (svc *LotteryLogSvc) RemoveLotteryLog(args *model.RemoveLotteryLogArgs, ret **mgo.ChangeInfo) (err error) { - *ret, err = RemoveLotteryLog(args.Plt, args.Ts) - return -} - -func (svc *LotteryLogSvc) GetLotteryLogBySnidAndLessTs(args *model.GetLotteryLogBySnidAndLessTsArgs, ret *[]model.LotteryLog) (err error) { - *ret, err = GetLotteryLogBySnidAndLessTs(args.Plt, args.Id, args.Ts) - return + err := clog.Update(bson.M{"_id": bson.ObjectIdHex(req.LogId)}, bson.M{"$set": bson.M{"media": req.Media}}) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + return err + } + *ret = true + return nil } func init() { diff --git a/dbproxy/svc/u_lottery.go b/dbproxy/svc/u_lottery.go index e74b905..3e62a1b 100644 --- a/dbproxy/svc/u_lottery.go +++ b/dbproxy/svc/u_lottery.go @@ -2,44 +2,63 @@ package svc import ( "errors" + "net/rpc" + "github.com/globalsign/mgo" + "github.com/globalsign/mgo/bson" + "mongo.games.com/game/dbproxy/mongo" "mongo.games.com/game/model" - "mongo.games.com/goserver/core/logger" - "net/rpc" ) var ( LotteryDBErr = errors.New("user_coinlog db open failed.") ) -func LotteryCollection() *mongo.Collection { +func LotteryCollection(plt string) *mongo.Collection { s := mongo.MgoSessionMgrSington.GetPltMgoSession(mongo.G_P, model.LotteryDBName) if s != nil { c, first := s.DB().C(model.LotteryCollName) if first { - c.EnsureIndex(mgo.Index{Key: []string{"platform"}, Background: true, Sparse: true}) - c.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true}) + c.EnsureIndex(mgo.Index{Key: []string{"-time"}, Background: true, Sparse: true}) } return c } return nil } -func GetAllLottery() (ret []model.Lottery, err error) { - err = LotteryCollection().Find(nil).All(&ret) +func GetLottery(plt string, snid int32, cid int64, startts int64) (ret []*model.Lottery, err error) { + c := LotteryCollection(plt) + if c == nil { + return nil, LotteryDBErr + } + where := bson.M{"snid": snid} + if cid > 0 { + where["cid"] = cid + } + if startts > 0 { + where["startts"] = bson.M{"$gte": startts} + } + err = c.Find(where).All(&ret) + if err != nil && !errors.Is(err, mgo.ErrNotFound) { + return nil, err + } return } -func UpsertLottery(item *model.Lottery) (err error) { - c := LotteryCollection() +func UpsertLottery(plt string, item []*model.Lottery) (err error) { + c := LotteryCollection(plt) if c == nil { - return + return LotteryDBErr } - _, err = c.UpsertId(item.Id, item) - if err != nil { - logger.Logger.Warn("UpsertLottery error:", err) - return + for _, v := range item { + _, err = c.Upsert(bson.M{"snid": v.SnId, "cid": v.CId}, v) + if err != nil { + return + } } return } @@ -47,13 +66,13 @@ func UpsertLottery(item *model.Lottery) (err error) { type LotterySvc struct { } -func (svc *LotterySvc) GetAllLottery(args struct{}, ret *[]model.Lottery) (err error) { - *ret, err = GetAllLottery() +func (svc *LotterySvc) Get(req *model.GetLotteryReq, ret *model.GetLotteryResp) (err error) { + ret.Lottery, err = GetLottery(req.Platform, req.SnId, req.CId, req.StartTs) return } -func (svc *LotterySvc) UpsertLottery(args *model.Lottery, ret *bool) (err error) { - err = UpsertLottery(args) +func (svc *LotterySvc) Upsert(req *model.UpsertLotteryReq, ret *bool) (err error) { + err = UpsertLottery(req.Platform, req.Lottery) if err == nil { *ret = true } diff --git a/etcd/keyconf.go b/etcd/keyconf.go index e2c25a3..a26e51a 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -47,4 +47,6 @@ const ( ETCDKEY_RoomConfigSystem = "/game/room_system" // 系统房间配置 ETCDKEY_ClientUpgrade = "/game/client_upgrade" // 客户端升级奖励配置 ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置 + ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置 + ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置 ) diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/CashMania.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/CashMania.lua index fc59d1d..6d8544f 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/CashMania.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/CashMania.lua @@ -2,381 +2,381 @@ local _ = {} _.CashManiaBetBetChangeList = { - [0] = { - index = 0, - bet_change_list = 0.3, - bet_size_index = 0, - bet_level_index = 0, - }, - [1] = { - index = 1, - bet_change_list = 0.6, - bet_size_index = 0, - bet_level_index = 1, - }, - [2] = { - index = 2, - bet_change_list = 0.9, - bet_size_index = 0, - bet_level_index = 2, - }, - [3] = { - index = 3, - bet_change_list = 1, - bet_size_index = 1, - bet_level_index = 0, - }, - [4] = { - index = 4, - bet_change_list = 1.5, - bet_size_index = 0, - bet_level_index = 4, - }, - [5] = { - index = 5, - bet_change_list = 3, - bet_size_index = 0, - bet_level_index = 9, - }, - [6] = { - index = 6, - bet_change_list = 5, - bet_size_index = 1, - bet_level_index = 4, - }, - [7] = { - index = 7, - bet_change_list = 9, - bet_size_index = 3, - bet_level_index = 0, - }, - [8] = { - index = 8, - bet_change_list = 10, - bet_size_index = 1, - bet_level_index = 9, - }, - [9] = { - index = 9, - bet_change_list = 15, - bet_size_index = 2, - bet_level_index = 4, - }, - [10] = { - index = 10, - bet_change_list = 30, - bet_size_index = 2, - bet_level_index = 9, - }, - [11] = { - index = 11, - bet_change_list = 45, - bet_size_index = 3, - bet_level_index = 4, - }, - [12] = { - index = 12, - bet_change_list = 90, - bet_size_index = 3, - bet_level_index = 9, - }, + [0] = { + index = 0, + bet_change_list = 0.3, + bet_size_index = 0, + bet_level_index = 0, + }, + [1] = { + index = 1, + bet_change_list = 0.6, + bet_size_index = 0, + bet_level_index = 1, + }, + [2] = { + index = 2, + bet_change_list = 0.9, + bet_size_index = 0, + bet_level_index = 2, + }, + [3] = { + index = 3, + bet_change_list = 1, + bet_size_index = 1, + bet_level_index = 0, + }, + [4] = { + index = 4, + bet_change_list = 1.5, + bet_size_index = 0, + bet_level_index = 4, + }, + [5] = { + index = 5, + bet_change_list = 3, + bet_size_index = 0, + bet_level_index = 9, + }, + [6] = { + index = 6, + bet_change_list = 5, + bet_size_index = 1, + bet_level_index = 4, + }, + [7] = { + index = 7, + bet_change_list = 9, + bet_size_index = 3, + bet_level_index = 0, + }, + [8] = { + index = 8, + bet_change_list = 10, + bet_size_index = 1, + bet_level_index = 9, + }, + [9] = { + index = 9, + bet_change_list = 15, + bet_size_index = 2, + bet_level_index = 4, + }, + [10] = { + index = 10, + bet_change_list = 30, + bet_size_index = 2, + bet_level_index = 9, + }, + [11] = { + index = 11, + bet_change_list = 45, + bet_size_index = 3, + bet_level_index = 4, + }, + [12] = { + index = 12, + bet_change_list = 90, + bet_size_index = 3, + bet_level_index = 9, + }, } _.CashManiaBetBetLevel = { - [0] = { - index = 0, - bet_level = 1, - }, - [1] = { - index = 1, - bet_level = 2, - }, - [2] = { - index = 2, - bet_level = 3, - }, - [3] = { - index = 3, - bet_level = 4, - }, - [4] = { - index = 4, - bet_level = 5, - }, - [5] = { - index = 5, - bet_level = 6, - }, - [6] = { - index = 6, - bet_level = 7, - }, - [7] = { - index = 7, - bet_level = 8, - }, - [8] = { - index = 8, - bet_level = 9, - }, - [9] = { - index = 9, - bet_level = 10, - }, + [0] = { + index = 0, + bet_level = 1, + }, + [1] = { + index = 1, + bet_level = 2, + }, + [2] = { + index = 2, + bet_level = 3, + }, + [3] = { + index = 3, + bet_level = 4, + }, + [4] = { + index = 4, + bet_level = 5, + }, + [5] = { + index = 5, + bet_level = 6, + }, + [6] = { + index = 6, + bet_level = 7, + }, + [7] = { + index = 7, + bet_level = 8, + }, + [8] = { + index = 8, + bet_level = 9, + }, + [9] = { + index = 9, + bet_level = 10, + }, } _.CashManiaBetBetLine = { - [0] = { - index = 0, - bet_line = 10, - }, + [0] = { + index = 0, + bet_line = 10, + }, } _.CashManiaBetBetSize = { - [0] = { - index = 0, - bet_size = 300, - }, - [1] = { - index = 1, - bet_size = 1000, - }, - [2] = { - index = 2, - bet_size = 3000, - }, - [3] = { - index = 3, - bet_size = 9000, - }, + [0] = { + index = 0, + bet_size = 300, + }, + [1] = { + index = 1, + bet_size = 1000, + }, + [2] = { + index = 2, + bet_size = 3000, + }, + [3] = { + index = 3, + bet_size = 9000, + }, } _.CashManiaFormation = { - { - spin_type = 1, - node_type = "BaseSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line1Form5X5TypeA", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 2, - node_type = "FreeSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line1Form5X5TypeA", - symbol = "Default", - first_init_method = 3, - other_init_method = 3, - first_init_symbols = {}, - other_init_symbols = {}, - }, + { + spin_type = 1, + node_type = "BaseSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line1Form5X5TypeA", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 2, + node_type = "FreeSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line1Form5X5TypeA", + symbol = "Default", + first_init_method = 3, + other_init_method = 3, + first_init_symbols = {}, + other_init_symbols = {}, + }, } _.CashManiaReelBaseSpinRange = { - {5, 5, 5}, + { 5, 5, 5 }, } _.CashManiaReelBaseSpinReel = { - {1, 200, 2, 200, 3, 200, 4, 200, 5, 200}, - {6, 200, 7, 200, 8, 200, 9, 200, 10, 200, 11, 200, 12, 200, 13, 200, 14, 200, 15, 200, 16, 200, 17, 200, 18, 200, 19, 200}, - {1, 200, 2, 200, 3, 200, 4, 200, 5, 200}, + { 1, 200, 2, 200, 3, 200, 4, 200, 5, 200 }, + { 6, 200, 7, 200, 8, 200, 9, 200, 10, 200, 11, 200, 12, 200, 13, 200, 14, 200, 15, 200, 16, 200, 17, 200, 18, 200, 19, 200 }, + { 1, 200, 2, 200, 3, 200, 4, 200, 5, 200 }, } _.CashManiaSymbol = { - [1] = { - id = 1, - name = "100倍", - is_wild = false, - group = {1}, - pay_rate = {0, 0, 100}, - client_order = 1, - client_dsc = "", - }, - [2] = { - id = 2, - name = "5倍", - is_wild = false, - group = {2}, - pay_rate = {0, 0, 50}, - client_order = 2, - client_dsc = "", - }, - [3] = { - id = 3, - name = "1倍", - is_wild = false, - group = {3}, - pay_rate = {0, 0, 10}, - client_order = 3, - client_dsc = "", - }, - [4] = { - id = 4, - name = "0.5倍", - is_wild = false, - group = {4}, - pay_rate = {0, 0, 5}, - client_order = 4, - client_dsc = "", - }, - [5] = { - id = 5, - name = "0.1倍", - is_wild = false, - group = {5}, - pay_rate = {0, 0, 1}, - client_order = 5, - client_dsc = "", - }, - [6] = { - id = 6, - name = "5FreeSpin", - is_wild = true, - group = {6}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [7] = { - id = 7, - name = "10FreeSpin", - is_wild = true, - group = {7}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [8] = { - id = 8, - name = "20FreeSpin", - is_wild = true, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [9] = { - id = 9, - name = "wildx1", - is_wild = true, - group = {9}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [10] = { - id = 10, - name = "wildx2", - is_wild = true, - group = {10}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [11] = { - id = 11, - name = "wildx3", - is_wild = true, - group = {11}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [12] = { - id = 12, - name = "wildx5", - is_wild = true, - group = {12}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [13] = { - id = 13, - name = "wildx10", - is_wild = true, - group = {13}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [14] = { - id = 14, - name = "wildx15", - is_wild = true, - group = {14}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [15] = { - id = 15, - name = "wildx20", - is_wild = true, - group = {15}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [16] = { - id = 16, - name = "wildx30", - is_wild = true, - group = {16}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [17] = { - id = 17, - name = "wildx40", - is_wild = true, - group = {17}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [18] = { - id = 18, - name = "wildx50", - is_wild = true, - group = {18}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [19] = { - id = 19, - name = "wildx100", - is_wild = true, - group = {19}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [200] = { - id = 200, - name = "empty", - is_wild = false, - group = {200}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, + [1] = { + id = 1, + name = "100倍", + is_wild = false, + group = { 1 }, + pay_rate = { 0, 0, 100 }, + client_order = 1, + client_dsc = "", + }, + [2] = { + id = 2, + name = "5倍", + is_wild = false, + group = { 2 }, + pay_rate = { 0, 0, 50 }, + client_order = 2, + client_dsc = "", + }, + [3] = { + id = 3, + name = "1倍", + is_wild = false, + group = { 3 }, + pay_rate = { 0, 0, 10 }, + client_order = 3, + client_dsc = "", + }, + [4] = { + id = 4, + name = "0.5倍", + is_wild = false, + group = { 4 }, + pay_rate = { 0, 0, 5 }, + client_order = 4, + client_dsc = "", + }, + [5] = { + id = 5, + name = "0.1倍", + is_wild = false, + group = { 5 }, + pay_rate = { 0, 0, 1 }, + client_order = 5, + client_dsc = "", + }, + [6] = { + id = 6, + name = "5FreeSpin", + is_wild = true, + group = { 6 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [7] = { + id = 7, + name = "10FreeSpin", + is_wild = true, + group = { 7 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [8] = { + id = 8, + name = "20FreeSpin", + is_wild = true, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [9] = { + id = 9, + name = "wildx1", + is_wild = true, + group = { 9 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [10] = { + id = 10, + name = "wildx2", + is_wild = true, + group = { 10 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [11] = { + id = 11, + name = "wildx3", + is_wild = true, + group = { 11 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [12] = { + id = 12, + name = "wildx5", + is_wild = true, + group = { 12 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [13] = { + id = 13, + name = "wildx10", + is_wild = true, + group = { 13 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [14] = { + id = 14, + name = "wildx15", + is_wild = true, + group = { 14 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [15] = { + id = 15, + name = "wildx20", + is_wild = true, + group = { 15 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [16] = { + id = 16, + name = "wildx30", + is_wild = true, + group = { 16 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [17] = { + id = 17, + name = "wildx40", + is_wild = true, + group = { 17 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [18] = { + id = 18, + name = "wildx50", + is_wild = true, + group = { 18 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [19] = { + id = 19, + name = "wildx100", + is_wild = true, + group = { 19 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [200] = { + id = 200, + name = "empty", + is_wild = false, + group = { 200 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, } _.CashManiaSymbolBetRatio = { - { - bet_ratio = 0.1, - }, + { + bet_ratio = 0.1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneDragon.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneDragon.lua index c4cbd5d..0e873f7 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneDragon.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneDragon.lua @@ -2,333 +2,333 @@ local _ = {} _.FortuneDragonBetBetChangeList = { - [0] = { - index = 0, - bet_change_list = 0.15, - bet_size_index = 0, - bet_level_index = 0, - }, - [1] = { - index = 1, - bet_change_list = 0.3, - bet_size_index = 0, - bet_level_index = 1, - }, - [2] = { - index = 2, - bet_change_list = 0.45, - bet_size_index = 0, - bet_level_index = 2, - }, - [3] = { - index = 3, - bet_change_list = 0.5, - bet_size_index = 1, - bet_level_index = 0, - }, - [4] = { - index = 4, - bet_change_list = 0.75, - bet_size_index = 0, - bet_level_index = 4, - }, - [5] = { - index = 5, - bet_change_list = 1.5, - bet_size_index = 0, - bet_level_index = 9, - }, - [6] = { - index = 6, - bet_change_list = 2.5, - bet_size_index = 1, - bet_level_index = 4, - }, - [7] = { - index = 7, - bet_change_list = 4.5, - bet_size_index = 3, - bet_level_index = 0, - }, - [8] = { - index = 8, - bet_change_list = 5, - bet_size_index = 1, - bet_level_index = 9, - }, - [9] = { - index = 9, - bet_change_list = 7.5, - bet_size_index = 2, - bet_level_index = 4, - }, - [10] = { - index = 10, - bet_change_list = 15, - bet_size_index = 2, - bet_level_index = 9, - }, - [11] = { - index = 11, - bet_change_list = 22.5, - bet_size_index = 3, - bet_level_index = 4, - }, - [12] = { - index = 12, - bet_change_list = 45, - bet_size_index = 3, - bet_level_index = 9, - }, + [0] = { + index = 0, + bet_change_list = 0.15, + bet_size_index = 0, + bet_level_index = 0, + }, + [1] = { + index = 1, + bet_change_list = 0.3, + bet_size_index = 0, + bet_level_index = 1, + }, + [2] = { + index = 2, + bet_change_list = 0.45, + bet_size_index = 0, + bet_level_index = 2, + }, + [3] = { + index = 3, + bet_change_list = 0.5, + bet_size_index = 1, + bet_level_index = 0, + }, + [4] = { + index = 4, + bet_change_list = 0.75, + bet_size_index = 0, + bet_level_index = 4, + }, + [5] = { + index = 5, + bet_change_list = 1.5, + bet_size_index = 0, + bet_level_index = 9, + }, + [6] = { + index = 6, + bet_change_list = 2.5, + bet_size_index = 1, + bet_level_index = 4, + }, + [7] = { + index = 7, + bet_change_list = 4.5, + bet_size_index = 3, + bet_level_index = 0, + }, + [8] = { + index = 8, + bet_change_list = 5, + bet_size_index = 1, + bet_level_index = 9, + }, + [9] = { + index = 9, + bet_change_list = 7.5, + bet_size_index = 2, + bet_level_index = 4, + }, + [10] = { + index = 10, + bet_change_list = 15, + bet_size_index = 2, + bet_level_index = 9, + }, + [11] = { + index = 11, + bet_change_list = 22.5, + bet_size_index = 3, + bet_level_index = 4, + }, + [12] = { + index = 12, + bet_change_list = 45, + bet_size_index = 3, + bet_level_index = 9, + }, } _.FortuneDragonBetBetLevel = { - [0] = { - index = 0, - bet_level = 1, - }, - [1] = { - index = 1, - bet_level = 2, - }, - [2] = { - index = 2, - bet_level = 3, - }, - [3] = { - index = 3, - bet_level = 4, - }, - [4] = { - index = 4, - bet_level = 5, - }, - [5] = { - index = 5, - bet_level = 6, - }, - [6] = { - index = 6, - bet_level = 7, - }, - [7] = { - index = 7, - bet_level = 8, - }, - [8] = { - index = 8, - bet_level = 9, - }, - [9] = { - index = 9, - bet_level = 10, - }, + [0] = { + index = 0, + bet_level = 1, + }, + [1] = { + index = 1, + bet_level = 2, + }, + [2] = { + index = 2, + bet_level = 3, + }, + [3] = { + index = 3, + bet_level = 4, + }, + [4] = { + index = 4, + bet_level = 5, + }, + [5] = { + index = 5, + bet_level = 6, + }, + [6] = { + index = 6, + bet_level = 7, + }, + [7] = { + index = 7, + bet_level = 8, + }, + [8] = { + index = 8, + bet_level = 9, + }, + [9] = { + index = 9, + bet_level = 10, + }, } _.FortuneDragonBetBetLine = { - [0] = { - index = 0, - bet_line = 5, - }, + [0] = { + index = 0, + bet_line = 5, + }, } _.FortuneDragonBetBetSize = { - [0] = { - index = 0, - bet_size = 300, - }, - [1] = { - index = 1, - bet_size = 1000, - }, - [2] = { - index = 2, - bet_size = 3000, - }, - [3] = { - index = 3, - bet_size = 9000, - }, + [0] = { + index = 0, + bet_size = 300, + }, + [1] = { + index = 1, + bet_size = 1000, + }, + [2] = { + index = 2, + bet_size = 3000, + }, + [3] = { + index = 3, + bet_size = 9000, + }, } _.FortuneDragonFormation = { - { - spin_type = 1, - node_type = "BaseSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 3, - node_type = "FreeSpin", - id = 1, - seq_id = 1, - reel = "FreeSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 2, - other_init_method = 2, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 1, - node_type = "SureWinBaseSpin", - id = 1, - seq_id = 1, - reel = "SureWinBaseSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, + { + spin_type = 1, + node_type = "BaseSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 3, + node_type = "FreeSpin", + id = 1, + seq_id = 1, + reel = "FreeSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 2, + other_init_method = 2, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 1, + node_type = "SureWinBaseSpin", + id = 1, + seq_id = 1, + reel = "SureWinBaseSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, } _.FortuneDragonReelBaseSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneDragonReelBaseSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2}, - {7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 }, + { 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 }, } _.FortuneDragonReelFreeSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneDragonReelFreeSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 3, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 2, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 1, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 3, 5, 3, 5, 6, 7, 2, 5, 6, 5, 3, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 1, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 2, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 1, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 2, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 3, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 3, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 3, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 3, 4, 7, 3, 6, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 1, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 1, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2}, - {7, 5, 5, 4, 7, 3, 7, 6, 4, 2, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 3, 5, 5, 7, 2, 3, 4, 7, 6, 3, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 3, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 1, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 1, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 2, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 3, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 2, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 1, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 3, 5, 3, 5, 6, 7, 2, 5, 6, 5, 3, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 1, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 2, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 1, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 2, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 3, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 3, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 3, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 3, 4, 7, 3, 6, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 1, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 1, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 }, + { 7, 5, 5, 4, 7, 3, 7, 6, 4, 2, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 3, 5, 5, 7, 2, 3, 4, 7, 6, 3, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 3, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 1, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 1, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 2, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 }, } _.FortuneDragonReelSureWinBaseSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneDragonReelSureWinBaseSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 2, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 1, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 3, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 2, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 2, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 2, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 3, 4, 5, 7, 7, 2, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 6, 6, 5, 7, 6, 4, 5, 4, 6, 1, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 3, 2, 6, 5, 2, 6, 6, 3, 4, 6, 4, 2, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 5, 3, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 2, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 2, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 2, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 2, 7, 7, 6, 2, 7, 3, 7, 5, 2, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 3, 6, 7, 7, 3, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 1, 3, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 2, 7, 6, 3, 3, 2, 4, 4, 7, 2}, - {7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 1, 3, 3, 3, 6, 1, 7, 6, 3, 5, 4, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 2, 7, 3, 4, 5, 5, 5, 6, 3, 1, 7, 7, 2, 6, 5, 4, 6, 6, 3, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 4, 3, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 2, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 3, 7, 5, 2, 6, 6, 5, 2, 7, 4, 4, 4, 7, 2, 6, 6, 3, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 2, 7, 6, 5, 5, 5, 2, 2, 5, 7, 2, 7, 3, 4, 5, 3, 7, 7, 2, 5, 5, 5, 1, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 3, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 3, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 3, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 2, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 1, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 3, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 2, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 2, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 2, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 3, 4, 5, 7, 7, 2, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 6, 6, 5, 7, 6, 4, 5, 4, 6, 1, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 3, 2, 6, 5, 2, 6, 6, 3, 4, 6, 4, 2, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 5, 3, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 2, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 2, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 2, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 2, 7, 7, 6, 2, 7, 3, 7, 5, 2, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 3, 6, 7, 7, 3, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 1, 3, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 2, 7, 6, 3, 3, 2, 4, 4, 7, 2 }, + { 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 1, 3, 3, 3, 6, 1, 7, 6, 3, 5, 4, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 2, 7, 3, 4, 5, 5, 5, 6, 3, 1, 7, 7, 2, 6, 5, 4, 6, 6, 3, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 4, 3, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 2, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 3, 7, 5, 2, 6, 6, 5, 2, 7, 4, 4, 4, 7, 2, 6, 6, 3, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 2, 7, 6, 5, 5, 5, 2, 2, 5, 7, 2, 7, 3, 4, 5, 3, 7, 7, 2, 5, 5, 5, 1, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 3, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 3, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 3, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 }, } _.FortuneDragonSymbol = { - [1] = { - id = 1, - name = "Wild", - is_wild = true, - group = {1}, - pay_rate = {0, 0, 100}, - client_order = 0, - client_dsc = "", - }, - [2] = { - id = 2, - name = "元宝", - is_wild = false, - group = {2}, - pay_rate = {0, 0, 50}, - client_order = 0, - client_dsc = "", - }, - [3] = { - id = 3, - name = "红包", - is_wild = false, - group = {3}, - pay_rate = {0, 0, 25}, - client_order = 0, - client_dsc = "", - }, - [4] = { - id = 4, - name = "灯笼", - is_wild = false, - group = {4}, - pay_rate = {0, 0, 10}, - client_order = 0, - client_dsc = "", - }, - [5] = { - id = 5, - name = "福炮", - is_wild = false, - group = {5}, - pay_rate = {0, 0, 5}, - client_order = 0, - client_dsc = "", - }, - [6] = { - id = 6, - name = "花结", - is_wild = false, - group = {6}, - pay_rate = {0, 0, 3}, - client_order = 0, - client_dsc = "", - }, - [7] = { - id = 7, - name = "铜钱", - is_wild = false, - group = {7}, - pay_rate = {0, 0, 2}, - client_order = 0, - client_dsc = "", - }, - [8] = { - id = 8, - name = "X2", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [9] = { - id = 9, - name = "X5", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [10] = { - id = 10, - name = "X10", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [200] = { - id = 200, - name = "Empty", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, + [1] = { + id = 1, + name = "Wild", + is_wild = true, + group = { 1 }, + pay_rate = { 0, 0, 100 }, + client_order = 0, + client_dsc = "", + }, + [2] = { + id = 2, + name = "元宝", + is_wild = false, + group = { 2 }, + pay_rate = { 0, 0, 50 }, + client_order = 0, + client_dsc = "", + }, + [3] = { + id = 3, + name = "红包", + is_wild = false, + group = { 3 }, + pay_rate = { 0, 0, 25 }, + client_order = 0, + client_dsc = "", + }, + [4] = { + id = 4, + name = "灯笼", + is_wild = false, + group = { 4 }, + pay_rate = { 0, 0, 10 }, + client_order = 0, + client_dsc = "", + }, + [5] = { + id = 5, + name = "福炮", + is_wild = false, + group = { 5 }, + pay_rate = { 0, 0, 5 }, + client_order = 0, + client_dsc = "", + }, + [6] = { + id = 6, + name = "花结", + is_wild = false, + group = { 6 }, + pay_rate = { 0, 0, 3 }, + client_order = 0, + client_dsc = "", + }, + [7] = { + id = 7, + name = "铜钱", + is_wild = false, + group = { 7 }, + pay_rate = { 0, 0, 2 }, + client_order = 0, + client_dsc = "", + }, + [8] = { + id = 8, + name = "X2", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [9] = { + id = 9, + name = "X5", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [10] = { + id = 10, + name = "X10", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [200] = { + id = 200, + name = "Empty", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, } _.FortuneDragonSymbolBetRatio = { - { - bet_ratio = 1, - }, + { + bet_ratio = 1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneMouse.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneMouse.lua index c808d80..7318a5f 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneMouse.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneMouse.lua @@ -2,283 +2,283 @@ local _ = {} _.FortuneMouseBetBetChangeList = { - [0] = { - index = 0, - bet_change_list = 0.15, - bet_size_index = 0, - bet_level_index = 0, - }, - [1] = { - index = 1, - bet_change_list = 0.3, - bet_size_index = 0, - bet_level_index = 1, - }, - [2] = { - index = 2, - bet_change_list = 0.45, - bet_size_index = 0, - bet_level_index = 2, - }, - [3] = { - index = 3, - bet_change_list = 0.5, - bet_size_index = 1, - bet_level_index = 0, - }, - [4] = { - index = 4, - bet_change_list = 0.75, - bet_size_index = 0, - bet_level_index = 4, - }, - [5] = { - index = 5, - bet_change_list = 1.5, - bet_size_index = 0, - bet_level_index = 9, - }, - [6] = { - index = 6, - bet_change_list = 2.5, - bet_size_index = 1, - bet_level_index = 4, - }, - [7] = { - index = 7, - bet_change_list = 4.5, - bet_size_index = 3, - bet_level_index = 0, - }, - [8] = { - index = 8, - bet_change_list = 5, - bet_size_index = 1, - bet_level_index = 9, - }, - [9] = { - index = 9, - bet_change_list = 7.5, - bet_size_index = 2, - bet_level_index = 4, - }, - [10] = { - index = 10, - bet_change_list = 15, - bet_size_index = 2, - bet_level_index = 9, - }, - [11] = { - index = 11, - bet_change_list = 22.5, - bet_size_index = 3, - bet_level_index = 4, - }, - [12] = { - index = 12, - bet_change_list = 45, - bet_size_index = 3, - bet_level_index = 9, - }, + [0] = { + index = 0, + bet_change_list = 0.15, + bet_size_index = 0, + bet_level_index = 0, + }, + [1] = { + index = 1, + bet_change_list = 0.3, + bet_size_index = 0, + bet_level_index = 1, + }, + [2] = { + index = 2, + bet_change_list = 0.45, + bet_size_index = 0, + bet_level_index = 2, + }, + [3] = { + index = 3, + bet_change_list = 0.5, + bet_size_index = 1, + bet_level_index = 0, + }, + [4] = { + index = 4, + bet_change_list = 0.75, + bet_size_index = 0, + bet_level_index = 4, + }, + [5] = { + index = 5, + bet_change_list = 1.5, + bet_size_index = 0, + bet_level_index = 9, + }, + [6] = { + index = 6, + bet_change_list = 2.5, + bet_size_index = 1, + bet_level_index = 4, + }, + [7] = { + index = 7, + bet_change_list = 4.5, + bet_size_index = 3, + bet_level_index = 0, + }, + [8] = { + index = 8, + bet_change_list = 5, + bet_size_index = 1, + bet_level_index = 9, + }, + [9] = { + index = 9, + bet_change_list = 7.5, + bet_size_index = 2, + bet_level_index = 4, + }, + [10] = { + index = 10, + bet_change_list = 15, + bet_size_index = 2, + bet_level_index = 9, + }, + [11] = { + index = 11, + bet_change_list = 22.5, + bet_size_index = 3, + bet_level_index = 4, + }, + [12] = { + index = 12, + bet_change_list = 45, + bet_size_index = 3, + bet_level_index = 9, + }, } _.FortuneMouseBetBetLevel = { - [0] = { - index = 0, - bet_level = 1, - }, - [1] = { - index = 1, - bet_level = 2, - }, - [2] = { - index = 2, - bet_level = 3, - }, - [3] = { - index = 3, - bet_level = 4, - }, - [4] = { - index = 4, - bet_level = 5, - }, - [5] = { - index = 5, - bet_level = 6, - }, - [6] = { - index = 6, - bet_level = 7, - }, - [7] = { - index = 7, - bet_level = 8, - }, - [8] = { - index = 8, - bet_level = 9, - }, - [9] = { - index = 9, - bet_level = 10, - }, + [0] = { + index = 0, + bet_level = 1, + }, + [1] = { + index = 1, + bet_level = 2, + }, + [2] = { + index = 2, + bet_level = 3, + }, + [3] = { + index = 3, + bet_level = 4, + }, + [4] = { + index = 4, + bet_level = 5, + }, + [5] = { + index = 5, + bet_level = 6, + }, + [6] = { + index = 6, + bet_level = 7, + }, + [7] = { + index = 7, + bet_level = 8, + }, + [8] = { + index = 8, + bet_level = 9, + }, + [9] = { + index = 9, + bet_level = 10, + }, } _.FortuneMouseBetBetLine = { - [0] = { - index = 0, - bet_line = 5, - }, + [0] = { + index = 0, + bet_line = 5, + }, } _.FortuneMouseBetBetSize = { - [0] = { - index = 0, - bet_size = 300, - }, - [1] = { - index = 1, - bet_size = 1000, - }, - [2] = { - index = 2, - bet_size = 3000, - }, - [3] = { - index = 3, - bet_size = 9000, - }, + [0] = { + index = 0, + bet_size = 300, + }, + [1] = { + index = 1, + bet_size = 1000, + }, + [2] = { + index = 2, + bet_size = 3000, + }, + [3] = { + index = 3, + bet_size = 9000, + }, } _.FortuneMouseFormation = { - { - spin_type = 1, - node_type = "BaseSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 3, - node_type = "ReSpin", - id = 1, - seq_id = 1, - reel = "ReSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 3, - other_init_method = 3, - first_init_symbols = {}, - other_init_symbols = {}, - }, + { + spin_type = 1, + node_type = "BaseSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 3, + node_type = "ReSpin", + id = 1, + seq_id = 1, + reel = "ReSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 3, + other_init_method = 3, + first_init_symbols = {}, + other_init_symbols = {}, + }, } _.FortuneMouseReelBaseSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneMouseReelBaseSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 5, 3, 4, 2, 7, 7, 7, 6, 5, 5, 5, 4, 6, 5, 5, 5, 4, 7, 7, 7, 4, 7, 6, 5, 3, 3, 3, 5, 7, 6, 5, 7, 6, 5, 7, 7, 7, 6, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 1, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 7, 6, 4, 5, 4, 6, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 5, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 7, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 4, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 5, 7, 6, 6, 2, 7, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 6, 6, 7, 4, 6, 6, 6, 5, 4, 7, 6, 4, 7, 3, 6, 7, 6, 7, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 1, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 6, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 2, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 6, 6, 6, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 7, 6, 5, 7, 3, 6, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 6, 5, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2}, - {7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 6, 6, 7, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 1, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 7, 4, 5, 7, 7, 7, 3, 6, 7, 5, 6, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 7, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 4, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 5, 3, 4, 2, 7, 7, 7, 6, 5, 5, 5, 4, 6, 5, 5, 5, 4, 7, 7, 7, 4, 7, 6, 5, 3, 3, 3, 5, 7, 6, 5, 7, 6, 5, 7, 7, 7, 6, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 1, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 7, 6, 4, 5, 4, 6, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 5, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 7, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 4, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 5, 7, 6, 6, 2, 7, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 6, 6, 7, 4, 6, 6, 6, 5, 4, 7, 6, 4, 7, 3, 6, 7, 6, 7, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 1, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 6, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 2, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 6, 6, 6, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 7, 6, 5, 7, 3, 6, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 6, 5, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 }, + { 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 6, 6, 7, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 1, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 7, 4, 5, 7, 7, 7, 3, 6, 7, 5, 6, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 7, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 4, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 }, } _.FortuneMouseReelReSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneMouseReelReSpinReel = { - {1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8}, - {1, 1, 1}, - {1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8}, + { 1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8 }, + { 1, 1, 1 }, + { 1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8 }, } _.FortuneMouseSymbol = { - [1] = { - id = 1, - name = "wild", - is_wild = true, - group = {1}, - pay_rate = {0, 0, 300}, - client_order = 1, - client_dsc = "", - }, - [2] = { - id = 2, - name = "倒福", - is_wild = false, - group = {2}, - pay_rate = {0, 0, 100}, - client_order = 2, - client_dsc = "", - }, - [3] = { - id = 3, - name = "红包", - is_wild = false, - group = {3}, - pay_rate = {0, 0, 50}, - client_order = 3, - client_dsc = "", - }, - [4] = { - id = 4, - name = "钱袋", - is_wild = false, - group = {4}, - pay_rate = {0, 0, 30}, - client_order = 4, - client_dsc = "", - }, - [5] = { - id = 5, - name = "爆竹", - is_wild = false, - group = {5}, - pay_rate = {0, 0, 15}, - client_order = 5, - client_dsc = "", - }, - [6] = { - id = 6, - name = "橘子", - is_wild = false, - group = {6}, - pay_rate = {0, 0, 5}, - client_order = 6, - client_dsc = "", - }, - [7] = { - id = 7, - name = "花生", - is_wild = false, - group = {7}, - pay_rate = {0, 0, 3}, - client_order = 7, - client_dsc = "", - }, - [8] = { - id = 8, - name = "SuperStack", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, + [1] = { + id = 1, + name = "wild", + is_wild = true, + group = { 1 }, + pay_rate = { 0, 0, 300 }, + client_order = 1, + client_dsc = "", + }, + [2] = { + id = 2, + name = "倒福", + is_wild = false, + group = { 2 }, + pay_rate = { 0, 0, 100 }, + client_order = 2, + client_dsc = "", + }, + [3] = { + id = 3, + name = "红包", + is_wild = false, + group = { 3 }, + pay_rate = { 0, 0, 50 }, + client_order = 3, + client_dsc = "", + }, + [4] = { + id = 4, + name = "钱袋", + is_wild = false, + group = { 4 }, + pay_rate = { 0, 0, 30 }, + client_order = 4, + client_dsc = "", + }, + [5] = { + id = 5, + name = "爆竹", + is_wild = false, + group = { 5 }, + pay_rate = { 0, 0, 15 }, + client_order = 5, + client_dsc = "", + }, + [6] = { + id = 6, + name = "橘子", + is_wild = false, + group = { 6 }, + pay_rate = { 0, 0, 5 }, + client_order = 6, + client_dsc = "", + }, + [7] = { + id = 7, + name = "花生", + is_wild = false, + group = { 7 }, + pay_rate = { 0, 0, 3 }, + client_order = 7, + client_dsc = "", + }, + [8] = { + id = 8, + name = "SuperStack", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, } _.FortuneMouseSymbolBetRatio = { - { - bet_ratio = 1, - }, + { + bet_ratio = 1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneOx.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneOx.lua index a0f6859..47135c1 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneOx.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneOx.lua @@ -2,292 +2,292 @@ local _ = {} _.FortuneOxBetBetChangeList = { - [0] = { - index = 0, - bet_change_list = 0.3, - bet_size_index = 0, - bet_level_index = 0, - }, - [1] = { - index = 1, - bet_change_list = 0.6, - bet_size_index = 0, - bet_level_index = 1, - }, - [2] = { - index = 2, - bet_change_list = 0.9, - bet_size_index = 0, - bet_level_index = 2, - }, - [3] = { - index = 3, - bet_change_list = 1, - bet_size_index = 1, - bet_level_index = 0, - }, - [4] = { - index = 4, - bet_change_list = 1.5, - bet_size_index = 0, - bet_level_index = 4, - }, - [5] = { - index = 5, - bet_change_list = 3, - bet_size_index = 0, - bet_level_index = 9, - }, - [6] = { - index = 6, - bet_change_list = 5, - bet_size_index = 1, - bet_level_index = 4, - }, - [7] = { - index = 7, - bet_change_list = 9, - bet_size_index = 3, - bet_level_index = 0, - }, - [8] = { - index = 8, - bet_change_list = 10, - bet_size_index = 1, - bet_level_index = 9, - }, - [9] = { - index = 9, - bet_change_list = 15, - bet_size_index = 2, - bet_level_index = 4, - }, - [10] = { - index = 10, - bet_change_list = 30, - bet_size_index = 2, - bet_level_index = 9, - }, - [11] = { - index = 11, - bet_change_list = 45, - bet_size_index = 3, - bet_level_index = 4, - }, - [12] = { - index = 12, - bet_change_list = 90, - bet_size_index = 3, - bet_level_index = 9, - }, + [0] = { + index = 0, + bet_change_list = 0.3, + bet_size_index = 0, + bet_level_index = 0, + }, + [1] = { + index = 1, + bet_change_list = 0.6, + bet_size_index = 0, + bet_level_index = 1, + }, + [2] = { + index = 2, + bet_change_list = 0.9, + bet_size_index = 0, + bet_level_index = 2, + }, + [3] = { + index = 3, + bet_change_list = 1, + bet_size_index = 1, + bet_level_index = 0, + }, + [4] = { + index = 4, + bet_change_list = 1.5, + bet_size_index = 0, + bet_level_index = 4, + }, + [5] = { + index = 5, + bet_change_list = 3, + bet_size_index = 0, + bet_level_index = 9, + }, + [6] = { + index = 6, + bet_change_list = 5, + bet_size_index = 1, + bet_level_index = 4, + }, + [7] = { + index = 7, + bet_change_list = 9, + bet_size_index = 3, + bet_level_index = 0, + }, + [8] = { + index = 8, + bet_change_list = 10, + bet_size_index = 1, + bet_level_index = 9, + }, + [9] = { + index = 9, + bet_change_list = 15, + bet_size_index = 2, + bet_level_index = 4, + }, + [10] = { + index = 10, + bet_change_list = 30, + bet_size_index = 2, + bet_level_index = 9, + }, + [11] = { + index = 11, + bet_change_list = 45, + bet_size_index = 3, + bet_level_index = 4, + }, + [12] = { + index = 12, + bet_change_list = 90, + bet_size_index = 3, + bet_level_index = 9, + }, } _.FortuneOxBetBetLevel = { - [0] = { - index = 0, - bet_level = 1, - }, - [1] = { - index = 1, - bet_level = 2, - }, - [2] = { - index = 2, - bet_level = 3, - }, - [3] = { - index = 3, - bet_level = 4, - }, - [4] = { - index = 4, - bet_level = 5, - }, - [5] = { - index = 5, - bet_level = 6, - }, - [6] = { - index = 6, - bet_level = 7, - }, - [7] = { - index = 7, - bet_level = 8, - }, - [8] = { - index = 8, - bet_level = 9, - }, - [9] = { - index = 9, - bet_level = 10, - }, + [0] = { + index = 0, + bet_level = 1, + }, + [1] = { + index = 1, + bet_level = 2, + }, + [2] = { + index = 2, + bet_level = 3, + }, + [3] = { + index = 3, + bet_level = 4, + }, + [4] = { + index = 4, + bet_level = 5, + }, + [5] = { + index = 5, + bet_level = 6, + }, + [6] = { + index = 6, + bet_level = 7, + }, + [7] = { + index = 7, + bet_level = 8, + }, + [8] = { + index = 8, + bet_level = 9, + }, + [9] = { + index = 9, + bet_level = 10, + }, } _.FortuneOxBetBetLine = { - [0] = { - index = 0, - bet_line = 10, - }, + [0] = { + index = 0, + bet_line = 10, + }, } _.FortuneOxBetBetSize = { - [0] = { - index = 0, - bet_size = 300, - }, - [1] = { - index = 1, - bet_size = 1000, - }, - [2] = { - index = 2, - bet_size = 3000, - }, - [3] = { - index = 3, - bet_size = 9000, - }, + [0] = { + index = 0, + bet_size = 300, + }, + [1] = { + index = 1, + bet_size = 1000, + }, + [2] = { + index = 2, + bet_size = 3000, + }, + [3] = { + index = 3, + bet_size = 9000, + }, } _.FortuneOxFormation = { - { - spin_type = 1, - node_type = "BaseSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line10Form343TypeA", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 3, - node_type = "ReSpin", - id = 1, - seq_id = 1, - reel = "ReSpin", - matrix = "Line10Form343TypeA", - symbol = "Default", - first_init_method = 3, - other_init_method = 3, - first_init_symbols = {}, - other_init_symbols = {}, - }, + { + spin_type = 1, + node_type = "BaseSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line10Form343TypeA", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 3, + node_type = "ReSpin", + id = 1, + seq_id = 1, + reel = "ReSpin", + matrix = "Line10Form343TypeA", + symbol = "Default", + first_init_method = 3, + other_init_method = 3, + first_init_symbols = {}, + other_init_symbols = {}, + }, } _.FortuneOxReelBaseSpinRange = { - {3, 4, 3}, + { 3, 4, 3 }, } _.FortuneOxReelBaseSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 1, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 6, 6, 6, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 7, 7, 7, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 7, 7, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 7, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 6, 6, 6, 6, 6, 7, 7, 7, 7, 5, 4, 7, 5, 7, 2, 6, 7, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 7, 7, 7, 7, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 1, 2, 3, 4, 4, 7, 5, 5, 5, 5, 6, 6, 6, 6, 4, 7, 6, 1, 1, 7, 4, 5, 7, 6, 5, 4, 6, 7, 4, 7, 3, 5, 6, 7, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 7, 7, 6, 6, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 6, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 7, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 7, 7, 7, 7, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 7, 7, 7, 7, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 7, 7, 7, 7, 7}, - {5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 7, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 2, 2, 6, 6, 6, 3, 7, 5, 6, 6, 6, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 7, 7, 7, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 6, 6, 6, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 7, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 6, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 1, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 6, 6, 6, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 7, 7, 7, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 7, 7, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 7, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 6, 6, 6, 6, 6, 7, 7, 7, 7, 5, 4, 7, 5, 7, 2, 6, 7, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 7, 7, 7, 7, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 1, 2, 3, 4, 4, 7, 5, 5, 5, 5, 6, 6, 6, 6, 4, 7, 6, 1, 1, 7, 4, 5, 7, 6, 5, 4, 6, 7, 4, 7, 3, 5, 6, 7, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 7, 7, 6, 6, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 6, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 7, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 7, 7, 7, 7, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 7, 7, 7, 7, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 7, 7, 7, 7, 7 }, + { 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 7, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 2, 2, 6, 6, 6, 3, 7, 5, 6, 6, 6, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 7, 7, 7, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 6, 6, 6, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 7, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 6, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7 }, } _.FortuneOxReelReSpinRange = { - {3, 4, 3}, + { 3, 4, 3 }, } _.FortuneOxReelReSpinReel = { - {9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8}, - {9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8}, - {9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8}, + { 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8 }, + { 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8 }, + { 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8 }, } _.FortuneOxSymbol = { - [1] = { - id = 1, - name = "wild", - is_wild = true, - group = {1}, - pay_rate = {0, 0, 200}, - client_order = 1, - client_dsc = "", - }, - [2] = { - id = 2, - name = "元宝", - is_wild = false, - group = {2}, - pay_rate = {0, 0, 100}, - client_order = 2, - client_dsc = "", - }, - [3] = { - id = 3, - name = "金锦盒", - is_wild = false, - group = {3}, - pay_rate = {0, 0, 50}, - client_order = 3, - client_dsc = "", - }, - [4] = { - id = 4, - name = "钱袋", - is_wild = false, - group = {4}, - pay_rate = {0, 0, 20}, - client_order = 4, - client_dsc = "", - }, - [5] = { - id = 5, - name = "红包", - is_wild = false, - group = {5}, - pay_rate = {0, 0, 10}, - client_order = 5, - client_dsc = "", - }, - [6] = { - id = 6, - name = "橘子", - is_wild = false, - group = {6}, - pay_rate = {0, 0, 5}, - client_order = 6, - client_dsc = "", - }, - [7] = { - id = 7, - name = "炮竹", - is_wild = false, - group = {7}, - pay_rate = {0, 0, 3}, - client_order = 7, - client_dsc = "", - }, - [8] = { - id = 8, - name = "SuperStack1", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [9] = { - id = 9, - name = "SuperStack2", - is_wild = false, - group = {9}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, + [1] = { + id = 1, + name = "wild", + is_wild = true, + group = { 1 }, + pay_rate = { 0, 0, 200 }, + client_order = 1, + client_dsc = "", + }, + [2] = { + id = 2, + name = "元宝", + is_wild = false, + group = { 2 }, + pay_rate = { 0, 0, 100 }, + client_order = 2, + client_dsc = "", + }, + [3] = { + id = 3, + name = "金锦盒", + is_wild = false, + group = { 3 }, + pay_rate = { 0, 0, 50 }, + client_order = 3, + client_dsc = "", + }, + [4] = { + id = 4, + name = "钱袋", + is_wild = false, + group = { 4 }, + pay_rate = { 0, 0, 20 }, + client_order = 4, + client_dsc = "", + }, + [5] = { + id = 5, + name = "红包", + is_wild = false, + group = { 5 }, + pay_rate = { 0, 0, 10 }, + client_order = 5, + client_dsc = "", + }, + [6] = { + id = 6, + name = "橘子", + is_wild = false, + group = { 6 }, + pay_rate = { 0, 0, 5 }, + client_order = 6, + client_dsc = "", + }, + [7] = { + id = 7, + name = "炮竹", + is_wild = false, + group = { 7 }, + pay_rate = { 0, 0, 3 }, + client_order = 7, + client_dsc = "", + }, + [8] = { + id = 8, + name = "SuperStack1", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [9] = { + id = 9, + name = "SuperStack2", + is_wild = false, + group = { 9 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, } _.FortuneOxSymbolBetRatio = { - { - bet_ratio = 1, - }, + { + bet_ratio = 1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneRabbit.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneRabbit.lua index b11b893..17a1148 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneRabbit.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneRabbit.lua @@ -2,345 +2,345 @@ local _ = {} _.FortuneRabbitBetBetChangeList = { - [0] = { - index = 0, - bet_change_list = 0.3, - bet_size_index = 0, - bet_level_index = 0, - }, - [1] = { - index = 1, - bet_change_list = 0.6, - bet_size_index = 0, - bet_level_index = 1, - }, - [2] = { - index = 2, - bet_change_list = 0.9, - bet_size_index = 0, - bet_level_index = 2, - }, - [3] = { - index = 3, - bet_change_list = 1, - bet_size_index = 1, - bet_level_index = 0, - }, - [4] = { - index = 4, - bet_change_list = 1.5, - bet_size_index = 0, - bet_level_index = 4, - }, - [5] = { - index = 5, - bet_change_list = 3, - bet_size_index = 0, - bet_level_index = 9, - }, - [6] = { - index = 6, - bet_change_list = 5, - bet_size_index = 1, - bet_level_index = 4, - }, - [7] = { - index = 7, - bet_change_list = 9, - bet_size_index = 3, - bet_level_index = 0, - }, - [8] = { - index = 8, - bet_change_list = 10, - bet_size_index = 1, - bet_level_index = 9, - }, - [9] = { - index = 9, - bet_change_list = 15, - bet_size_index = 2, - bet_level_index = 4, - }, - [10] = { - index = 10, - bet_change_list = 30, - bet_size_index = 2, - bet_level_index = 9, - }, - [11] = { - index = 11, - bet_change_list = 45, - bet_size_index = 3, - bet_level_index = 4, - }, - [12] = { - index = 12, - bet_change_list = 90, - bet_size_index = 3, - bet_level_index = 9, - }, + [0] = { + index = 0, + bet_change_list = 0.3, + bet_size_index = 0, + bet_level_index = 0, + }, + [1] = { + index = 1, + bet_change_list = 0.6, + bet_size_index = 0, + bet_level_index = 1, + }, + [2] = { + index = 2, + bet_change_list = 0.9, + bet_size_index = 0, + bet_level_index = 2, + }, + [3] = { + index = 3, + bet_change_list = 1, + bet_size_index = 1, + bet_level_index = 0, + }, + [4] = { + index = 4, + bet_change_list = 1.5, + bet_size_index = 0, + bet_level_index = 4, + }, + [5] = { + index = 5, + bet_change_list = 3, + bet_size_index = 0, + bet_level_index = 9, + }, + [6] = { + index = 6, + bet_change_list = 5, + bet_size_index = 1, + bet_level_index = 4, + }, + [7] = { + index = 7, + bet_change_list = 9, + bet_size_index = 3, + bet_level_index = 0, + }, + [8] = { + index = 8, + bet_change_list = 10, + bet_size_index = 1, + bet_level_index = 9, + }, + [9] = { + index = 9, + bet_change_list = 15, + bet_size_index = 2, + bet_level_index = 4, + }, + [10] = { + index = 10, + bet_change_list = 30, + bet_size_index = 2, + bet_level_index = 9, + }, + [11] = { + index = 11, + bet_change_list = 45, + bet_size_index = 3, + bet_level_index = 4, + }, + [12] = { + index = 12, + bet_change_list = 90, + bet_size_index = 3, + bet_level_index = 9, + }, } _.FortuneRabbitBetBetLevel = { - [0] = { - index = 0, - bet_level = 1, - }, - [1] = { - index = 1, - bet_level = 2, - }, - [2] = { - index = 2, - bet_level = 3, - }, - [3] = { - index = 3, - bet_level = 4, - }, - [4] = { - index = 4, - bet_level = 5, - }, - [5] = { - index = 5, - bet_level = 6, - }, - [6] = { - index = 6, - bet_level = 7, - }, - [7] = { - index = 7, - bet_level = 8, - }, - [8] = { - index = 8, - bet_level = 9, - }, - [9] = { - index = 9, - bet_level = 10, - }, + [0] = { + index = 0, + bet_level = 1, + }, + [1] = { + index = 1, + bet_level = 2, + }, + [2] = { + index = 2, + bet_level = 3, + }, + [3] = { + index = 3, + bet_level = 4, + }, + [4] = { + index = 4, + bet_level = 5, + }, + [5] = { + index = 5, + bet_level = 6, + }, + [6] = { + index = 6, + bet_level = 7, + }, + [7] = { + index = 7, + bet_level = 8, + }, + [8] = { + index = 8, + bet_level = 9, + }, + [9] = { + index = 9, + bet_level = 10, + }, } _.FortuneRabbitBetBetLine = { - [0] = { - index = 0, - bet_line = 10, - }, + [0] = { + index = 0, + bet_line = 10, + }, } _.FortuneRabbitBetBetSize = { - [0] = { - index = 0, - bet_size = 300, - }, - [1] = { - index = 1, - bet_size = 1000, - }, - [2] = { - index = 2, - bet_size = 3000, - }, - [3] = { - index = 3, - bet_size = 9000, - }, + [0] = { + index = 0, + bet_size = 300, + }, + [1] = { + index = 1, + bet_size = 1000, + }, + [2] = { + index = 2, + bet_size = 3000, + }, + [3] = { + index = 3, + bet_size = 9000, + }, } _.FortuneRabbitCashPrizeWeight = { - { - id = 1, - prize_value = 0.5, - weight = 144, - }, - { - id = 2, - prize_value = 1, - weight = 25, - }, - { - id = 3, - prize_value = 2, - weight = 25, - }, - { - id = 4, - prize_value = 5, - weight = 100, - }, - { - id = 5, - prize_value = 10, - weight = 50, - }, - { - id = 6, - prize_value = 20, - weight = 25, - }, - { - id = 7, - prize_value = 30, - weight = 15, - }, - { - id = 8, - prize_value = 50, - weight = 10, - }, - { - id = 9, - prize_value = 100, - weight = 5, - }, - { - id = 10, - prize_value = 500, - weight = 1, - }, + { + id = 1, + prize_value = 0.5, + weight = 144, + }, + { + id = 2, + prize_value = 1, + weight = 25, + }, + { + id = 3, + prize_value = 2, + weight = 25, + }, + { + id = 4, + prize_value = 5, + weight = 100, + }, + { + id = 5, + prize_value = 10, + weight = 50, + }, + { + id = 6, + prize_value = 20, + weight = 25, + }, + { + id = 7, + prize_value = 30, + weight = 15, + }, + { + id = 8, + prize_value = 50, + weight = 10, + }, + { + id = 9, + prize_value = 100, + weight = 5, + }, + { + id = 10, + prize_value = 500, + weight = 1, + }, } _.FortuneRabbitFormation = { - { - spin_type = 1, - node_type = "BaseSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line10Form343TypeA", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 3, - node_type = "FreeSpin", - id = 1, - seq_id = 1, - reel = "FreeSpin", - matrix = "Line10Form343TypeA", - symbol = "Default", - first_init_method = 3, - other_init_method = 3, - first_init_symbols = {}, - other_init_symbols = {}, - }, + { + spin_type = 1, + node_type = "BaseSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line10Form343TypeA", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 3, + node_type = "FreeSpin", + id = 1, + seq_id = 1, + reel = "FreeSpin", + matrix = "Line10Form343TypeA", + symbol = "Default", + first_init_method = 3, + other_init_method = 3, + first_init_symbols = {}, + other_init_symbols = {}, + }, } _.FortuneRabbitReelBaseSpinRange = { - {3, 4, 3}, + { 3, 4, 3 }, } _.FortuneRabbitReelBaseSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 8, 8, 8, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 5, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 5, 6, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 8, 8, 8, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 3, 3, 3, 6, 2, 5, 7, 6, 8, 8, 8, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 8, 8, 8, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 8, 8, 8, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 4, 4, 4, 7, 7, 7, 3, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 8, 8, 8, 2, 7, 7, 2, 2, 6, 5, 2, 6, 4, 7, 6, 3, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 4, 5, 6, 6, 6, 8, 8, 8, 7, 5, 4, 1, 5, 7, 2, 6, 7, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 6, 5, 7, 4, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 5, 2, 3, 4, 4, 7, 5, 5, 5, 5, 8, 8, 8, 8, 4, 7, 6, 5, 1, 7, 4, 5, 7, 6, 5, 4, 8, 8, 8, 8, 3, 5, 6, 4, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 6, 7, 6, 7, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 8, 8, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 5, 5, 5, 5, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 4, 6, 3, 2, 5, 5, 4, 7, 7, 5, 3, 4, 8, 8, 5, 6, 4, 7, 5, 5, 5, 5, 8, 8, 7, 6, 3, 1, 1, 1, 5, 3, 4, 6, 7, 5, 3, 6, 4, 7, 6, 4, 1, 7, 5, 8, 8, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 6, 4, 7, 5, 6, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 8, 8, 8, 8, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 8, 8, 8, 8, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 8, 8, 8, 8, 6, 5, 3, 4, 2, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 5, 5, 5, 5, 7}, - {5, 5, 5, 6, 7, 3, 6, 4, 4, 4, 3, 3, 3, 4, 7, 1, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 8, 8, 8, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 1, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 4, 6, 5, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 8, 8, 8, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 4, 3, 6, 6, 6, 3, 7, 5, 8, 8, 8, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 8, 8, 8, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 2, 2, 2, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 8, 8, 8, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 8, 8, 8, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 8, 8, 8, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 4, 4, 4, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 8, 8, 8, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 5, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 5, 6, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 8, 8, 8, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 3, 3, 3, 6, 2, 5, 7, 6, 8, 8, 8, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 8, 8, 8, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 8, 8, 8, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 4, 4, 4, 7, 7, 7, 3, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 8, 8, 8, 2, 7, 7, 2, 2, 6, 5, 2, 6, 4, 7, 6, 3, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 4, 5, 6, 6, 6, 8, 8, 8, 7, 5, 4, 1, 5, 7, 2, 6, 7, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 6, 5, 7, 4, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 5, 2, 3, 4, 4, 7, 5, 5, 5, 5, 8, 8, 8, 8, 4, 7, 6, 5, 1, 7, 4, 5, 7, 6, 5, 4, 8, 8, 8, 8, 3, 5, 6, 4, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 6, 7, 6, 7, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 8, 8, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 5, 5, 5, 5, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 4, 6, 3, 2, 5, 5, 4, 7, 7, 5, 3, 4, 8, 8, 5, 6, 4, 7, 5, 5, 5, 5, 8, 8, 7, 6, 3, 1, 1, 1, 5, 3, 4, 6, 7, 5, 3, 6, 4, 7, 6, 4, 1, 7, 5, 8, 8, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 6, 4, 7, 5, 6, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 8, 8, 8, 8, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 8, 8, 8, 8, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 8, 8, 8, 8, 6, 5, 3, 4, 2, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 5, 5, 5, 5, 7 }, + { 5, 5, 5, 6, 7, 3, 6, 4, 4, 4, 3, 3, 3, 4, 7, 1, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 8, 8, 8, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 1, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 4, 6, 5, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 8, 8, 8, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 4, 3, 6, 6, 6, 3, 7, 5, 8, 8, 8, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 8, 8, 8, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 2, 2, 2, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 8, 8, 8, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 8, 8, 8, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 8, 8, 8, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 4, 4, 4, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7 }, } _.FortuneRabbitReelFreeSpinRange = { - {3, 4, 3}, + { 3, 4, 3 }, } _.FortuneRabbitReelFreeSpinReel = { - {200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200}, - {200, 200, 200, 8, 8, 8, 8, 200, 200, 200, 200, 200}, - {200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200}, + { 200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200 }, + { 200, 200, 200, 8, 8, 8, 8, 200, 200, 200, 200, 200 }, + { 200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200 }, } _.FortuneRabbitSymbol = { - [1] = { - id = 1, - name = "wild", - is_wild = true, - group = {1}, - pay_rate = {0, 0, 200}, - client_order = 1, - client_dsc = "", - }, - [2] = { - id = 2, - name = "元宝", - is_wild = false, - group = {2}, - pay_rate = {0, 0, 100}, - client_order = 2, - client_dsc = "", - }, - [3] = { - id = 3, - name = "钱袋", - is_wild = false, - group = {3}, - pay_rate = {0, 0, 50}, - client_order = 3, - client_dsc = "", - }, - [4] = { - id = 4, - name = "红包", - is_wild = false, - group = {4}, - pay_rate = {0, 0, 10}, - client_order = 4, - client_dsc = "", - }, - [5] = { - id = 5, - name = "铜币", - is_wild = false, - group = {5}, - pay_rate = {0, 0, 5}, - client_order = 5, - client_dsc = "", - }, - [6] = { - id = 6, - name = "爆竹", - is_wild = false, - group = {6}, - pay_rate = {0, 0, 3}, - client_order = 6, - client_dsc = "", - }, - [7] = { - id = 7, - name = "胡萝卜", - is_wild = false, - group = {7}, - pay_rate = {0, 0, 2}, - client_order = 7, - client_dsc = "", - }, - [8] = { - id = 8, - name = "Cash", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [200] = { - id = 200, - name = "Empty", - is_wild = false, - group = {200}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, + [1] = { + id = 1, + name = "wild", + is_wild = true, + group = { 1 }, + pay_rate = { 0, 0, 200 }, + client_order = 1, + client_dsc = "", + }, + [2] = { + id = 2, + name = "元宝", + is_wild = false, + group = { 2 }, + pay_rate = { 0, 0, 100 }, + client_order = 2, + client_dsc = "", + }, + [3] = { + id = 3, + name = "钱袋", + is_wild = false, + group = { 3 }, + pay_rate = { 0, 0, 50 }, + client_order = 3, + client_dsc = "", + }, + [4] = { + id = 4, + name = "红包", + is_wild = false, + group = { 4 }, + pay_rate = { 0, 0, 10 }, + client_order = 4, + client_dsc = "", + }, + [5] = { + id = 5, + name = "铜币", + is_wild = false, + group = { 5 }, + pay_rate = { 0, 0, 5 }, + client_order = 5, + client_dsc = "", + }, + [6] = { + id = 6, + name = "爆竹", + is_wild = false, + group = { 6 }, + pay_rate = { 0, 0, 3 }, + client_order = 6, + client_dsc = "", + }, + [7] = { + id = 7, + name = "胡萝卜", + is_wild = false, + group = { 7 }, + pay_rate = { 0, 0, 2 }, + client_order = 7, + client_dsc = "", + }, + [8] = { + id = 8, + name = "Cash", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [200] = { + id = 200, + name = "Empty", + is_wild = false, + group = { 200 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, } _.FortuneRabbitSymbolBetRatio = { - { - bet_ratio = 1, - }, + { + bet_ratio = 1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneTiger.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneTiger.lua index 704672c..510f509 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneTiger.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/FortuneTiger.lua @@ -2,292 +2,292 @@ local _ = {} _.FortuneTigerBetBetChangeList = { - [0] = { - index = 0, - bet_change_list = 0.15, - bet_size_index = 0, - bet_level_index = 0, - }, - [1] = { - index = 1, - bet_change_list = 0.3, - bet_size_index = 0, - bet_level_index = 1, - }, - [2] = { - index = 2, - bet_change_list = 0.45, - bet_size_index = 0, - bet_level_index = 2, - }, - [3] = { - index = 3, - bet_change_list = 0.5, - bet_size_index = 1, - bet_level_index = 0, - }, - [4] = { - index = 4, - bet_change_list = 0.75, - bet_size_index = 0, - bet_level_index = 4, - }, - [5] = { - index = 5, - bet_change_list = 1.5, - bet_size_index = 0, - bet_level_index = 9, - }, - [6] = { - index = 6, - bet_change_list = 2.5, - bet_size_index = 1, - bet_level_index = 4, - }, - [7] = { - index = 7, - bet_change_list = 4.5, - bet_size_index = 3, - bet_level_index = 0, - }, - [8] = { - index = 8, - bet_change_list = 5, - bet_size_index = 1, - bet_level_index = 9, - }, - [9] = { - index = 9, - bet_change_list = 7.5, - bet_size_index = 2, - bet_level_index = 4, - }, - [10] = { - index = 10, - bet_change_list = 15, - bet_size_index = 2, - bet_level_index = 9, - }, - [11] = { - index = 11, - bet_change_list = 22.5, - bet_size_index = 3, - bet_level_index = 4, - }, - [12] = { - index = 12, - bet_change_list = 45, - bet_size_index = 3, - bet_level_index = 9, - }, + [0] = { + index = 0, + bet_change_list = 0.15, + bet_size_index = 0, + bet_level_index = 0, + }, + [1] = { + index = 1, + bet_change_list = 0.3, + bet_size_index = 0, + bet_level_index = 1, + }, + [2] = { + index = 2, + bet_change_list = 0.45, + bet_size_index = 0, + bet_level_index = 2, + }, + [3] = { + index = 3, + bet_change_list = 0.5, + bet_size_index = 1, + bet_level_index = 0, + }, + [4] = { + index = 4, + bet_change_list = 0.75, + bet_size_index = 0, + bet_level_index = 4, + }, + [5] = { + index = 5, + bet_change_list = 1.5, + bet_size_index = 0, + bet_level_index = 9, + }, + [6] = { + index = 6, + bet_change_list = 2.5, + bet_size_index = 1, + bet_level_index = 4, + }, + [7] = { + index = 7, + bet_change_list = 4.5, + bet_size_index = 3, + bet_level_index = 0, + }, + [8] = { + index = 8, + bet_change_list = 5, + bet_size_index = 1, + bet_level_index = 9, + }, + [9] = { + index = 9, + bet_change_list = 7.5, + bet_size_index = 2, + bet_level_index = 4, + }, + [10] = { + index = 10, + bet_change_list = 15, + bet_size_index = 2, + bet_level_index = 9, + }, + [11] = { + index = 11, + bet_change_list = 22.5, + bet_size_index = 3, + bet_level_index = 4, + }, + [12] = { + index = 12, + bet_change_list = 45, + bet_size_index = 3, + bet_level_index = 9, + }, } _.FortuneTigerBetBetLevel = { - [0] = { - index = 0, - bet_level = 1, - }, - [1] = { - index = 1, - bet_level = 2, - }, - [2] = { - index = 2, - bet_level = 3, - }, - [3] = { - index = 3, - bet_level = 4, - }, - [4] = { - index = 4, - bet_level = 5, - }, - [5] = { - index = 5, - bet_level = 6, - }, - [6] = { - index = 6, - bet_level = 7, - }, - [7] = { - index = 7, - bet_level = 8, - }, - [8] = { - index = 8, - bet_level = 9, - }, - [9] = { - index = 9, - bet_level = 10, - }, + [0] = { + index = 0, + bet_level = 1, + }, + [1] = { + index = 1, + bet_level = 2, + }, + [2] = { + index = 2, + bet_level = 3, + }, + [3] = { + index = 3, + bet_level = 4, + }, + [4] = { + index = 4, + bet_level = 5, + }, + [5] = { + index = 5, + bet_level = 6, + }, + [6] = { + index = 6, + bet_level = 7, + }, + [7] = { + index = 7, + bet_level = 8, + }, + [8] = { + index = 8, + bet_level = 9, + }, + [9] = { + index = 9, + bet_level = 10, + }, } _.FortuneTigerBetBetLine = { - [0] = { - index = 0, - bet_line = 5, - }, + [0] = { + index = 0, + bet_line = 5, + }, } _.FortuneTigerBetBetSize = { - [0] = { - index = 0, - bet_size = 300, - }, - [1] = { - index = 1, - bet_size = 1000, - }, - [2] = { - index = 2, - bet_size = 3000, - }, - [3] = { - index = 3, - bet_size = 9000, - }, + [0] = { + index = 0, + bet_size = 300, + }, + [1] = { + index = 1, + bet_size = 1000, + }, + [2] = { + index = 2, + bet_size = 3000, + }, + [3] = { + index = 3, + bet_size = 9000, + }, } _.FortuneTigerFormation = { - { - spin_type = 1, - node_type = "BaseSpin", - id = 1, - seq_id = 1, - reel = "BaseSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 2, - other_init_method = 4, - first_init_symbols = {}, - other_init_symbols = {}, - }, - { - spin_type = 3, - node_type = "ReSpin", - id = 1, - seq_id = 1, - reel = "ReSpin", - matrix = "Line5Form3X3TypeB", - symbol = "Default", - first_init_method = 3, - other_init_method = 3, - first_init_symbols = {}, - other_init_symbols = {}, - }, + { + spin_type = 1, + node_type = "BaseSpin", + id = 1, + seq_id = 1, + reel = "BaseSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 2, + other_init_method = 4, + first_init_symbols = {}, + other_init_symbols = {}, + }, + { + spin_type = 3, + node_type = "ReSpin", + id = 1, + seq_id = 1, + reel = "ReSpin", + matrix = "Line5Form3X3TypeB", + symbol = "Default", + first_init_method = 3, + other_init_method = 3, + first_init_symbols = {}, + other_init_symbols = {}, + }, } _.FortuneTigerReelBaseSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneTigerReelBaseSpinReel = { - {3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 0, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 0, 7, 7, 3, 6, 4, 7, 6, 0, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 0, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 0, 5, 7, 6, 6, 7, 7, 6, 3, 5, 0, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 0, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 0, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 0, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 0, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 0, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6}, - {5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 0, 0, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 0, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 0, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 0, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 0, 0, 0, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 0, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 0, 0, 0, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 0, 3, 4, 7, 6, 6, 6, 7, 7, 0, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 0, 0, 0, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 0, 6, 6, 5, 7, 6, 0, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2}, - {7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 0, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 0, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 0, 0, 0, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 0, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 0, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 0, 4, 5, 7, 7, 7, 3, 6, 0, 0, 0, 7, 4, 3, 7, 5, 6, 6, 6, 7, 0, 5, 6, 7, 4, 6, 5, 6, 5, 0, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 0, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 0, 7, 2, 0, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2}, + { 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 0, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 0, 7, 7, 3, 6, 4, 7, 6, 0, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 0, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 0, 5, 7, 6, 6, 7, 7, 6, 3, 5, 0, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 0, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 0, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 0, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 0, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 0, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 }, + { 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 0, 0, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 0, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 0, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 0, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 0, 0, 0, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 0, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 0, 0, 0, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 0, 3, 4, 7, 6, 6, 6, 7, 7, 0, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 0, 0, 0, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 0, 6, 6, 5, 7, 6, 0, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 }, + { 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 0, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 0, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 0, 0, 0, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 0, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 0, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 0, 4, 5, 7, 7, 7, 3, 6, 0, 0, 0, 7, 4, 3, 7, 5, 6, 6, 6, 7, 0, 5, 6, 7, 4, 6, 5, 6, 5, 0, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 0, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 0, 7, 2, 0, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 }, } _.FortuneTigerReelReSpinRange = { - {3, 3, 3}, + { 3, 3, 3 }, } _.FortuneTigerReelReSpinReel = { - {8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200}, - {8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200}, - {8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200}, + { 8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200 }, + { 8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200 }, + { 8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200 }, } _.FortuneTigerSymbol = { - [1] = { - id = 1, - name = "wild", - is_wild = true, - group = {1}, - pay_rate = {0, 0, 250}, - client_order = 1, - client_dsc = "", - }, - [2] = { - id = 2, - name = "元宝", - is_wild = false, - group = {2}, - pay_rate = {0, 0, 100}, - client_order = 2, - client_dsc = "", - }, - [3] = { - id = 3, - name = "玉饰", - is_wild = false, - group = {3}, - pay_rate = {0, 0, 25}, - client_order = 3, - client_dsc = "", - }, - [4] = { - id = 4, - name = "福袋", - is_wild = false, - group = {4}, - pay_rate = {0, 0, 10}, - client_order = 4, - client_dsc = "", - }, - [5] = { - id = 5, - name = "红包", - is_wild = false, - group = {5}, - pay_rate = {0, 0, 8}, - client_order = 5, - client_dsc = "", - }, - [6] = { - id = 6, - name = "爆竹", - is_wild = false, - group = {6}, - pay_rate = {0, 0, 5}, - client_order = 6, - client_dsc = "", - }, - [7] = { - id = 7, - name = "橘子", - is_wild = false, - group = {7}, - pay_rate = {0, 0, 3}, - client_order = 7, - client_dsc = "", - }, - [8] = { - id = 8, - name = "SuperStack", - is_wild = false, - group = {8}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, - [200] = { - id = 200, - name = "Empty", - is_wild = false, - group = {200}, - pay_rate = {0, 0, 0}, - client_order = 0, - client_dsc = "", - }, + [1] = { + id = 1, + name = "wild", + is_wild = true, + group = { 1 }, + pay_rate = { 0, 0, 250 }, + client_order = 1, + client_dsc = "", + }, + [2] = { + id = 2, + name = "元宝", + is_wild = false, + group = { 2 }, + pay_rate = { 0, 0, 100 }, + client_order = 2, + client_dsc = "", + }, + [3] = { + id = 3, + name = "玉饰", + is_wild = false, + group = { 3 }, + pay_rate = { 0, 0, 25 }, + client_order = 3, + client_dsc = "", + }, + [4] = { + id = 4, + name = "福袋", + is_wild = false, + group = { 4 }, + pay_rate = { 0, 0, 10 }, + client_order = 4, + client_dsc = "", + }, + [5] = { + id = 5, + name = "红包", + is_wild = false, + group = { 5 }, + pay_rate = { 0, 0, 8 }, + client_order = 5, + client_dsc = "", + }, + [6] = { + id = 6, + name = "爆竹", + is_wild = false, + group = { 6 }, + pay_rate = { 0, 0, 5 }, + client_order = 6, + client_dsc = "", + }, + [7] = { + id = 7, + name = "橘子", + is_wild = false, + group = { 7 }, + pay_rate = { 0, 0, 3 }, + client_order = 7, + client_dsc = "", + }, + [8] = { + id = 8, + name = "SuperStack", + is_wild = false, + group = { 8 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, + [200] = { + id = 200, + name = "Empty", + is_wild = false, + group = { 200 }, + pay_rate = { 0, 0, 0 }, + client_order = 0, + client_dsc = "", + }, } _.FortuneTigerSymbolBetRatio = { - { - bet_ratio = 1, - }, + { + bet_ratio = 1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/Matrix.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/Matrix.lua index 02c7893..aef3dcc 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/Matrix.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/Matrix.lua @@ -2,3958 +2,3958 @@ local _ = {} _.MatrixFeaturesForm15X1TypeA = { - { - type = "FeatureForm15X1TypeA", - link_type = 2, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm15X1TypeA", + link_type = 2, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm19X1TypeA = { - { - type = "FeatureForm19X1TypeA", - link_type = 2, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm19X1TypeA", + link_type = 2, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm20X1TypeA = { - { - type = "FeatureForm20X1TypeA", - link_type = 2, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm20X1TypeA", + link_type = 2, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm25X1TypeA = { - { - type = "FeatureForm25X1TypeA", - link_type = 2, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm25X1TypeA", + link_type = 2, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm30X1TypeA = { - { - type = "FeatureForm30X1TypeA", - link_type = 2, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm30X1TypeA", + link_type = 2, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm35X1TypeA = { - { - type = "FeatureForm35X1TypeA", - link_type = 2, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm35X1TypeA", + link_type = 2, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm40X1 = { - { - type = "FeatureForm40X1", - link_type = 2, - direction = 0, - line_count = 0, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm40X1", + link_type = 2, + direction = 0, + line_count = 0, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm40X1TypeA = { - { - type = "FeatureForm40X1", - link_type = 2, - direction = 0, - line_count = 0, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm40X1", + link_type = 2, + direction = 0, + line_count = 0, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixFeaturesForm7X1TypeA = { - { - type = "FeatureForm15X1TypeA", - link_type = 2, - direction = 0, - line_count = 50, - lines = { - {0, 0, 0}, - }, - form = {1, 1, 1, 1, 1, 1, 1}, - }, + { + type = "FeatureForm15X1TypeA", + link_type = 2, + direction = 0, + line_count = 50, + lines = { + { 0, 0, 0 }, + }, + form = { 1, 1, 1, 1, 1, 1, 1 }, + }, } _.MatrixLine100Form12X5TypeA = { - { - type = "Line100Form12X5TypeA", - link_type = 0, - direction = 0, - line_count = 100, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {8, 8, 8, 8, 8}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {7, 8, 7, 8, 7}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {8, 7, 8, 7, 8}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {6, 7, 8, 7, 6}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {8, 7, 6, 7, 8}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {7, 8, 8, 8, 7}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {8, 7, 7, 7, 8}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {7, 7, 8, 7, 7}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {8, 8, 7, 8, 8}, - {9, 9, 9, 9, 9}, - {8, 9, 8, 9, 8}, - {9, 8, 9, 8, 9}, - {7, 8, 9, 8, 7}, - {9, 8, 7, 8, 9}, - {8, 9, 9, 9, 8}, - {9, 8, 8, 8, 9}, - {8, 8, 9, 8, 8}, - {9, 9, 8, 9, 9}, - {7, 7, 8, 9, 9}, - {10, 10, 10, 10, 10}, - {9, 10, 9, 10, 9}, - {10, 9, 10, 9, 10}, - {8, 9, 10, 9, 8}, - {10, 9, 8, 9, 10}, - {9, 10, 10, 10, 9}, - {10, 9, 9, 9, 10}, - {9, 9, 10, 9, 9}, - {10, 10, 9, 10, 10}, - {8, 8, 9, 10, 10}, - {11, 11, 11, 11, 11}, - {10, 11, 10, 11, 10}, - {11, 10, 11, 10, 11}, - {9, 10, 11, 10, 9}, - {11, 10, 9, 10, 11}, - {10, 11, 11, 11, 10}, - {11, 10, 10, 10, 11}, - {10, 10, 11, 10, 10}, - {11, 11, 10, 11, 11}, - {9, 9, 10, 11, 11}, - {12, 12, 12, 12, 12}, - {11, 12, 11, 12, 11}, - {12, 11, 12, 11, 12}, - {10, 11, 12, 11, 10}, - {12, 11, 10, 11, 12}, - {11, 12, 12, 12, 11}, - {12, 11, 11, 11, 12}, - {11, 11, 12, 11, 11}, - {12, 12, 11, 12, 12}, - {10, 10, 11, 12, 12}, - }, - form = {12, 12, 12, 12, 12}, - }, + { + type = "Line100Form12X5TypeA", + link_type = 0, + direction = 0, + line_count = 100, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 8, 8, 8, 8, 8 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 7, 8, 7, 8, 7 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 8, 7, 8, 7, 8 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 6, 7, 8, 7, 6 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 8, 7, 6, 7, 8 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 7, 8, 8, 8, 7 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 8, 7, 7, 7, 8 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 7, 7, 8, 7, 7 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 8, 8, 7, 8, 8 }, + { 9, 9, 9, 9, 9 }, + { 8, 9, 8, 9, 8 }, + { 9, 8, 9, 8, 9 }, + { 7, 8, 9, 8, 7 }, + { 9, 8, 7, 8, 9 }, + { 8, 9, 9, 9, 8 }, + { 9, 8, 8, 8, 9 }, + { 8, 8, 9, 8, 8 }, + { 9, 9, 8, 9, 9 }, + { 7, 7, 8, 9, 9 }, + { 10, 10, 10, 10, 10 }, + { 9, 10, 9, 10, 9 }, + { 10, 9, 10, 9, 10 }, + { 8, 9, 10, 9, 8 }, + { 10, 9, 8, 9, 10 }, + { 9, 10, 10, 10, 9 }, + { 10, 9, 9, 9, 10 }, + { 9, 9, 10, 9, 9 }, + { 10, 10, 9, 10, 10 }, + { 8, 8, 9, 10, 10 }, + { 11, 11, 11, 11, 11 }, + { 10, 11, 10, 11, 10 }, + { 11, 10, 11, 10, 11 }, + { 9, 10, 11, 10, 9 }, + { 11, 10, 9, 10, 11 }, + { 10, 11, 11, 11, 10 }, + { 11, 10, 10, 10, 11 }, + { 10, 10, 11, 10, 10 }, + { 11, 11, 10, 11, 11 }, + { 9, 9, 10, 11, 11 }, + { 12, 12, 12, 12, 12 }, + { 11, 12, 11, 12, 11 }, + { 12, 11, 12, 11, 12 }, + { 10, 11, 12, 11, 10 }, + { 12, 11, 10, 11, 12 }, + { 11, 12, 12, 12, 11 }, + { 12, 11, 11, 11, 12 }, + { 11, 11, 12, 11, 11 }, + { 12, 12, 11, 12, 12 }, + { 10, 10, 11, 12, 12 }, + }, + form = { 12, 12, 12, 12, 12 }, + }, } _.MatrixLine100Form6X5TypeA = { - { - type = "Line100Form6X5TypeA", - link_type = 0, - direction = 0, - line_count = 100, - lines = { - {1, 1, 1, 1, 1}, - {1, 1, 2, 1, 1}, - {1, 2, 2, 2, 1}, - {1, 2, 3, 2, 1}, - {1, 2, 1, 2, 1}, - {1, 1, 1, 2, 1}, - {1, 2, 1, 1, 1}, - {1, 1, 2, 2, 1}, - {1, 2, 2, 1, 1}, - {1, 1, 3, 1, 1}, - {1, 1, 3, 2, 1}, - {1, 2, 3, 1, 1}, - {1, 3, 3, 3, 1}, - {1, 3, 1, 3, 1}, - {1, 3, 2, 3, 1}, - {1, 3, 4, 3, 1}, - {2, 2, 2, 2, 2}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {2, 2, 2, 3, 2}, - {2, 2, 2, 1, 2}, - {2, 3, 2, 2, 2}, - {2, 1, 2, 2, 2}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {2, 3, 4, 3, 2}, - {2, 2, 4, 2, 2}, - {2, 4, 4, 4, 2}, - {2, 4, 3, 4, 2}, - {3, 3, 3, 3, 3}, - {3, 3, 4, 3, 3}, - {3, 3, 2, 3, 3}, - {3, 4, 4, 4, 3}, - {3, 2, 2, 2, 3}, - {3, 4, 3, 4, 3}, - {3, 2, 3, 2, 3}, - {3, 3, 3, 4, 3}, - {3, 3, 3, 2, 3}, - {3, 4, 3, 3, 3}, - {3, 2, 3, 3, 3}, - {3, 4, 2, 4, 3}, - {3, 2, 4, 2, 3}, - {3, 4, 5, 4, 3}, - {3, 3, 5, 3, 3}, - {3, 2, 1, 2, 3}, - {3, 3, 1, 3, 3}, - {4, 4, 4, 4, 4}, - {4, 4, 5, 4, 4}, - {4, 4, 3, 4, 4}, - {4, 5, 5, 5, 4}, - {4, 3, 3, 3, 4}, - {4, 5, 4, 5, 4}, - {4, 3, 4, 3, 4}, - {4, 4, 4, 5, 4}, - {4, 4, 4, 3, 4}, - {4, 5, 4, 4, 4}, - {4, 3, 4, 4, 4}, - {4, 5, 3, 5, 4}, - {4, 3, 5, 3, 4}, - {4, 5, 6, 5, 4}, - {4, 4, 6, 4, 4}, - {4, 3, 2, 3, 4}, - {4, 4, 2, 4, 4}, - {5, 5, 5, 5, 5}, - {5, 5, 6, 5, 5}, - {5, 5, 4, 5, 5}, - {5, 6, 6, 6, 5}, - {5, 4, 4, 4, 5}, - {5, 6, 5, 6, 5}, - {5, 4, 5, 4, 5}, - {5, 5, 5, 6, 5}, - {5, 5, 5, 4, 5}, - {5, 6, 5, 5, 5}, - {5, 4, 5, 5, 5}, - {5, 6, 4, 6, 5}, - {5, 4, 6, 4, 5}, - {5, 4, 3, 4, 5}, - {5, 5, 3, 5, 5}, - {5, 3, 3, 3, 5}, - {5, 3, 4, 3, 5}, - {6, 6, 6, 6, 6}, - {6, 6, 5, 6, 6}, - {6, 5, 5, 5, 6}, - {6, 5, 4, 5, 6}, - {6, 5, 6, 5, 6}, - {6, 6, 6, 5, 6}, - {6, 5, 6, 6, 6}, - {6, 6, 5, 5, 6}, - {6, 5, 5, 6, 6}, - {6, 6, 5, 6, 6}, - {6, 6, 4, 5, 6}, - {6, 5, 4, 6, 6}, - {6, 4, 4, 4, 6}, - {6, 4, 6, 4, 6}, - {6, 4, 5, 4, 6}, - {6, 4, 3, 4, 6}, - }, - form = {6, 6, 6, 6, 6}, - }, + { + type = "Line100Form6X5TypeA", + link_type = 0, + direction = 0, + line_count = 100, + lines = { + { 1, 1, 1, 1, 1 }, + { 1, 1, 2, 1, 1 }, + { 1, 2, 2, 2, 1 }, + { 1, 2, 3, 2, 1 }, + { 1, 2, 1, 2, 1 }, + { 1, 1, 1, 2, 1 }, + { 1, 2, 1, 1, 1 }, + { 1, 1, 2, 2, 1 }, + { 1, 2, 2, 1, 1 }, + { 1, 1, 3, 1, 1 }, + { 1, 1, 3, 2, 1 }, + { 1, 2, 3, 1, 1 }, + { 1, 3, 3, 3, 1 }, + { 1, 3, 1, 3, 1 }, + { 1, 3, 2, 3, 1 }, + { 1, 3, 4, 3, 1 }, + { 2, 2, 2, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 2, 2, 3, 2 }, + { 2, 2, 2, 1, 2 }, + { 2, 3, 2, 2, 2 }, + { 2, 1, 2, 2, 2 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 4, 3, 2 }, + { 2, 2, 4, 2, 2 }, + { 2, 4, 4, 4, 2 }, + { 2, 4, 3, 4, 2 }, + { 3, 3, 3, 3, 3 }, + { 3, 3, 4, 3, 3 }, + { 3, 3, 2, 3, 3 }, + { 3, 4, 4, 4, 3 }, + { 3, 2, 2, 2, 3 }, + { 3, 4, 3, 4, 3 }, + { 3, 2, 3, 2, 3 }, + { 3, 3, 3, 4, 3 }, + { 3, 3, 3, 2, 3 }, + { 3, 4, 3, 3, 3 }, + { 3, 2, 3, 3, 3 }, + { 3, 4, 2, 4, 3 }, + { 3, 2, 4, 2, 3 }, + { 3, 4, 5, 4, 3 }, + { 3, 3, 5, 3, 3 }, + { 3, 2, 1, 2, 3 }, + { 3, 3, 1, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 4, 4, 5, 4, 4 }, + { 4, 4, 3, 4, 4 }, + { 4, 5, 5, 5, 4 }, + { 4, 3, 3, 3, 4 }, + { 4, 5, 4, 5, 4 }, + { 4, 3, 4, 3, 4 }, + { 4, 4, 4, 5, 4 }, + { 4, 4, 4, 3, 4 }, + { 4, 5, 4, 4, 4 }, + { 4, 3, 4, 4, 4 }, + { 4, 5, 3, 5, 4 }, + { 4, 3, 5, 3, 4 }, + { 4, 5, 6, 5, 4 }, + { 4, 4, 6, 4, 4 }, + { 4, 3, 2, 3, 4 }, + { 4, 4, 2, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 5, 5, 6, 5, 5 }, + { 5, 5, 4, 5, 5 }, + { 5, 6, 6, 6, 5 }, + { 5, 4, 4, 4, 5 }, + { 5, 6, 5, 6, 5 }, + { 5, 4, 5, 4, 5 }, + { 5, 5, 5, 6, 5 }, + { 5, 5, 5, 4, 5 }, + { 5, 6, 5, 5, 5 }, + { 5, 4, 5, 5, 5 }, + { 5, 6, 4, 6, 5 }, + { 5, 4, 6, 4, 5 }, + { 5, 4, 3, 4, 5 }, + { 5, 5, 3, 5, 5 }, + { 5, 3, 3, 3, 5 }, + { 5, 3, 4, 3, 5 }, + { 6, 6, 6, 6, 6 }, + { 6, 6, 5, 6, 6 }, + { 6, 5, 5, 5, 6 }, + { 6, 5, 4, 5, 6 }, + { 6, 5, 6, 5, 6 }, + { 6, 6, 6, 5, 6 }, + { 6, 5, 6, 6, 6 }, + { 6, 6, 5, 5, 6 }, + { 6, 5, 5, 6, 6 }, + { 6, 6, 5, 6, 6 }, + { 6, 6, 4, 5, 6 }, + { 6, 5, 4, 6, 6 }, + { 6, 4, 4, 4, 6 }, + { 6, 4, 6, 4, 6 }, + { 6, 4, 5, 4, 6 }, + { 6, 4, 3, 4, 6 }, + }, + form = { 6, 6, 6, 6, 6 }, + }, } _.MatrixLine10Form343TypeA = { - { - type = "Line10Form343TypeA", - link_type = 0, - direction = 0, - line_count = 10, - lines = { - {1, 1, 1}, - {1, 2, 1}, - {1, 2, 2}, - {2, 2, 1}, - {2, 2, 2}, - {2, 3, 2}, - {2, 3, 3}, - {3, 3, 2}, - {3, 3, 3}, - {3, 4, 3}, - }, - form = {3, 4, 3}, - }, + { + type = "Line10Form343TypeA", + link_type = 0, + direction = 0, + line_count = 10, + lines = { + { 1, 1, 1 }, + { 1, 2, 1 }, + { 1, 2, 2 }, + { 2, 2, 1 }, + { 2, 2, 2 }, + { 2, 3, 2 }, + { 2, 3, 3 }, + { 3, 3, 2 }, + { 3, 3, 3 }, + { 3, 4, 3 }, + }, + form = { 3, 4, 3 }, + }, } _.MatrixLine10Form3X5TypeA = { - { - type = "Line10Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 10, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {3, 3, 2, 1, 1}, - {1, 1, 2, 3, 3}, - {3, 2, 2, 2, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line10Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 10, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 3, 2, 1, 1 }, + { 1, 1, 2, 3, 3 }, + { 3, 2, 2, 2, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine1Form3X3TypeA = { - { - type = "Line1Form3X3TypeA", - link_type = 0, - direction = 0, - line_count = 1, - lines = { - {1, 1, 1}, - }, - form = {3, 3, 3}, - }, + { + type = "Line1Form3X3TypeA", + link_type = 0, + direction = 0, + line_count = 1, + lines = { + { 1, 1, 1 }, + }, + form = { 3, 3, 3 }, + }, } _.MatrixLine1Form3X3TypeB = { - { - type = "Line1Form3X3TypeB", - link_type = 0, - direction = 0, - line_count = 1, - lines = { - {2, 2, 2}, - }, - form = {3, 3, 3}, - }, + { + type = "Line1Form3X3TypeB", + link_type = 0, + direction = 0, + line_count = 1, + lines = { + { 2, 2, 2 }, + }, + form = { 3, 3, 3 }, + }, } _.MatrixLine1Form5X5TypeA = { - { - type = "Line1Form5X5TypeA", - link_type = 0, - direction = 0, - line_count = 1, - lines = { - {3, 3, 3}, - }, - form = {5, 5, 5}, - }, + { + type = "Line1Form5X5TypeA", + link_type = 0, + direction = 0, + line_count = 1, + lines = { + { 3, 3, 3 }, + }, + form = { 5, 5, 5 }, + }, } _.MatrixLine20Form3X5TypeA = { - { - type = "Line20Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 20, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {2, 1, 3, 1, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line20Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 20, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 2, 1, 3, 1, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine25Form36666TypeA = { - { - type = "Line25Form36666TypeA", - link_type = 0, - direction = 0, - line_count = 25, - lines = { - {2, 5, 5, 5, 5}, - {1, 4, 4, 4, 4}, - {3, 6, 6, 6, 6}, - {1, 5, 6, 5, 4}, - {3, 5, 4, 5, 6}, - {2, 4, 4, 4, 5}, - {2, 6, 6, 6, 5}, - {1, 4, 5, 6, 6}, - {3, 6, 5, 4, 4}, - {2, 4, 5, 4, 5}, - {2, 6, 5, 6, 5}, - {1, 5, 5, 5, 6}, - {3, 5, 5, 5, 4}, - {2, 5, 4, 5, 6}, - {2, 5, 6, 5, 4}, - {1, 5, 4, 5, 4}, - {3, 5, 6, 5, 6}, - {1, 4, 6, 4, 4}, - {3, 6, 4, 6, 6}, - {2, 4, 6, 4, 5}, - {2, 6, 4, 6, 5}, - {1, 6, 4, 6, 4}, - {3, 4, 6, 4, 6}, - {1, 6, 6, 6, 4}, - {3, 4, 4, 4, 6}, - }, - form = {3, 6, 6, 6, 6}, - }, + { + type = "Line25Form36666TypeA", + link_type = 0, + direction = 0, + line_count = 25, + lines = { + { 2, 5, 5, 5, 5 }, + { 1, 4, 4, 4, 4 }, + { 3, 6, 6, 6, 6 }, + { 1, 5, 6, 5, 4 }, + { 3, 5, 4, 5, 6 }, + { 2, 4, 4, 4, 5 }, + { 2, 6, 6, 6, 5 }, + { 1, 4, 5, 6, 6 }, + { 3, 6, 5, 4, 4 }, + { 2, 4, 5, 4, 5 }, + { 2, 6, 5, 6, 5 }, + { 1, 5, 5, 5, 6 }, + { 3, 5, 5, 5, 4 }, + { 2, 5, 4, 5, 6 }, + { 2, 5, 6, 5, 4 }, + { 1, 5, 4, 5, 4 }, + { 3, 5, 6, 5, 6 }, + { 1, 4, 6, 4, 4 }, + { 3, 6, 4, 6, 6 }, + { 2, 4, 6, 4, 5 }, + { 2, 6, 4, 6, 5 }, + { 1, 6, 4, 6, 4 }, + { 3, 4, 6, 4, 6 }, + { 1, 6, 6, 6, 4 }, + { 3, 4, 4, 4, 6 }, + }, + form = { 3, 6, 6, 6, 6 }, + }, } _.MatrixLine25Form3X5TypeA = { - { - type = "Line25Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 25, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 3, 2, 1, 1}, - {1, 1, 2, 3, 3}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {3, 3, 1, 3, 3}, - {1, 1, 3, 1, 1}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 3, 3, 1}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {3, 2, 2, 2, 3}, - {1, 2, 2, 2, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line25Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 25, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 3, 2, 1, 1 }, + { 1, 1, 2, 3, 3 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 2, 2, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine25Form3X5TypeB = { - { - type = "Line25Form3X5TypeB", - link_type = 0, - direction = 2, - line_count = 25, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 3, 2, 1, 1}, - {1, 1, 2, 3, 3}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {3, 3, 1, 3, 3}, - {1, 1, 3, 1, 1}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 3, 3, 1}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {3, 2, 2, 2, 3}, - {1, 2, 2, 2, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line25Form3X5TypeB", + link_type = 0, + direction = 2, + line_count = 25, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 3, 2, 1, 1 }, + { 1, 1, 2, 3, 3 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 2, 2, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine25Form3X5TypeC = { - { - type = "Line25Form3X5TypeC", - link_type = 0, - direction = 0, - line_count = 25, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line25Form3X5TypeC", + link_type = 0, + direction = 0, + line_count = 25, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine25Form3X5TypeD = { - { - type = "Line25Form3X5TypeD", - link_type = 0, - direction = 0, - line_count = 25, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line25Form3X5TypeD", + link_type = 0, + direction = 0, + line_count = 25, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine25Form3X5TypeE = { - { - type = "Line25Form3X5TypeE", - link_type = 0, - direction = 0, - line_count = 25, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {2, 2, 1, 2, 3}, - {2, 2, 3, 2, 1}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line25Form3X5TypeE", + link_type = 0, + direction = 0, + line_count = 25, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 2, 2, 1, 2, 3 }, + { 2, 2, 3, 2, 1 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form3X5TypeA = { - { - type = "Line30Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 3, 2, 1, 3}, - {3, 1, 2, 3, 1}, - {2, 1, 3, 2, 3}, - {1, 3, 2, 3, 1}, - {3, 2, 1, 1, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line30Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 2, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 2, 1, 3, 2, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 2, 1, 1, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form3X5TypeB = { - { - type = "Line30Form3X5TypeB", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 2, 1}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 2, 3, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line30Form3X5TypeB", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 2, 1 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 2, 3, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form3X5TypeC = { - { - type = "Line30Form3X5TypeC", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 3, 2, 1, 1}, - {1, 1, 2, 3, 3}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {3, 2, 2, 2, 3}, - {1, 2, 2, 2, 1}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {3, 3, 1, 3, 3}, - {1, 1, 3, 1, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 3, 3, 1}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {3, 1, 3, 1, 3}, - {1, 3, 1, 3, 1}, - {1, 3, 2, 1, 3}, - {3, 1, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {1, 2, 3, 3, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line30Form3X5TypeC", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 3, 2, 1, 1 }, + { 1, 1, 2, 3, 3 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 1, 3, 1 }, + { 1, 3, 2, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 1, 2, 3, 3, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form3X5TypeD = { - { - type = "Line30Form3X5TypeD", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {3, 1, 2, 3, 1}, - {1, 3, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {3, 2, 1, 1, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line30Form3X5TypeD", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 1, 3, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 3, 2, 1, 1, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form3X5TypeE = { - { - type = "Line30Form3X5TypeE", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 2, 1, 1}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {3, 2, 2, 2, 3}, - {1, 2, 2, 2, 1}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {3, 1, 3, 1, 3}, - {1, 3, 1, 3, 1}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {3, 3, 1, 3, 3}, - {1, 1, 3, 1, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 3, 3, 2, 3}, - {1, 1, 1, 2, 1}, - {2, 2, 2, 1, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line30Form3X5TypeE", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 2, 1, 1 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 1, 3, 1 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 3, 3, 2, 3 }, + { 1, 1, 1, 2, 1 }, + { 2, 2, 2, 1, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form3X6TypeA = { - { - type = "Line30Form3X6TypeA", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {1, 1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3, 3}, - {3, 2, 1, 2, 3, 2}, - {1, 2, 3, 2, 1, 2}, - {1, 1, 2, 2, 1, 1}, - {3, 3, 2, 2, 3, 3}, - {1, 2, 2, 2, 2, 1}, - {3, 2, 2, 2, 2, 3}, - {1, 2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2, 3}, - {3, 2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2, 1}, - {2, 2, 1, 1, 2, 2}, - {2, 2, 3, 3, 2, 2}, - {1, 3, 1, 3, 1, 3}, - {3, 1, 3, 1, 3, 1}, - {1, 2, 3, 2, 3, 2}, - {3, 2, 1, 2, 1, 2}, - {1, 2, 1, 2, 3, 2}, - {1, 2, 3, 2, 3, 2}, - {1, 3, 1, 1, 3, 1}, - {3, 1, 3, 3, 1, 3}, - {3, 2, 1, 2, 3, 3}, - {1, 2, 3, 2, 1, 1}, - {1, 1, 2, 2, 1, 2}, - {3, 3, 2, 2, 3, 2}, - {1, 2, 2, 2, 2, 3}, - {3, 2, 2, 2, 2, 1}, - {3, 1, 3, 1, 3, 2}, - }, - form = {3, 3, 3, 3, 3, 3}, - }, + { + type = "Line30Form3X6TypeA", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3, 3 }, + { 3, 2, 1, 2, 3, 2 }, + { 1, 2, 3, 2, 1, 2 }, + { 1, 1, 2, 2, 1, 1 }, + { 3, 3, 2, 2, 3, 3 }, + { 1, 2, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2, 3 }, + { 3, 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2, 1 }, + { 2, 2, 1, 1, 2, 2 }, + { 2, 2, 3, 3, 2, 2 }, + { 1, 3, 1, 3, 1, 3 }, + { 3, 1, 3, 1, 3, 1 }, + { 1, 2, 3, 2, 3, 2 }, + { 3, 2, 1, 2, 1, 2 }, + { 1, 2, 1, 2, 3, 2 }, + { 1, 2, 3, 2, 3, 2 }, + { 1, 3, 1, 1, 3, 1 }, + { 3, 1, 3, 3, 1, 3 }, + { 3, 2, 1, 2, 3, 3 }, + { 1, 2, 3, 2, 1, 1 }, + { 1, 1, 2, 2, 1, 2 }, + { 3, 3, 2, 2, 3, 2 }, + { 1, 2, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 2, 1 }, + { 3, 1, 3, 1, 3, 2 }, + }, + form = { 3, 3, 3, 3, 3, 3 }, + }, } _.MatrixLine30Form4X5TypeA = { - { - type = "Line30Form4X5TypeA", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {1, 2, 1, 2, 3}, - {2, 3, 2, 3, 4}, - {4, 3, 4, 3, 2}, - {3, 2, 3, 2, 1}, - {1, 2, 3, 2, 3}, - {2, 3, 4, 3, 4}, - {3, 2, 1, 2, 1}, - {4, 3, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {1, 2, 1, 2, 1}, - {4, 3, 4, 3, 4}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line30Form4X5TypeA", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 1, 2, 1, 2, 3 }, + { 2, 3, 2, 3, 4 }, + { 4, 3, 4, 3, 2 }, + { 3, 2, 3, 2, 1 }, + { 1, 2, 3, 2, 3 }, + { 2, 3, 4, 3, 4 }, + { 3, 2, 1, 2, 1 }, + { 4, 3, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 1, 2, 1, 2, 1 }, + { 4, 3, 4, 3, 4 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine30Form4X5TypeB = { - { - type = "Line30Form4X5TypeB", - link_type = 0, - direction = 0, - line_count = 30, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {2, 1, 2, 3, 2}, - {3, 2, 3, 4, 3}, - {2, 3, 2, 1, 2}, - {3, 4, 3, 2, 3}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line30Form4X5TypeB", + link_type = 0, + direction = 0, + line_count = 30, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 2, 1, 2, 3, 2 }, + { 3, 2, 3, 4, 3 }, + { 2, 3, 2, 1, 2 }, + { 3, 4, 3, 2, 3 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine3Form3X3TypeA = { - { - type = "Line3Form3X3TypeA", - link_type = 0, - direction = 0, - line_count = 3, - lines = { - {1, 1, 1}, - {2, 2, 2}, - {3, 3, 3}, - }, - form = {3, 3, 3}, - }, + { + type = "Line3Form3X3TypeA", + link_type = 0, + direction = 0, + line_count = 3, + lines = { + { 1, 1, 1 }, + { 2, 2, 2 }, + { 3, 3, 3 }, + }, + form = { 3, 3, 3 }, + }, } _.MatrixLine40Form34543TypeA = { - { - type = "Line40Form34543TypeA", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {1, 1, 1, 1, 1}, - {1, 1, 4, 3, 2}, - {1, 2, 4, 2, 2}, - {1, 2, 3, 4, 3}, - {1, 3, 1, 1, 1}, - {1, 4, 5, 4, 3}, - {2, 1, 2, 1, 1}, - {2, 1, 3, 3, 2}, - {2, 2, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {2, 3, 2, 1, 1}, - {2, 3, 3, 4, 3}, - {2, 4, 5, 3, 3}, - {2, 4, 5, 4, 3}, - {3, 1, 1, 2, 2}, - {3, 2, 4, 2, 1}, - {3, 3, 3, 3, 2}, - {3, 3, 2, 2, 2}, - {3, 4, 4, 4, 3}, - {3, 4, 5, 3, 2}, - {3, 4, 5, 4, 3}, - {3, 4, 2, 2, 2}, - {3, 3, 2, 3, 2}, - {3, 3, 3, 1, 1}, - {3, 2, 5, 4, 3}, - {3, 1, 1, 1, 1}, - {2, 4, 4, 4, 3}, - {2, 4, 3, 2, 2}, - {2, 3, 5, 4, 3}, - {2, 3, 4, 3, 2}, - {2, 2, 4, 4, 3}, - {2, 2, 3, 1, 1}, - {2, 1, 1, 2, 1}, - {2, 1, 1, 1, 1}, - {1, 4, 5, 3, 2}, - {1, 3, 2, 3, 3}, - {1, 2, 3, 2, 2}, - {1, 2, 4, 3, 2}, - {1, 1, 2, 1, 1}, - {1, 1, 1, 2, 2}, - }, - form = {3, 4, 5, 4, 3}, - }, + { + type = "Line40Form34543TypeA", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 1, 1, 1, 1, 1 }, + { 1, 1, 4, 3, 2 }, + { 1, 2, 4, 2, 2 }, + { 1, 2, 3, 4, 3 }, + { 1, 3, 1, 1, 1 }, + { 1, 4, 5, 4, 3 }, + { 2, 1, 2, 1, 1 }, + { 2, 1, 3, 3, 2 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 2, 3, 2, 1, 1 }, + { 2, 3, 3, 4, 3 }, + { 2, 4, 5, 3, 3 }, + { 2, 4, 5, 4, 3 }, + { 3, 1, 1, 2, 2 }, + { 3, 2, 4, 2, 1 }, + { 3, 3, 3, 3, 2 }, + { 3, 3, 2, 2, 2 }, + { 3, 4, 4, 4, 3 }, + { 3, 4, 5, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 3, 4, 2, 2, 2 }, + { 3, 3, 2, 3, 2 }, + { 3, 3, 3, 1, 1 }, + { 3, 2, 5, 4, 3 }, + { 3, 1, 1, 1, 1 }, + { 2, 4, 4, 4, 3 }, + { 2, 4, 3, 2, 2 }, + { 2, 3, 5, 4, 3 }, + { 2, 3, 4, 3, 2 }, + { 2, 2, 4, 4, 3 }, + { 2, 2, 3, 1, 1 }, + { 2, 1, 1, 2, 1 }, + { 2, 1, 1, 1, 1 }, + { 1, 4, 5, 3, 2 }, + { 1, 3, 2, 3, 3 }, + { 1, 2, 3, 2, 2 }, + { 1, 2, 4, 3, 2 }, + { 1, 1, 2, 1, 1 }, + { 1, 1, 1, 2, 2 }, + }, + form = { 3, 4, 5, 4, 3 }, + }, } _.MatrixLine40Form3X5TypeA = { - { - type = "Line40Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 3, 2, 3, 3}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {2, 1, 1, 2, 3}, - {2, 3, 3, 2, 1}, - {2, 2, 2, 3, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line40Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 2, 1, 1, 2, 3 }, + { 2, 3, 3, 2, 1 }, + { 2, 2, 2, 3, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine40Form3X5TypeB = { - { - type = "Line40Form3X5TypeB", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 2, 1}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 1, 1, 1, 2}, - {2, 2, 2, 2, 1}, - {2, 2, 2, 2, 3}, - {3, 3, 3, 3, 2}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - {2, 1, 1, 1, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line40Form3X5TypeB", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 2, 1 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 1, 1, 1, 2 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 2, 2, 3 }, + { 3, 3, 3, 3, 2 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + { 2, 1, 1, 1, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine40Form3X5TypeC = { - { - type = "Line40Form3X5TypeC", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 2, 3, 1}, - {2, 3, 2, 1, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {2, 2, 2, 1, 2}, - {2, 2, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {3, 3, 2, 1, 2}, - {1, 1, 2, 3, 2}, - {3, 2, 3, 3, 3}, - {1, 2, 1, 1, 1}, - {1, 2, 3, 2, 2}, - {3, 2, 1, 2, 2}, - {2, 1, 2, 1, 1}, - {2, 3, 2, 3, 3}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - {2, 1, 1, 1, 1}, - {2, 3, 3, 3, 3}, - {2, 2, 2, 2, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line40Form3X5TypeC", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 2, 3, 1 }, + { 2, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 2, 2, 2, 1, 2 }, + { 2, 2, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 3, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 2 }, + { 3, 2, 3, 3, 3 }, + { 1, 2, 1, 1, 1 }, + { 1, 2, 3, 2, 2 }, + { 3, 2, 1, 2, 2 }, + { 2, 1, 2, 1, 1 }, + { 2, 3, 2, 3, 3 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + { 2, 1, 1, 1, 1 }, + { 2, 3, 3, 3, 3 }, + { 2, 2, 2, 2, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine40Form3X5TypeD = { - { - type = "Line40Form3X5TypeD", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 3, 2, 1, 3}, - {3, 1, 2, 3, 1}, - {2, 1, 3, 2, 3}, - {1, 3, 2, 3, 1}, - {3, 2, 1, 1, 2}, - {1, 2, 3, 3, 2}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 1, 1}, - {3, 1, 1, 2, 3}, - {2, 3, 3, 1, 1}, - {1, 1, 2, 2, 3}, - {3, 3, 1, 2, 1}, - {3, 3, 1, 1, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line40Form3X5TypeD", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 2, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 2, 1, 3, 2, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 2, 1, 1, 2 }, + { 1, 2, 3, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 1, 1 }, + { 3, 1, 1, 2, 3 }, + { 2, 3, 3, 1, 1 }, + { 1, 1, 2, 2, 3 }, + { 3, 3, 1, 2, 1 }, + { 3, 3, 1, 1, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine40Form4X5TypeA = { - { - type = "Line40Form4X5TypeA", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {2, 1, 2, 3, 2}, - {3, 2, 3, 4, 3}, - {2, 3, 2, 1, 2}, - {3, 4, 3, 2, 3}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {2, 2, 4, 2, 2}, - {3, 3, 1, 3, 3}, - {4, 4, 2, 4, 4}, - {1, 1, 1, 2, 3}, - {4, 4, 4, 3, 2}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line40Form4X5TypeA", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 2, 1, 2, 3, 2 }, + { 3, 2, 3, 4, 3 }, + { 2, 3, 2, 1, 2 }, + { 3, 4, 3, 2, 3 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 2, 2, 4, 2, 2 }, + { 3, 3, 1, 3, 3 }, + { 4, 4, 2, 4, 4 }, + { 1, 1, 1, 2, 3 }, + { 4, 4, 4, 3, 2 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine40Form4X5TypeB = { - { - type = "Line40Form4X5TypeA", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {1, 1, 2, 3, 4}, - {4, 4, 3, 2, 1}, - {2, 1, 1, 1, 2}, - {3, 4, 4, 4, 3}, - {1, 2, 3, 4, 4}, - {4, 3, 2, 1, 1}, - {2, 1, 2, 3, 2}, - {3, 4, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {4, 3, 4, 3, 4}, - {2, 3, 2, 1, 2}, - {3, 2, 3, 4, 3}, - {1, 2, 2, 2, 1}, - {4, 3, 3, 3, 4}, - {2, 2, 3, 4, 4}, - {3, 3, 2, 1, 1}, - {2, 2, 1, 2, 2}, - {3, 3, 4, 3, 3}, - {2, 3, 3, 3, 4}, - {3, 2, 2, 2, 1}, - {1, 1, 2, 1, 1}, - {4, 4, 3, 4, 4}, - {1, 2, 3, 3, 4}, - {4, 3, 2, 2, 1}, - {1, 1, 1, 2, 3}, - {4, 4, 4, 3, 2}, - {2, 1, 1, 2, 3}, - {3, 4, 4, 3, 2}, - {1, 2, 2, 3, 4}, - {4, 3, 3, 2, 1}, - {2, 1, 2, 3, 4}, - {3, 4, 3, 2, 1}, - {1, 2, 3, 4, 3}, - {4, 3, 2, 1, 2}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line40Form4X5TypeA", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 1, 1, 2, 3, 4 }, + { 4, 4, 3, 2, 1 }, + { 2, 1, 1, 1, 2 }, + { 3, 4, 4, 4, 3 }, + { 1, 2, 3, 4, 4 }, + { 4, 3, 2, 1, 1 }, + { 2, 1, 2, 3, 2 }, + { 3, 4, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 4, 3, 4, 3, 4 }, + { 2, 3, 2, 1, 2 }, + { 3, 2, 3, 4, 3 }, + { 1, 2, 2, 2, 1 }, + { 4, 3, 3, 3, 4 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 2, 1, 1 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 2, 3, 3, 3, 4 }, + { 3, 2, 2, 2, 1 }, + { 1, 1, 2, 1, 1 }, + { 4, 4, 3, 4, 4 }, + { 1, 2, 3, 3, 4 }, + { 4, 3, 2, 2, 1 }, + { 1, 1, 1, 2, 3 }, + { 4, 4, 4, 3, 2 }, + { 2, 1, 1, 2, 3 }, + { 3, 4, 4, 3, 2 }, + { 1, 2, 2, 3, 4 }, + { 4, 3, 3, 2, 1 }, + { 2, 1, 2, 3, 4 }, + { 3, 4, 3, 2, 1 }, + { 1, 2, 3, 4, 3 }, + { 4, 3, 2, 1, 2 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine40Form4X5TypeC = { - { - type = "Line40Form4X5TypeC", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {1, 2, 3, 2, 1}, - {4, 3, 2, 3, 4}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {1, 2, 1, 2, 1}, - {4, 3, 4, 3, 4}, - {2, 1, 2, 1, 2}, - {3, 4, 3, 4, 3}, - {2, 3, 2, 3, 2}, - {3, 2, 3, 2, 3}, - {1, 1, 2, 1, 1}, - {4, 4, 3, 4, 4}, - {2, 2, 3, 2, 2}, - {3, 3, 2, 3, 3}, - {3, 3, 4, 3, 3}, - {2, 2, 1, 2, 2}, - {3, 2, 2, 2, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 4, 4, 4, 3}, - {4, 3, 3, 3, 4}, - {1, 2, 2, 2, 1}, - {3, 1, 1, 1, 3}, - {2, 4, 4, 4, 2}, - {4, 2, 2, 2, 4}, - {1, 3, 3, 3, 1}, - {3, 3, 1, 3, 3}, - {2, 2, 4, 2, 2}, - {4, 4, 2, 4, 4}, - {1, 1, 3, 1, 1}, - {4, 4, 1, 4, 4}, - {1, 1, 4, 1, 1}, - {4, 3, 2, 1, 1}, - {1, 2, 3, 4, 4}, - {1, 1, 2, 3, 4}, - {4, 4, 3, 2, 1}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line40Form4X5TypeC", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 3, 2, 1 }, + { 4, 3, 2, 3, 4 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 4, 3, 4, 3, 4 }, + { 2, 1, 2, 1, 2 }, + { 3, 4, 3, 4, 3 }, + { 2, 3, 2, 3, 2 }, + { 3, 2, 3, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 4, 4, 3, 4, 4 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 3, 3, 4, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 3, 2, 2, 2, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 3, 3, 3, 4 }, + { 1, 2, 2, 2, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 4, 4, 4, 2 }, + { 4, 2, 2, 2, 4 }, + { 1, 3, 3, 3, 1 }, + { 3, 3, 1, 3, 3 }, + { 2, 2, 4, 2, 2 }, + { 4, 4, 2, 4, 4 }, + { 1, 1, 3, 1, 1 }, + { 4, 4, 1, 4, 4 }, + { 1, 1, 4, 1, 1 }, + { 4, 3, 2, 1, 1 }, + { 1, 2, 3, 4, 4 }, + { 1, 1, 2, 3, 4 }, + { 4, 4, 3, 2, 1 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine40Form4X6TypeA = { - { - type = "Line40Form4X6TypeA", - link_type = 0, - direction = 0, - line_count = 40, - lines = { - {1, 1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4, 4}, - {1, 1, 2, 2, 1, 1}, - {2, 2, 3, 3, 2, 2}, - {3, 3, 4, 4, 3, 3}, - {2, 2, 1, 1, 2, 2}, - {3, 3, 2, 2, 3, 3}, - {4, 4, 3, 3, 4, 4}, - {1, 2, 3, 3, 2, 1}, - {2, 3, 4, 4, 3, 2}, - {3, 2, 1, 1, 2, 3}, - {4, 3, 2, 2, 3, 4}, - {1, 2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2, 3}, - {3, 4, 3, 4, 3, 4}, - {2, 1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3, 2}, - {4, 3, 4, 3, 4, 3}, - {1, 2, 2, 2, 2, 1}, - {2, 3, 3, 3, 3, 2}, - {3, 4, 4, 4, 4, 3}, - {2, 1, 1, 1, 1, 2}, - {3, 2, 2, 2, 2, 3}, - {4, 3, 3, 3, 3, 4}, - {1, 2, 3, 4, 3, 2}, - {2, 3, 4, 3, 2, 1}, - {3, 2, 1, 2, 3, 4}, - {4, 3, 2, 1, 2, 3}, - {2, 1, 2, 3, 4, 3}, - {1, 2, 1, 2, 3, 4}, - {3, 4, 3, 2, 1, 2}, - {4, 3, 4, 3, 2, 1}, - {2, 1, 2, 2, 1, 2}, - {3, 2, 3, 3, 2, 3}, - {4, 3, 4, 4, 3, 4}, - {1, 2, 1, 1, 2, 1}, - {2, 3, 2, 2, 3, 2}, - {3, 4, 3, 3, 4, 3}, - }, - form = {4, 4, 4, 4, 4, 4}, - }, + { + type = "Line40Form4X6TypeA", + link_type = 0, + direction = 0, + line_count = 40, + lines = { + { 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4, 4 }, + { 1, 1, 2, 2, 1, 1 }, + { 2, 2, 3, 3, 2, 2 }, + { 3, 3, 4, 4, 3, 3 }, + { 2, 2, 1, 1, 2, 2 }, + { 3, 3, 2, 2, 3, 3 }, + { 4, 4, 3, 3, 4, 4 }, + { 1, 2, 3, 3, 2, 1 }, + { 2, 3, 4, 4, 3, 2 }, + { 3, 2, 1, 1, 2, 3 }, + { 4, 3, 2, 2, 3, 4 }, + { 1, 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2, 3 }, + { 3, 4, 3, 4, 3, 4 }, + { 2, 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3, 2 }, + { 4, 3, 4, 3, 4, 3 }, + { 1, 2, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 4, 3 }, + { 2, 1, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 3, 4 }, + { 1, 2, 3, 4, 3, 2 }, + { 2, 3, 4, 3, 2, 1 }, + { 3, 2, 1, 2, 3, 4 }, + { 4, 3, 2, 1, 2, 3 }, + { 2, 1, 2, 3, 4, 3 }, + { 1, 2, 1, 2, 3, 4 }, + { 3, 4, 3, 2, 1, 2 }, + { 4, 3, 4, 3, 2, 1 }, + { 2, 1, 2, 2, 1, 2 }, + { 3, 2, 3, 3, 2, 3 }, + { 4, 3, 4, 4, 3, 4 }, + { 1, 2, 1, 1, 2, 1 }, + { 2, 3, 2, 2, 3, 2 }, + { 3, 4, 3, 3, 4, 3 }, + }, + form = { 4, 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form3X5TypeA = { - { - type = "Line50Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {2, 2, 2, 2, 3}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {1, 2, 3, 2, 3}, - {3, 2, 1, 2, 1}, - {1, 1, 1, 1, 2}, - {3, 3, 3, 3, 2}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 2, 1}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {2, 2, 1, 1, 1}, - {2, 2, 3, 3, 3}, - {2, 1, 1, 2, 3}, - {2, 3, 3, 2, 1}, - {2, 1, 2, 3, 3}, - {2, 3, 2, 1, 1}, - {3, 2, 1, 1, 2}, - {1, 2, 3, 3, 2}, - {1, 1, 2, 3, 2}, - {3, 3, 2, 1, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 2, 2, 2, 2, 3 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 1, 2, 3, 2, 3 }, + { 3, 2, 1, 2, 1 }, + { 1, 1, 1, 1, 2 }, + { 3, 3, 3, 3, 2 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 2, 1 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 3, 3, 3 }, + { 2, 1, 1, 2, 3 }, + { 2, 3, 3, 2, 1 }, + { 2, 1, 2, 3, 3 }, + { 2, 3, 2, 1, 1 }, + { 3, 2, 1, 1, 2 }, + { 1, 2, 3, 3, 2 }, + { 1, 1, 2, 3, 2 }, + { 3, 3, 2, 1, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeB = { - { - type = "Line50Form3X5TypeB", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 3, 2, 1, 3}, - {3, 1, 2, 3, 1}, - {2, 1, 3, 2, 3}, - {1, 3, 2, 3, 1}, - {3, 2, 1, 1, 2}, - {1, 2, 3, 3, 2}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 1, 1}, - {3, 1, 1, 2, 3}, - {2, 3, 3, 1, 1}, - {1, 1, 2, 2, 3}, - {3, 3, 1, 2, 1}, - {3, 3, 1, 1, 1}, - {3, 3, 2, 3, 2}, - {1, 1, 3, 2, 1}, - {2, 2, 1, 2, 3}, - {2, 1, 1, 3, 2}, - {2, 3, 1, 1, 3}, - {3, 1, 1, 3, 1}, - {1, 2, 2, 3, 2}, - {1, 2, 3, 1, 3}, - {1, 3, 1, 2, 3}, - {2, 2, 3, 3, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeB", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 2, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 2, 1, 3, 2, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 2, 1, 1, 2 }, + { 1, 2, 3, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 1, 1 }, + { 3, 1, 1, 2, 3 }, + { 2, 3, 3, 1, 1 }, + { 1, 1, 2, 2, 3 }, + { 3, 3, 1, 2, 1 }, + { 3, 3, 1, 1, 1 }, + { 3, 3, 2, 3, 2 }, + { 1, 1, 3, 2, 1 }, + { 2, 2, 1, 2, 3 }, + { 2, 1, 1, 3, 2 }, + { 2, 3, 1, 1, 3 }, + { 3, 1, 1, 3, 1 }, + { 1, 2, 2, 3, 2 }, + { 1, 2, 3, 1, 3 }, + { 1, 3, 1, 2, 3 }, + { 2, 2, 3, 3, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeC = { - { - type = "Line50Form3X5TypeC", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {2, 2, 2, 1, 3}, - {2, 2, 2, 3, 1}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {3, 3, 2, 1, 2}, - {1, 1, 2, 3, 2}, - {3, 2, 3, 3, 3}, - {1, 2, 1, 1, 1}, - {1, 2, 3, 2, 2}, - {3, 2, 1, 2, 2}, - {2, 1, 2, 1, 1}, - {2, 3, 2, 3, 3}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - {2, 1, 1, 1, 1}, - {2, 3, 3, 3, 3}, - {2, 2, 2, 2, 1}, - {2, 2, 2, 2, 3}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 1, 2, 1}, - {3, 3, 3, 2, 3}, - {2, 2, 1, 1, 1}, - {2, 2, 3, 3, 3}, - {1, 1, 2, 2, 1}, - {3, 3, 2, 2, 3}, - {3, 2, 1, 2, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeC", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 2, 2, 2, 1, 3 }, + { 2, 2, 2, 3, 1 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 3, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 2 }, + { 3, 2, 3, 3, 3 }, + { 1, 2, 1, 1, 1 }, + { 1, 2, 3, 2, 2 }, + { 3, 2, 1, 2, 2 }, + { 2, 1, 2, 1, 1 }, + { 2, 3, 2, 3, 3 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + { 2, 1, 1, 1, 1 }, + { 2, 3, 3, 3, 3 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 2, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 1, 2, 1 }, + { 3, 3, 3, 2, 3 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 3, 3, 3 }, + { 1, 1, 2, 2, 1 }, + { 3, 3, 2, 2, 3 }, + { 3, 2, 1, 2, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeD = { - { - type = "Line50Form3X5TypeD", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {3, 1, 2, 3, 1}, - {1, 3, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {3, 2, 1, 1, 2}, - {1, 2, 3, 3, 2}, - {1, 1, 3, 3, 3}, - {3, 3, 1, 1, 1}, - {2, 1, 3, 2, 3}, - {2, 3, 1, 2, 1}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 2, 1}, - {2, 3, 3, 1, 1}, - {1, 1, 2, 2, 3}, - {3, 3, 2, 2, 1}, - {3, 1, 1, 1, 1}, - {1, 3, 3, 3, 3}, - {3, 3, 3, 3, 1}, - {1, 1, 1, 1, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeD", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 1, 3, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 3, 2, 1, 1, 2 }, + { 1, 2, 3, 3, 2 }, + { 1, 1, 3, 3, 3 }, + { 3, 3, 1, 1, 1 }, + { 2, 1, 3, 2, 3 }, + { 2, 3, 1, 2, 1 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 2, 1 }, + { 2, 3, 3, 1, 1 }, + { 1, 1, 2, 2, 3 }, + { 3, 3, 2, 2, 1 }, + { 3, 1, 1, 1, 1 }, + { 1, 3, 3, 3, 3 }, + { 3, 3, 3, 3, 1 }, + { 1, 1, 1, 1, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeE = { - { - type = "Line50Form3X5TypeE", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 2, 1}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 1, 1, 1, 2}, - {2, 2, 2, 2, 1}, - {2, 2, 2, 2, 3}, - {3, 3, 3, 3, 2}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - {2, 1, 1, 1, 1}, - {2, 3, 3, 3, 3}, - {1, 1, 2, 2, 3}, - {3, 3, 2, 2, 1}, - {1, 1, 2, 3, 2}, - {3, 3, 2, 1, 2}, - {1, 2, 3, 2, 3}, - {3, 2, 1, 2, 1}, - {2, 1, 1, 2, 3}, - {2, 3, 3, 2, 1}, - {1, 3, 1, 3, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeE", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 2, 1 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 1, 1, 1, 2 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 2, 2, 3 }, + { 3, 3, 3, 3, 2 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + { 2, 1, 1, 1, 1 }, + { 2, 3, 3, 3, 3 }, + { 1, 1, 2, 2, 3 }, + { 3, 3, 2, 2, 1 }, + { 1, 1, 2, 3, 2 }, + { 3, 3, 2, 1, 2 }, + { 1, 2, 3, 2, 3 }, + { 3, 2, 1, 2, 1 }, + { 2, 1, 1, 2, 3 }, + { 2, 3, 3, 2, 1 }, + { 1, 3, 1, 3, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeF = { - { - type = "Line50Form3X5TypeF", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 2, 3, 2}, - {2, 3, 2, 1, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {2, 2, 2, 1, 2}, - {2, 2, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {3, 3, 2, 1, 2}, - {1, 1, 2, 3, 2}, - {3, 2, 3, 3, 3}, - {1, 2, 1, 1, 1}, - {1, 2, 3, 2, 2}, - {3, 2, 1, 2, 2}, - {2, 1, 2, 1, 1}, - {2, 3, 2, 3, 3}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - {2, 1, 1, 1, 1}, - {2, 3, 3, 3, 3}, - {2, 2, 2, 2, 1}, - {2, 2, 2, 2, 3}, - {1, 1, 2, 1, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 1, 2, 1}, - {3, 3, 3, 2, 3}, - {2, 2, 1, 1, 1}, - {2, 2, 3, 3, 3}, - {1, 1, 2, 2, 1}, - {3, 3, 2, 2, 3}, - {3, 2, 1, 2, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeF", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 2, 3, 2 }, + { 2, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 2, 2, 2, 1, 2 }, + { 2, 2, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 3, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 2 }, + { 3, 2, 3, 3, 3 }, + { 1, 2, 1, 1, 1 }, + { 1, 2, 3, 2, 2 }, + { 3, 2, 1, 2, 2 }, + { 2, 1, 2, 1, 1 }, + { 2, 3, 2, 3, 3 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + { 2, 1, 1, 1, 1 }, + { 2, 3, 3, 3, 3 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 2, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 1, 2, 1 }, + { 3, 3, 3, 2, 3 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 3, 3, 3 }, + { 1, 1, 2, 2, 1 }, + { 3, 3, 2, 2, 3 }, + { 3, 2, 1, 2, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeG = { - { - type = "Line50Form3X5TypeG", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 3, 2, 3, 3}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {2, 1, 1, 2, 3}, - {2, 3, 3, 2, 1}, - {2, 2, 2, 3, 2}, - {2, 2, 2, 1, 2}, - {1, 1, 1, 1, 2}, - {3, 3, 3, 3, 2}, - {2, 2, 2, 2, 3}, - {2, 2, 2, 2, 1}, - {2, 2, 1, 1, 1}, - {2, 2, 3, 3, 3}, - {1, 1, 1, 2, 2}, - {3, 3, 3, 2, 2}, - {2, 1, 1, 1, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeG", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 2, 1, 1, 2, 3 }, + { 2, 3, 3, 2, 1 }, + { 2, 2, 2, 3, 2 }, + { 2, 2, 2, 1, 2 }, + { 1, 1, 1, 1, 2 }, + { 3, 3, 3, 3, 2 }, + { 2, 2, 2, 2, 3 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 3, 3, 3 }, + { 1, 1, 1, 2, 2 }, + { 3, 3, 3, 2, 2 }, + { 2, 1, 1, 1, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form3X5TypeH = { - { - type = "Line50Form3X5TypeH", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 3, 2, 3, 3}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {1, 1, 1, 2, 3}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {2, 1, 1, 2, 3}, - {2, 3, 3, 2, 1}, - {2, 2, 2, 3, 2}, - {2, 2, 2, 1, 2}, - {1, 1, 1, 1, 2}, - {3, 3, 3, 3, 2}, - {2, 2, 2, 2, 3}, - {2, 2, 2, 2, 1}, - {2, 2, 1, 1, 1}, - {2, 2, 3, 3, 3}, - {1, 1, 1, 2, 2}, - {3, 3, 3, 2, 2}, - {2, 1, 1, 1, 1}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line50Form3X5TypeH", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 1, 1, 1, 2, 3 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 2, 1, 1, 2, 3 }, + { 2, 3, 3, 2, 1 }, + { 2, 2, 2, 3, 2 }, + { 2, 2, 2, 1, 2 }, + { 1, 1, 1, 1, 2 }, + { 3, 3, 3, 3, 2 }, + { 2, 2, 2, 2, 3 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 3, 3, 3 }, + { 1, 1, 1, 2, 2 }, + { 3, 3, 3, 2, 2 }, + { 2, 1, 1, 1, 1 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine50Form45454TypeA = { - { - type = "Line50Form45454TypeA", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {1, 1, 1, 1, 1}, - {1, 1, 1, 2, 1}, - {1, 1, 1, 2, 2}, - {1, 2, 1, 1, 1}, - {1, 2, 1, 2, 1}, - {1, 2, 1, 2, 2}, - {1, 2, 2, 2, 1}, - {1, 2, 2, 2, 2}, - {1, 2, 2, 3, 2}, - {1, 2, 2, 3, 3}, - {2, 2, 1, 1, 1}, - {2, 2, 1, 2, 1}, - {2, 2, 1, 2, 2}, - {2, 2, 2, 2, 1}, - {2, 2, 2, 2, 2}, - {2, 2, 2, 3, 2}, - {2, 2, 2, 3, 3}, - {2, 2, 2, 2, 1}, - {2, 3, 2, 2, 2}, - {2, 3, 2, 3, 2}, - {2, 3, 2, 3, 3}, - {2, 3, 3, 3, 2}, - {2, 3, 3, 3, 3}, - {2, 3, 3, 4, 3}, - {2, 3, 3, 4, 4}, - {3, 3, 2, 2, 1}, - {3, 3, 2, 2, 2}, - {3, 3, 2, 3, 2}, - {3, 3, 2, 3, 3}, - {3, 3, 3, 3, 2}, - {3, 3, 3, 3, 3}, - {3, 3, 3, 4, 3}, - {3, 3, 3, 4, 4}, - {3, 4, 3, 3, 2}, - {3, 4, 3, 3, 3}, - {3, 4, 3, 4, 3}, - {3, 4, 3, 4, 4}, - {3, 4, 4, 4, 3}, - {3, 4, 4, 4, 4}, - {3, 4, 4, 5, 4}, - {4, 4, 3, 3, 2}, - {4, 4, 3, 3, 3}, - {4, 4, 3, 4, 3}, - {4, 4, 3, 4, 4}, - {4, 4, 4, 4, 3}, - {4, 4, 4, 4, 4}, - {4, 4, 4, 5, 4}, - {4, 5, 4, 4, 3}, - {4, 5, 4, 4, 4}, - {4, 5, 4, 5, 4}, - }, - form = {4, 5, 4, 5, 4}, - }, + { + type = "Line50Form45454TypeA", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 1, 1, 1, 1, 1 }, + { 1, 1, 1, 2, 1 }, + { 1, 1, 1, 2, 2 }, + { 1, 2, 1, 1, 1 }, + { 1, 2, 1, 2, 1 }, + { 1, 2, 1, 2, 2 }, + { 1, 2, 2, 2, 1 }, + { 1, 2, 2, 2, 2 }, + { 1, 2, 2, 3, 2 }, + { 1, 2, 2, 3, 3 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 1, 2, 1 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 2, 2, 1 }, + { 2, 2, 2, 2, 2 }, + { 2, 2, 2, 3, 2 }, + { 2, 2, 2, 3, 3 }, + { 2, 2, 2, 2, 1 }, + { 2, 3, 2, 2, 2 }, + { 2, 3, 2, 3, 2 }, + { 2, 3, 2, 3, 3 }, + { 2, 3, 3, 3, 2 }, + { 2, 3, 3, 3, 3 }, + { 2, 3, 3, 4, 3 }, + { 2, 3, 3, 4, 4 }, + { 3, 3, 2, 2, 1 }, + { 3, 3, 2, 2, 2 }, + { 3, 3, 2, 3, 2 }, + { 3, 3, 2, 3, 3 }, + { 3, 3, 3, 3, 2 }, + { 3, 3, 3, 3, 3 }, + { 3, 3, 3, 4, 3 }, + { 3, 3, 3, 4, 4 }, + { 3, 4, 3, 3, 2 }, + { 3, 4, 3, 3, 3 }, + { 3, 4, 3, 4, 3 }, + { 3, 4, 3, 4, 4 }, + { 3, 4, 4, 4, 3 }, + { 3, 4, 4, 4, 4 }, + { 3, 4, 4, 5, 4 }, + { 4, 4, 3, 3, 2 }, + { 4, 4, 3, 3, 3 }, + { 4, 4, 3, 4, 3 }, + { 4, 4, 3, 4, 4 }, + { 4, 4, 4, 4, 3 }, + { 4, 4, 4, 4, 4 }, + { 4, 4, 4, 5, 4 }, + { 4, 5, 4, 4, 3 }, + { 4, 5, 4, 4, 4 }, + { 4, 5, 4, 5, 4 }, + }, + form = { 4, 5, 4, 5, 4 }, + }, } _.MatrixLine50Form4X5TypeA = { - { - type = "Line50Form4X5TypeA", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 3, 3, 3, 4}, - {3, 2, 2, 2, 3}, - {2, 1, 1, 1, 2}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {4, 3, 2, 3, 4}, - {3, 2, 1, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 3, 4, 4}, - {3, 3, 2, 3, 3}, - {2, 2, 1, 2, 2}, - {1, 4, 1, 4, 1}, - {4, 1, 4, 1, 4}, - {4, 2, 4, 2, 4}, - {3, 1, 3, 1, 3}, - {1, 3, 1, 3, 1}, - {2, 4, 2, 4, 2}, - {4, 3, 3, 2, 1}, - {1, 2, 2, 3, 4}, - {1, 2, 3, 3, 4}, - {4, 3, 2, 2, 1}, - {2, 1, 4, 3, 2}, - {3, 4, 1, 2, 3}, - {4, 4, 1, 4, 4}, - {1, 1, 4, 1, 1}, - {4, 1, 1, 1, 4}, - {1, 4, 4, 4, 1}, - {4, 2, 2, 2, 4}, - {1, 3, 3, 3, 1}, - {4, 2, 3, 2, 4}, - {1, 3, 2, 3, 1}, - {4, 1, 2, 1, 4}, - {1, 4, 2, 4, 1}, - {4, 4, 2, 4, 4}, - {1, 1, 3, 1, 1}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X5TypeA", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 3, 3, 3, 4 }, + { 3, 2, 2, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 4, 3, 2, 3, 4 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 3, 3, 2, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 1, 4, 1, 4, 1 }, + { 4, 1, 4, 1, 4 }, + { 4, 2, 4, 2, 4 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 1, 3, 1 }, + { 2, 4, 2, 4, 2 }, + { 4, 3, 3, 2, 1 }, + { 1, 2, 2, 3, 4 }, + { 1, 2, 3, 3, 4 }, + { 4, 3, 2, 2, 1 }, + { 2, 1, 4, 3, 2 }, + { 3, 4, 1, 2, 3 }, + { 4, 4, 1, 4, 4 }, + { 1, 1, 4, 1, 1 }, + { 4, 1, 1, 1, 4 }, + { 1, 4, 4, 4, 1 }, + { 4, 2, 2, 2, 4 }, + { 1, 3, 3, 3, 1 }, + { 4, 2, 3, 2, 4 }, + { 1, 3, 2, 3, 1 }, + { 4, 1, 2, 1, 4 }, + { 1, 4, 2, 4, 1 }, + { 4, 4, 2, 4, 4 }, + { 1, 1, 3, 1, 1 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form4X5TypeB = { - { - type = "Line50Form4X5TypeB", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {2, 1, 2, 3, 2}, - {3, 2, 3, 4, 3}, - {2, 3, 2, 1, 2}, - {3, 4, 3, 2, 3}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {2, 2, 4, 2, 2}, - {3, 3, 1, 3, 3}, - {4, 4, 2, 4, 4}, - {1, 1, 1, 2, 3}, - {4, 4, 4, 3, 2}, - {2, 2, 2, 3, 4}, - {3, 3, 3, 2, 1}, - {1, 1, 1, 1, 2}, - {4, 4, 4, 4, 3}, - {1, 2, 3, 4, 3}, - {1, 2, 3, 4, 4}, - {4, 3, 2, 1, 1}, - {4, 3, 2, 1, 2}, - {1, 1, 2, 3, 4}, - {4, 4, 3, 2, 1}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X5TypeB", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 2, 1, 2, 3, 2 }, + { 3, 2, 3, 4, 3 }, + { 2, 3, 2, 1, 2 }, + { 3, 4, 3, 2, 3 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 2, 2, 4, 2, 2 }, + { 3, 3, 1, 3, 3 }, + { 4, 4, 2, 4, 4 }, + { 1, 1, 1, 2, 3 }, + { 4, 4, 4, 3, 2 }, + { 2, 2, 2, 3, 4 }, + { 3, 3, 3, 2, 1 }, + { 1, 1, 1, 1, 2 }, + { 4, 4, 4, 4, 3 }, + { 1, 2, 3, 4, 3 }, + { 1, 2, 3, 4, 4 }, + { 4, 3, 2, 1, 1 }, + { 4, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 4 }, + { 4, 4, 3, 2, 1 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form4X5TypeC = { - { - type = "Line50Form4X5TypeC", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {4, 3, 2, 3, 4}, - {3, 4, 3, 4, 3}, - {2, 1, 2, 1, 2}, - {2, 2, 3, 4, 4}, - {3, 3, 2, 1, 1}, - {4, 3, 3, 3, 4}, - {1, 2, 2, 2, 1}, - {2, 3, 2, 1, 2}, - {3, 2, 3, 4, 3}, - {2, 1, 1, 2, 3}, - {3, 4, 4, 3, 2}, - {2, 3, 3, 3, 2}, - {3, 2, 2, 2, 3}, - {3, 3, 4, 3, 2}, - {2, 2, 1, 2, 3}, - {1, 2, 1, 2, 1}, - {4, 3, 4, 3, 4}, - {1, 1, 2, 1, 1}, - {4, 4, 3, 4, 4}, - {2, 2, 3, 2, 2}, - {3, 3, 2, 3, 3}, - {1, 1, 2, 3, 3}, - {4, 4, 3, 2, 2}, - {2, 3, 2, 3, 2}, - {3, 2, 3, 2, 3}, - {3, 4, 3, 2, 3}, - {2, 1, 2, 3, 2}, - {2, 1, 1, 1, 2}, - {3, 4, 4, 4, 3}, - {2, 2, 2, 3, 4}, - {3, 3, 3, 2, 1}, - {1, 2, 3, 4, 3}, - {4, 3, 2, 1, 2}, - {2, 3, 4, 4, 4}, - {3, 2, 1, 1, 1}, - {1, 1, 1, 2, 3}, - {4, 4, 4, 3, 2}, - {4, 3, 3, 2, 1}, - {1, 2, 2, 3, 4}, - {2, 3, 3, 4, 4}, - {3, 2, 2, 1, 1}, - {1, 2, 1, 2, 3}, - {4, 3, 4, 3, 2}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X5TypeC", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 4, 3, 2, 3, 4 }, + { 3, 4, 3, 4, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 2, 1, 1 }, + { 4, 3, 3, 3, 4 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 2, 1, 2 }, + { 3, 2, 3, 4, 3 }, + { 2, 1, 1, 2, 3 }, + { 3, 4, 4, 3, 2 }, + { 2, 3, 3, 3, 2 }, + { 3, 2, 2, 2, 3 }, + { 3, 3, 4, 3, 2 }, + { 2, 2, 1, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 4, 3, 4, 3, 4 }, + { 1, 1, 2, 1, 1 }, + { 4, 4, 3, 4, 4 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 2, 3, 3 }, + { 4, 4, 3, 2, 2 }, + { 2, 3, 2, 3, 2 }, + { 3, 2, 3, 2, 3 }, + { 3, 4, 3, 2, 3 }, + { 2, 1, 2, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 3, 4, 4, 4, 3 }, + { 2, 2, 2, 3, 4 }, + { 3, 3, 3, 2, 1 }, + { 1, 2, 3, 4, 3 }, + { 4, 3, 2, 1, 2 }, + { 2, 3, 4, 4, 4 }, + { 3, 2, 1, 1, 1 }, + { 1, 1, 1, 2, 3 }, + { 4, 4, 4, 3, 2 }, + { 4, 3, 3, 2, 1 }, + { 1, 2, 2, 3, 4 }, + { 2, 3, 3, 4, 4 }, + { 3, 2, 2, 1, 1 }, + { 1, 2, 1, 2, 3 }, + { 4, 3, 4, 3, 2 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form4X5TypeD = { - { - type = "Line50Form4X5TypeD", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {2, 1, 2, 3, 2}, - {3, 2, 3, 4, 3}, - {2, 3, 2, 1, 2}, - {3, 4, 3, 2, 3}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {2, 2, 4, 2, 2}, - {3, 3, 1, 3, 3}, - {4, 4, 2, 4, 4}, - {1, 1, 1, 2, 3}, - {4, 4, 4, 3, 2}, - {2, 2, 2, 3, 4}, - {3, 3, 3, 2, 1}, - {1, 1, 1, 1, 2}, - {4, 4, 4, 4, 3}, - {1, 2, 3, 4, 3}, - {1, 2, 3, 4, 4}, - {4, 3, 2, 1, 1}, - {4, 3, 2, 1, 2}, - {1, 1, 2, 3, 4}, - {4, 4, 3, 2, 1}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X5TypeD", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 2, 1, 2, 3, 2 }, + { 3, 2, 3, 4, 3 }, + { 2, 3, 2, 1, 2 }, + { 3, 4, 3, 2, 3 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 2, 2, 4, 2, 2 }, + { 3, 3, 1, 3, 3 }, + { 4, 4, 2, 4, 4 }, + { 1, 1, 1, 2, 3 }, + { 4, 4, 4, 3, 2 }, + { 2, 2, 2, 3, 4 }, + { 3, 3, 3, 2, 1 }, + { 1, 1, 1, 1, 2 }, + { 4, 4, 4, 4, 3 }, + { 1, 2, 3, 4, 3 }, + { 1, 2, 3, 4, 4 }, + { 4, 3, 2, 1, 1 }, + { 4, 3, 2, 1, 2 }, + { 1, 1, 2, 3, 4 }, + { 4, 4, 3, 2, 1 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form4X5TypeE = { - { - type = "Line50Form4X5TypeE", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {1, 1, 1, 1, 1}, - {1, 1, 2, 1, 1}, - {1, 2, 2, 2, 1}, - {1, 2, 3, 2, 1}, - {1, 2, 1, 2, 1}, - {1, 1, 1, 2, 1}, - {1, 2, 1, 1, 1}, - {1, 1, 2, 2, 1}, - {1, 2, 2, 1, 1}, - {1, 1, 3, 1, 1}, - {1, 1, 3, 2, 1}, - {1, 2, 3, 1, 1}, - {2, 2, 2, 2, 2}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {2, 3, 3, 3, 2}, - {2, 1, 1, 1, 2}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {2, 2, 2, 3, 2}, - {2, 2, 2, 1, 2}, - {2, 3, 2, 2, 2}, - {2, 1, 2, 2, 2}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {3, 3, 3, 3, 3}, - {3, 3, 4, 3, 3}, - {3, 3, 2, 3, 3}, - {3, 4, 4, 4, 3}, - {3, 2, 2, 2, 3}, - {3, 4, 3, 4, 3}, - {3, 2, 3, 2, 3}, - {3, 3, 3, 4, 3}, - {3, 3, 3, 2, 3}, - {3, 4, 3, 3, 3}, - {3, 2, 3, 3, 3}, - {3, 4, 2, 4, 3}, - {3, 2, 4, 2, 3}, - {4, 4, 4, 4, 4}, - {4, 4, 3, 4, 4}, - {4, 3, 3, 3, 4}, - {4, 3, 2, 3, 4}, - {4, 3, 4, 3, 4}, - {4, 4, 4, 3, 4}, - {4, 3, 4, 4, 4}, - {4, 4, 3, 3, 4}, - {4, 3, 3, 4, 4}, - {4, 4, 2, 4, 4}, - {4, 4, 2, 3, 4}, - {4, 3, 2, 4, 4}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X5TypeE", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 1, 1, 1, 1, 1 }, + { 1, 1, 2, 1, 1 }, + { 1, 2, 2, 2, 1 }, + { 1, 2, 3, 2, 1 }, + { 1, 2, 1, 2, 1 }, + { 1, 1, 1, 2, 1 }, + { 1, 2, 1, 1, 1 }, + { 1, 1, 2, 2, 1 }, + { 1, 2, 2, 1, 1 }, + { 1, 1, 3, 1, 1 }, + { 1, 1, 3, 2, 1 }, + { 1, 2, 3, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 2, 3, 3, 3, 2 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 2, 2, 3, 2 }, + { 2, 2, 2, 1, 2 }, + { 2, 3, 2, 2, 2 }, + { 2, 1, 2, 2, 2 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 3, 3, 3, 3, 3 }, + { 3, 3, 4, 3, 3 }, + { 3, 3, 2, 3, 3 }, + { 3, 4, 4, 4, 3 }, + { 3, 2, 2, 2, 3 }, + { 3, 4, 3, 4, 3 }, + { 3, 2, 3, 2, 3 }, + { 3, 3, 3, 4, 3 }, + { 3, 3, 3, 2, 3 }, + { 3, 4, 3, 3, 3 }, + { 3, 2, 3, 3, 3 }, + { 3, 4, 2, 4, 3 }, + { 3, 2, 4, 2, 3 }, + { 4, 4, 4, 4, 4 }, + { 4, 4, 3, 4, 4 }, + { 4, 3, 3, 3, 4 }, + { 4, 3, 2, 3, 4 }, + { 4, 3, 4, 3, 4 }, + { 4, 4, 4, 3, 4 }, + { 4, 3, 4, 4, 4 }, + { 4, 4, 3, 3, 4 }, + { 4, 3, 3, 4, 4 }, + { 4, 4, 2, 4, 4 }, + { 4, 4, 2, 3, 4 }, + { 4, 3, 2, 4, 4 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form4X5TypeF = { - { - type = "Line50Form4X5TypeF", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4}, - {1, 2, 3, 4, 3}, - {4, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {3, 4, 3, 2, 3}, - {2, 3, 4, 4, 4}, - {3, 2, 1, 1, 1}, - {2, 3, 3, 4, 4}, - {3, 2, 2, 1, 1}, - {2, 2, 1, 2, 2}, - {3, 3, 4, 3, 3}, - {1, 2, 2, 2, 1}, - {4, 3, 3, 3, 4}, - {2, 1, 1, 1, 2}, - {3, 4, 4, 4, 3}, - {1, 1, 2, 1, 1}, - {4, 4, 3, 4, 4}, - {1, 1, 2, 3, 4}, - {4, 4, 3, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {4, 3, 4, 3, 4}, - {2, 1, 2, 1, 2}, - {3, 4, 3, 4, 3}, - {1, 1, 1, 2, 2}, - {4, 4, 4, 3, 3}, - {2, 2, 2, 3, 4}, - {3, 3, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {4, 3, 2, 3, 4}, - {2, 2, 3, 3, 4}, - {3, 3, 2, 2, 1}, - {2, 2, 1, 1, 2}, - {3, 3, 4, 4, 3}, - {1, 2, 1, 1, 2}, - {4, 3, 4, 4, 3}, - {2, 3, 3, 3, 2}, - {3, 2, 2, 2, 3}, - {2, 1, 1, 2, 1}, - {3, 4, 4, 3, 4}, - {1, 2, 2, 1, 2}, - {4, 3, 3, 4, 3}, - {2, 3, 2, 1, 1}, - {3, 2, 3, 4, 4}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X5TypeF", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4 }, + { 1, 2, 3, 4, 3 }, + { 4, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 3, 4, 3, 2, 3 }, + { 2, 3, 4, 4, 4 }, + { 3, 2, 1, 1, 1 }, + { 2, 3, 3, 4, 4 }, + { 3, 2, 2, 1, 1 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 1, 2, 2, 2, 1 }, + { 4, 3, 3, 3, 4 }, + { 2, 1, 1, 1, 2 }, + { 3, 4, 4, 4, 3 }, + { 1, 1, 2, 1, 1 }, + { 4, 4, 3, 4, 4 }, + { 1, 1, 2, 3, 4 }, + { 4, 4, 3, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 4, 3, 4, 3, 4 }, + { 2, 1, 2, 1, 2 }, + { 3, 4, 3, 4, 3 }, + { 1, 1, 1, 2, 2 }, + { 4, 4, 4, 3, 3 }, + { 2, 2, 2, 3, 4 }, + { 3, 3, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 4, 3, 2, 3, 4 }, + { 2, 2, 3, 3, 4 }, + { 3, 3, 2, 2, 1 }, + { 2, 2, 1, 1, 2 }, + { 3, 3, 4, 4, 3 }, + { 1, 2, 1, 1, 2 }, + { 4, 3, 4, 4, 3 }, + { 2, 3, 3, 3, 2 }, + { 3, 2, 2, 2, 3 }, + { 2, 1, 1, 2, 1 }, + { 3, 4, 4, 3, 4 }, + { 1, 2, 2, 1, 2 }, + { 4, 3, 3, 4, 3 }, + { 2, 3, 2, 1, 1 }, + { 3, 2, 3, 4, 4 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form4X6TypeA = { - { - type = "Line50Form4X6TypeA", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {2, 2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1, 1}, - {4, 4, 4, 4, 4, 4}, - {1, 2, 3, 3, 2, 1}, - {4, 3, 2, 2, 3, 4}, - {2, 3, 4, 4, 3, 2}, - {3, 2, 1, 1, 2, 3}, - {1, 2, 1, 1, 2, 1}, - {4, 3, 4, 4, 3, 4}, - {2, 1, 2, 2, 1, 2}, - {3, 4, 3, 3, 4, 3}, - {2, 3, 2, 2, 3, 2}, - {3, 2, 3, 3, 2, 3}, - {1, 1, 2, 2, 1, 1}, - {4, 4, 3, 3, 4, 4}, - {2, 2, 3, 3, 2, 2}, - {3, 3, 2, 2, 3, 3}, - {3, 3, 4, 4, 3, 3}, - {2, 2, 1, 1, 2, 2}, - {2, 3, 3, 3, 3, 2}, - {3, 2, 2, 2, 2, 3}, - {2, 1, 1, 1, 1, 2}, - {3, 4, 4, 4, 4, 3}, - {4, 3, 3, 3, 3, 4}, - {1, 2, 2, 2, 2, 1}, - {3, 1, 1, 1, 1, 3}, - {2, 4, 4, 4, 4, 2}, - {4, 2, 2, 2, 2, 4}, - {1, 3, 3, 3, 3, 1}, - {3, 3, 1, 1, 3, 3}, - {2, 2, 4, 4, 2, 2}, - {1, 1, 3, 3, 1, 1}, - {4, 4, 2, 2, 4, 4}, - {4, 4, 1, 1, 4, 4}, - {1, 1, 4, 4, 1, 1}, - {4, 3, 2, 1, 1, 1}, - {1, 2, 3, 4, 4, 4}, - {1, 1, 1, 2, 3, 4}, - {4, 4, 4, 3, 2, 1}, - {3, 2, 1, 1, 1, 1}, - {2, 3, 4, 4, 4, 4}, - {1, 1, 1, 1, 2, 3}, - {4, 4, 4, 4, 3, 2}, - {4, 3, 2, 2, 2, 2}, - {1, 2, 3, 3, 3, 3}, - {2, 2, 2, 2, 3, 4}, - {3, 3, 3, 3, 2, 1}, - {2, 4, 1, 1, 4, 2}, - {3, 1, 4, 4, 1, 3}, - }, - form = {4, 4, 4, 4, 4, 4}, - }, + { + type = "Line50Form4X6TypeA", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1, 1 }, + { 4, 4, 4, 4, 4, 4 }, + { 1, 2, 3, 3, 2, 1 }, + { 4, 3, 2, 2, 3, 4 }, + { 2, 3, 4, 4, 3, 2 }, + { 3, 2, 1, 1, 2, 3 }, + { 1, 2, 1, 1, 2, 1 }, + { 4, 3, 4, 4, 3, 4 }, + { 2, 1, 2, 2, 1, 2 }, + { 3, 4, 3, 3, 4, 3 }, + { 2, 3, 2, 2, 3, 2 }, + { 3, 2, 3, 3, 2, 3 }, + { 1, 1, 2, 2, 1, 1 }, + { 4, 4, 3, 3, 4, 4 }, + { 2, 2, 3, 3, 2, 2 }, + { 3, 3, 2, 2, 3, 3 }, + { 3, 3, 4, 4, 3, 3 }, + { 2, 2, 1, 1, 2, 2 }, + { 2, 3, 3, 3, 3, 2 }, + { 3, 2, 2, 2, 2, 3 }, + { 2, 1, 1, 1, 1, 2 }, + { 3, 4, 4, 4, 4, 3 }, + { 4, 3, 3, 3, 3, 4 }, + { 1, 2, 2, 2, 2, 1 }, + { 3, 1, 1, 1, 1, 3 }, + { 2, 4, 4, 4, 4, 2 }, + { 4, 2, 2, 2, 2, 4 }, + { 1, 3, 3, 3, 3, 1 }, + { 3, 3, 1, 1, 3, 3 }, + { 2, 2, 4, 4, 2, 2 }, + { 1, 1, 3, 3, 1, 1 }, + { 4, 4, 2, 2, 4, 4 }, + { 4, 4, 1, 1, 4, 4 }, + { 1, 1, 4, 4, 1, 1 }, + { 4, 3, 2, 1, 1, 1 }, + { 1, 2, 3, 4, 4, 4 }, + { 1, 1, 1, 2, 3, 4 }, + { 4, 4, 4, 3, 2, 1 }, + { 3, 2, 1, 1, 1, 1 }, + { 2, 3, 4, 4, 4, 4 }, + { 1, 1, 1, 1, 2, 3 }, + { 4, 4, 4, 4, 3, 2 }, + { 4, 3, 2, 2, 2, 2 }, + { 1, 2, 3, 3, 3, 3 }, + { 2, 2, 2, 2, 3, 4 }, + { 3, 3, 3, 3, 2, 1 }, + { 2, 4, 1, 1, 4, 2 }, + { 3, 1, 4, 4, 1, 3 }, + }, + form = { 4, 4, 4, 4, 4, 4 }, + }, } _.MatrixLine50Form5X5TypeA = { - { - type = "Line50Form5X5TypeA", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {2, 1, 2, 3, 2}, - {3, 2, 3, 4, 3}, - {4, 3, 4, 5, 4}, - {2, 3, 2, 1, 2}, - {3, 4, 3, 2, 3}, - {4, 5, 4, 3, 4}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 4, 5, 5}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {5, 5, 4, 3, 3}, - {1, 1, 3, 1, 1}, - {2, 2, 4, 2, 2}, - {3, 3, 5, 3, 3}, - }, - form = {5, 5, 5, 5, 5}, - }, + { + type = "Line50Form5X5TypeA", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 2, 1, 2, 3, 2 }, + { 3, 2, 3, 4, 3 }, + { 4, 3, 4, 5, 4 }, + { 2, 3, 2, 1, 2 }, + { 3, 4, 3, 2, 3 }, + { 4, 5, 4, 3, 4 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 4, 5, 5 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 5, 5, 4, 3, 3 }, + { 1, 1, 3, 1, 1 }, + { 2, 2, 4, 2, 2 }, + { 3, 3, 5, 3, 3 }, + }, + form = { 5, 5, 5, 5, 5 }, + }, } _.MatrixLine50Form5X5TypeB = { - { - type = "Line50Form5X5TypeB", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {4, 4, 4, 4, 4}, - {3, 3, 3, 3, 3}, - {5, 5, 5, 5, 5}, - {3, 4, 5, 4, 3}, - {5, 4, 3, 4, 5}, - {4, 3, 3, 3, 4}, - {4, 5, 5, 5, 4}, - {3, 3, 4, 5, 5}, - {5, 5, 4, 3, 3}, - {4, 3, 4, 3, 4}, - {4, 5, 4, 5, 4}, - {3, 4, 4, 4, 5}, - {5, 4, 4, 4, 3}, - {4, 4, 3, 4, 5}, - {4, 4, 5, 4, 3}, - {3, 4, 3, 4, 3}, - {5, 4, 5, 4, 5}, - {3, 3, 5, 3, 3}, - {5, 5, 3, 5, 5}, - {4, 3, 5, 3, 4}, - {4, 5, 3, 5, 4}, - {3, 5, 3, 5, 3}, - {5, 3, 5, 3, 5}, - {3, 5, 5, 5, 3}, - {5, 3, 3, 3, 5}, - {3, 5, 4, 5, 3}, - {5, 3, 4, 3, 5}, - {4, 4, 5, 4, 4}, - {4, 4, 3, 4, 4}, - {3, 5, 3, 4, 4}, - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {2, 2, 1, 2, 3}, - {2, 2, 3, 2, 1}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {2, 1, 3, 1, 2}, - {2, 3, 1, 3, 2}, - }, - form = {5, 5, 5, 5, 5}, - }, + { + type = "Line50Form5X5TypeB", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 4, 4, 4, 4, 4 }, + { 3, 3, 3, 3, 3 }, + { 5, 5, 5, 5, 5 }, + { 3, 4, 5, 4, 3 }, + { 5, 4, 3, 4, 5 }, + { 4, 3, 3, 3, 4 }, + { 4, 5, 5, 5, 4 }, + { 3, 3, 4, 5, 5 }, + { 5, 5, 4, 3, 3 }, + { 4, 3, 4, 3, 4 }, + { 4, 5, 4, 5, 4 }, + { 3, 4, 4, 4, 5 }, + { 5, 4, 4, 4, 3 }, + { 4, 4, 3, 4, 5 }, + { 4, 4, 5, 4, 3 }, + { 3, 4, 3, 4, 3 }, + { 5, 4, 5, 4, 5 }, + { 3, 3, 5, 3, 3 }, + { 5, 5, 3, 5, 5 }, + { 4, 3, 5, 3, 4 }, + { 4, 5, 3, 5, 4 }, + { 3, 5, 3, 5, 3 }, + { 5, 3, 5, 3, 5 }, + { 3, 5, 5, 5, 3 }, + { 5, 3, 3, 3, 5 }, + { 3, 5, 4, 5, 3 }, + { 5, 3, 4, 3, 5 }, + { 4, 4, 5, 4, 4 }, + { 4, 4, 3, 4, 4 }, + { 3, 5, 3, 4, 4 }, + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 2, 2, 1, 2, 3 }, + { 2, 2, 3, 2, 1 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 2, 1, 3, 1, 2 }, + { 2, 3, 1, 3, 2 }, + }, + form = { 5, 5, 5, 5, 5 }, + }, } _.MatrixLine50Form5X5TypeC = { - { - type = "Line50Form5X5TypeC", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 4, 5, 5}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {5, 5, 4, 3, 3}, - {1, 1, 2, 3, 4}, - {2, 2, 3, 4, 5}, - {5, 5, 4, 3, 2}, - {4, 4, 3, 2, 1}, - {1, 2, 3, 4, 4}, - {2, 3, 4, 5, 5}, - {5, 4, 3, 2, 2}, - {4, 3, 2, 1, 1}, - {1, 2, 3, 4, 3}, - }, - form = {5, 5, 5, 5, 5}, - }, + { + type = "Line50Form5X5TypeC", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 4, 5, 5 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 5, 5, 4, 3, 3 }, + { 1, 1, 2, 3, 4 }, + { 2, 2, 3, 4, 5 }, + { 5, 5, 4, 3, 2 }, + { 4, 4, 3, 2, 1 }, + { 1, 2, 3, 4, 4 }, + { 2, 3, 4, 5, 5 }, + { 5, 4, 3, 2, 2 }, + { 4, 3, 2, 1, 1 }, + { 1, 2, 3, 4, 3 }, + }, + form = { 5, 5, 5, 5, 5 }, + }, } _.MatrixLine50Form6X5TypeA = { - { - type = "Line50Form6X5TypeA", - link_type = 0, - direction = 0, - line_count = 50, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 4, 5, 5}, - {4, 4, 5, 6, 6}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - }, - form = {6, 6, 6, 6, 6}, - }, + { + type = "Line50Form6X5TypeA", + link_type = 0, + direction = 0, + line_count = 50, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 4, 5, 5 }, + { 4, 4, 5, 6, 6 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + }, + form = { 6, 6, 6, 6, 6 }, + }, } _.MatrixLine5Form3X3TypeA = { - { - type = "Line5Form3X3TypeA", - link_type = 0, - direction = 0, - line_count = 5, - lines = { - {1, 1, 1}, - {2, 2, 2}, - {3, 3, 3}, - {1, 2, 3}, - {3, 2, 1}, - }, - form = {3, 3, 3}, - }, + { + type = "Line5Form3X3TypeA", + link_type = 0, + direction = 0, + line_count = 5, + lines = { + { 1, 1, 1 }, + { 2, 2, 2 }, + { 3, 3, 3 }, + { 1, 2, 3 }, + { 3, 2, 1 }, + }, + form = { 3, 3, 3 }, + }, } _.MatrixLine5Form3X3TypeB = { - { - type = "Line5Form3X3TypeB", - link_type = 0, - direction = 0, - line_count = 5, - lines = { - {2, 2, 2}, - {1, 1, 1}, - {3, 3, 3}, - {1, 2, 3}, - {3, 2, 1}, - }, - form = {3, 3, 3}, - }, + { + type = "Line5Form3X3TypeB", + link_type = 0, + direction = 0, + line_count = 5, + lines = { + { 2, 2, 2 }, + { 1, 1, 1 }, + { 3, 3, 3 }, + { 1, 2, 3 }, + { 3, 2, 1 }, + }, + form = { 3, 3, 3 }, + }, } _.MatrixLine60Form33633TypeA = { - { - type = "Line60Form33633TypeA", - link_type = 0, - direction = 0, - line_count = 60, - lines = { - {2, 2, 3, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 5, 3, 3}, - {1, 2, 5, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 5, 3, 2}, - {1, 1, 3, 3, 3}, - {3, 3, 3, 1, 1}, - {2, 3, 3, 1, 2}, - {2, 1, 3, 3, 2}, - {1, 2, 3, 2, 1}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 5, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 5, 2, 2}, - {1, 1, 5, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 5, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 5, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 5, 1, 3}, - {3, 1, 3, 3, 1}, - {1, 3, 3, 1, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 3, 1, 3}, - {3, 2, 1, 1, 2}, - {2, 2, 4, 2, 2}, - {1, 1, 2, 1, 1}, - {3, 3, 6, 3, 3}, - {1, 2, 6, 2, 1}, - {3, 2, 2, 2, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 6, 3, 2}, - {1, 1, 4, 3, 3}, - {3, 3, 4, 1, 1}, - {2, 3, 4, 1, 2}, - {2, 1, 4, 3, 2}, - {1, 2, 4, 2, 1}, - {3, 2, 4, 2, 3}, - {1, 2, 2, 2, 1}, - {3, 2, 6, 2, 3}, - {2, 2, 2, 2, 2}, - {2, 2, 6, 2, 2}, - {1, 1, 6, 1, 1}, - {3, 3, 2, 3, 3}, - {1, 3, 6, 3, 1}, - {3, 1, 2, 1, 3}, - {2, 3, 2, 3, 2}, - {2, 1, 6, 1, 2}, - {1, 3, 2, 3, 1}, - {3, 1, 6, 1, 3}, - {3, 1, 4, 3, 1}, - {1, 3, 4, 1, 3}, - {1, 3, 4, 3, 1}, - {3, 1, 4, 1, 3}, - {3, 2, 2, 1, 2}, - }, - form = {3, 3, 6, 3, 3}, - }, + { + type = "Line60Form33633TypeA", + link_type = 0, + direction = 0, + line_count = 60, + lines = { + { 2, 2, 3, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 5, 3, 3 }, + { 1, 2, 5, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 5, 3, 2 }, + { 1, 1, 3, 3, 3 }, + { 3, 3, 3, 1, 1 }, + { 2, 3, 3, 1, 2 }, + { 2, 1, 3, 3, 2 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 5, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 5, 2, 2 }, + { 1, 1, 5, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 5, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 5, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 5, 1, 3 }, + { 3, 1, 3, 3, 1 }, + { 1, 3, 3, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 3, 2, 1, 1, 2 }, + { 2, 2, 4, 2, 2 }, + { 1, 1, 2, 1, 1 }, + { 3, 3, 6, 3, 3 }, + { 1, 2, 6, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 6, 3, 2 }, + { 1, 1, 4, 3, 3 }, + { 3, 3, 4, 1, 1 }, + { 2, 3, 4, 1, 2 }, + { 2, 1, 4, 3, 2 }, + { 1, 2, 4, 2, 1 }, + { 3, 2, 4, 2, 3 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 6, 2, 3 }, + { 2, 2, 2, 2, 2 }, + { 2, 2, 6, 2, 2 }, + { 1, 1, 6, 1, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 3, 6, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 6, 1, 2 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 6, 1, 3 }, + { 3, 1, 4, 3, 1 }, + { 1, 3, 4, 1, 3 }, + { 1, 3, 4, 3, 1 }, + { 3, 1, 4, 1, 3 }, + { 3, 2, 2, 1, 2 }, + }, + form = { 3, 3, 6, 3, 3 }, + }, } _.MatrixLine60Form8X5TypeA = { - { - type = "Line60Form8X5TypeA", - link_type = 0, - direction = 0, - line_count = 60, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {8, 8, 8, 8, 8}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {7, 8, 7, 8, 7}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {8, 7, 8, 7, 8}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {6, 7, 8, 7, 6}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {8, 7, 6, 7, 8}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {7, 8, 8, 8, 7}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {8, 7, 7, 7, 8}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {7, 7, 8, 7, 7}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {8, 8, 7, 8, 8}, - }, - form = {8, 8, 8, 8, 8}, - }, + { + type = "Line60Form8X5TypeA", + link_type = 0, + direction = 0, + line_count = 60, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 8, 8, 8, 8, 8 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 7, 8, 7, 8, 7 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 8, 7, 8, 7, 8 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 6, 7, 8, 7, 6 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 8, 7, 6, 7, 8 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 7, 8, 8, 8, 7 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 8, 7, 7, 7, 8 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 7, 7, 8, 7, 7 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 8, 8, 7, 8, 8 }, + }, + form = { 8, 8, 8, 8, 8 }, + }, } _.MatrixLine65Form6X5TypeA = { - { - type = "Line65Form6X5TypeA", - link_type = 0, - direction = 0, - line_count = 65, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 4, 5, 5}, - {4, 4, 5, 6, 6}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {5, 5, 4, 3, 3}, - {6, 6, 5, 4, 4}, - {1, 1, 2, 3, 4}, - {2, 2, 3, 4, 5}, - {3, 3, 4, 5, 6}, - {6, 6, 5, 4, 3}, - {5, 5, 4, 3, 2}, - {4, 4, 3, 2, 1}, - {1, 2, 3, 4, 4}, - {2, 3, 4, 5, 5}, - {3, 4, 5, 6, 6}, - {6, 5, 4, 3, 3}, - {5, 4, 3, 2, 2}, - {4, 3, 2, 1, 1}, - {1, 2, 3, 4, 3}, - }, - form = {6, 6, 6, 6, 6}, - }, + { + type = "Line65Form6X5TypeA", + link_type = 0, + direction = 0, + line_count = 65, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 4, 5, 5 }, + { 4, 4, 5, 6, 6 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 5, 5, 4, 3, 3 }, + { 6, 6, 5, 4, 4 }, + { 1, 1, 2, 3, 4 }, + { 2, 2, 3, 4, 5 }, + { 3, 3, 4, 5, 6 }, + { 6, 6, 5, 4, 3 }, + { 5, 5, 4, 3, 2 }, + { 4, 4, 3, 2, 1 }, + { 1, 2, 3, 4, 4 }, + { 2, 3, 4, 5, 5 }, + { 3, 4, 5, 6, 6 }, + { 6, 5, 4, 3, 3 }, + { 5, 4, 3, 2, 2 }, + { 4, 3, 2, 1, 1 }, + { 1, 2, 3, 4, 3 }, + }, + form = { 6, 6, 6, 6, 6 }, + }, } _.MatrixLine70Form9X5TypeA = { - { - type = "Line70Form9X5TypeA", - link_type = 0, - direction = 0, - line_count = 70, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {8, 8, 8, 8, 8}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {7, 8, 7, 8, 7}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {8, 7, 8, 7, 8}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {6, 7, 8, 7, 6}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {8, 7, 6, 7, 8}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {7, 8, 8, 8, 7}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {8, 7, 7, 7, 8}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {7, 7, 8, 7, 7}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {8, 8, 7, 8, 8}, - {9, 9, 9, 9, 9}, - {8, 9, 8, 9, 8}, - {9, 8, 9, 8, 9}, - {7, 8, 9, 8, 7}, - {9, 8, 7, 8, 9}, - {8, 9, 9, 9, 8}, - {9, 8, 8, 8, 9}, - {8, 8, 9, 8, 8}, - {9, 9, 8, 9, 9}, - {7, 7, 8, 9, 9}, - }, - form = {9, 9, 9, 9, 9}, - }, + { + type = "Line70Form9X5TypeA", + link_type = 0, + direction = 0, + line_count = 70, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 8, 8, 8, 8, 8 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 7, 8, 7, 8, 7 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 8, 7, 8, 7, 8 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 6, 7, 8, 7, 6 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 8, 7, 6, 7, 8 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 7, 8, 8, 8, 7 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 8, 7, 7, 7, 8 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 7, 7, 8, 7, 7 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 8, 8, 7, 8, 8 }, + { 9, 9, 9, 9, 9 }, + { 8, 9, 8, 9, 8 }, + { 9, 8, 9, 8, 9 }, + { 7, 8, 9, 8, 7 }, + { 9, 8, 7, 8, 9 }, + { 8, 9, 9, 9, 8 }, + { 9, 8, 8, 8, 9 }, + { 8, 8, 9, 8, 8 }, + { 9, 9, 8, 9, 9 }, + { 7, 7, 8, 9, 9 }, + }, + form = { 9, 9, 9, 9, 9 }, + }, } _.MatrixLine75Form5X6TypeA = { - { - type = "Line75Form5X6TypeA", - link_type = 0, - direction = 0, - line_count = 75, - lines = { - {1, 1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5, 5}, - {1, 2, 3, 4, 5, 4}, - {5, 4, 3, 2, 1, 2}, - {1, 2, 3, 4, 5, 5}, - {5, 4, 3, 2, 1, 1}, - {1, 2, 3, 3, 2, 1}, - {2, 3, 4, 4, 3, 2}, - {3, 4, 5, 5, 4, 3}, - {3, 2, 1, 1, 2, 3}, - {4, 3, 2, 2, 3, 4}, - {5, 4, 3, 3, 4, 5}, - {1, 2, 3, 4, 4, 3}, - {2, 3, 4, 5, 5, 4}, - {5, 4, 3, 2, 2, 3}, - {4, 3, 2, 1, 1, 2}, - {1, 2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2, 3}, - {3, 4, 3, 4, 3, 4}, - {4, 5, 4, 5, 4, 5}, - {2, 1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3, 2}, - {4, 3, 4, 3, 4, 3}, - {5, 4, 5, 4, 5, 4}, - {1, 2, 3, 4, 3, 2}, - {2, 3, 4, 5, 4, 3}, - {5, 4, 3, 2, 3, 4}, - {4, 3, 2, 1, 2, 3}, - {2, 3, 4, 3, 2, 1}, - {3, 4, 5, 4, 3, 2}, - {4, 3, 2, 3, 4, 5}, - {3, 2, 1, 2, 3, 4}, - {1, 2, 3, 4, 4, 4}, - {2, 3, 4, 5, 5, 5}, - {5, 4, 3, 2, 2, 2}, - {4, 3, 2, 1, 1, 1}, - {1, 1, 2, 3, 4, 4}, - {2, 2, 3, 4, 5, 5}, - {5, 5, 4, 3, 2, 2}, - {4, 4, 3, 2, 1, 1}, - {1, 1, 1, 2, 3, 4}, - {2, 2, 2, 3, 4, 5}, - {5, 5, 5, 4, 3, 2}, - {4, 4, 4, 3, 2, 1}, - {1, 2, 3, 2, 3, 2}, - {2, 3, 4, 3, 4, 3}, - {3, 4, 5, 4, 5, 4}, - {5, 4, 3, 4, 3, 4}, - {4, 3, 2, 3, 2, 3}, - {3, 2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2, 1}, - {3, 4, 3, 4, 3, 2}, - {4, 5, 4, 5, 4, 3}, - {4, 3, 4, 3, 4, 5}, - {3, 2, 3, 2, 3, 4}, - {2, 1, 2, 1, 2, 3}, - {2, 1, 1, 1, 1, 2}, - {3, 2, 2, 2, 2, 3}, - {4, 3, 3, 3, 3, 4}, - {5, 4, 4, 4, 4, 5}, - {1, 2, 2, 2, 2, 1}, - {2, 3, 3, 3, 3, 2}, - {3, 4, 4, 4, 4, 3}, - {4, 5, 5, 5, 5, 4}, - {1, 1, 2, 2, 1, 1}, - {2, 2, 3, 3, 2, 2}, - {3, 3, 4, 4, 3, 3}, - {4, 4, 5, 5, 4, 4}, - {5, 5, 4, 4, 5, 5}, - {4, 4, 3, 3, 4, 4}, - {3, 3, 2, 2, 1, 1}, - {2, 2, 1, 1, 2, 2}, - }, - form = {5, 5, 5, 5, 5, 5}, - }, + { + type = "Line75Form5X6TypeA", + link_type = 0, + direction = 0, + line_count = 75, + lines = { + { 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5, 5 }, + { 1, 2, 3, 4, 5, 4 }, + { 5, 4, 3, 2, 1, 2 }, + { 1, 2, 3, 4, 5, 5 }, + { 5, 4, 3, 2, 1, 1 }, + { 1, 2, 3, 3, 2, 1 }, + { 2, 3, 4, 4, 3, 2 }, + { 3, 4, 5, 5, 4, 3 }, + { 3, 2, 1, 1, 2, 3 }, + { 4, 3, 2, 2, 3, 4 }, + { 5, 4, 3, 3, 4, 5 }, + { 1, 2, 3, 4, 4, 3 }, + { 2, 3, 4, 5, 5, 4 }, + { 5, 4, 3, 2, 2, 3 }, + { 4, 3, 2, 1, 1, 2 }, + { 1, 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2, 3 }, + { 3, 4, 3, 4, 3, 4 }, + { 4, 5, 4, 5, 4, 5 }, + { 2, 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3, 2 }, + { 4, 3, 4, 3, 4, 3 }, + { 5, 4, 5, 4, 5, 4 }, + { 1, 2, 3, 4, 3, 2 }, + { 2, 3, 4, 5, 4, 3 }, + { 5, 4, 3, 2, 3, 4 }, + { 4, 3, 2, 1, 2, 3 }, + { 2, 3, 4, 3, 2, 1 }, + { 3, 4, 5, 4, 3, 2 }, + { 4, 3, 2, 3, 4, 5 }, + { 3, 2, 1, 2, 3, 4 }, + { 1, 2, 3, 4, 4, 4 }, + { 2, 3, 4, 5, 5, 5 }, + { 5, 4, 3, 2, 2, 2 }, + { 4, 3, 2, 1, 1, 1 }, + { 1, 1, 2, 3, 4, 4 }, + { 2, 2, 3, 4, 5, 5 }, + { 5, 5, 4, 3, 2, 2 }, + { 4, 4, 3, 2, 1, 1 }, + { 1, 1, 1, 2, 3, 4 }, + { 2, 2, 2, 3, 4, 5 }, + { 5, 5, 5, 4, 3, 2 }, + { 4, 4, 4, 3, 2, 1 }, + { 1, 2, 3, 2, 3, 2 }, + { 2, 3, 4, 3, 4, 3 }, + { 3, 4, 5, 4, 5, 4 }, + { 5, 4, 3, 4, 3, 4 }, + { 4, 3, 2, 3, 2, 3 }, + { 3, 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2, 1 }, + { 3, 4, 3, 4, 3, 2 }, + { 4, 5, 4, 5, 4, 3 }, + { 4, 3, 4, 3, 4, 5 }, + { 3, 2, 3, 2, 3, 4 }, + { 2, 1, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 4, 5 }, + { 1, 2, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 5, 4 }, + { 1, 1, 2, 2, 1, 1 }, + { 2, 2, 3, 3, 2, 2 }, + { 3, 3, 4, 4, 3, 3 }, + { 4, 4, 5, 5, 4, 4 }, + { 5, 5, 4, 4, 5, 5 }, + { 4, 4, 3, 3, 4, 4 }, + { 3, 3, 2, 2, 1, 1 }, + { 2, 2, 1, 1, 2, 2 }, + }, + form = { 5, 5, 5, 5, 5, 5 }, + }, } _.MatrixLine75Form6X5TypeA = { - { - type = "Line75Form6X5TypeA", - link_type = 0, - direction = 0, - line_count = 75, - lines = { - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {1, 1, 1, 1, 1}, - {3, 2, 1, 2, 3}, - {1, 2, 3, 2, 1}, - {3, 3, 2, 3, 3}, - {1, 1, 2, 1, 1}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {3, 2, 2, 2, 3}, - {1, 2, 2, 2, 1}, - {3, 2, 3, 2, 3}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {2, 1, 2, 1, 2}, - {2, 2, 3, 2, 2}, - {2, 2, 1, 2, 2}, - {3, 1, 3, 1, 3}, - {1, 3, 1, 3, 1}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {3, 3, 1, 3, 3}, - {1, 1, 3, 1, 1}, - {3, 1, 1, 1, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 3, 3, 2, 3}, - {1, 1, 1, 2, 1}, - {2, 2, 2, 1, 2}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {4, 4, 4, 4, 4}, - {6, 5, 4, 5, 6}, - {4, 5, 6, 5, 4}, - {6, 6, 5, 6, 6}, - {4, 4, 5, 4, 4}, - {5, 4, 4, 4, 5}, - {5, 6, 6, 6, 5}, - {6, 5, 5, 5, 6}, - {4, 5, 5, 5, 4}, - {6, 5, 6, 5, 6}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {5, 4, 5, 4, 5}, - {5, 5, 6, 5, 5}, - {5, 5, 4, 5, 5}, - {6, 4, 6, 4, 6}, - {4, 6, 4, 6, 4}, - {5, 6, 4, 6, 5}, - {5, 4, 6, 4, 5}, - {6, 6, 4, 6, 6}, - {4, 4, 6, 4, 4}, - {6, 4, 4, 4, 6}, - {4, 6, 6, 6, 4}, - {6, 4, 5, 4, 6}, - {4, 6, 5, 6, 4}, - {6, 6, 6, 5, 6}, - {4, 4, 4, 5, 4}, - {5, 5, 5, 4, 5}, - {4, 4, 3, 4, 4}, - {3, 3, 4, 3, 3}, - {4, 3, 3, 3, 4}, - {3, 4, 4, 4, 3}, - {4, 3, 4, 3, 4}, - {3, 4, 3, 4, 3}, - {4, 2, 3, 2, 4}, - {2, 4, 3, 4, 2}, - {4, 4, 4, 3, 4}, - {3, 3, 3, 4, 3}, - {3, 2, 4, 2, 3}, - {3, 4, 2, 4, 3}, - {4, 3, 2, 3, 4}, - {2, 3, 4, 3, 2}, - {2, 2, 4, 2, 2}, - }, - form = {6, 6, 6, 6, 6}, - }, + { + type = "Line75Form6X5TypeA", + link_type = 0, + direction = 0, + line_count = 75, + lines = { + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 1, 1, 1, 1, 1 }, + { 3, 2, 1, 2, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 3, 2, 3, 3 }, + { 1, 1, 2, 1, 1 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 2, 1, 2, 1, 2 }, + { 2, 2, 3, 2, 2 }, + { 2, 2, 1, 2, 2 }, + { 3, 1, 3, 1, 3 }, + { 1, 3, 1, 3, 1 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 3, 3, 1, 3, 3 }, + { 1, 1, 3, 1, 1 }, + { 3, 1, 1, 1, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 3, 3, 2, 3 }, + { 1, 1, 1, 2, 1 }, + { 2, 2, 2, 1, 2 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 4, 4, 4, 4, 4 }, + { 6, 5, 4, 5, 6 }, + { 4, 5, 6, 5, 4 }, + { 6, 6, 5, 6, 6 }, + { 4, 4, 5, 4, 4 }, + { 5, 4, 4, 4, 5 }, + { 5, 6, 6, 6, 5 }, + { 6, 5, 5, 5, 6 }, + { 4, 5, 5, 5, 4 }, + { 6, 5, 6, 5, 6 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 5, 4, 5, 4, 5 }, + { 5, 5, 6, 5, 5 }, + { 5, 5, 4, 5, 5 }, + { 6, 4, 6, 4, 6 }, + { 4, 6, 4, 6, 4 }, + { 5, 6, 4, 6, 5 }, + { 5, 4, 6, 4, 5 }, + { 6, 6, 4, 6, 6 }, + { 4, 4, 6, 4, 4 }, + { 6, 4, 4, 4, 6 }, + { 4, 6, 6, 6, 4 }, + { 6, 4, 5, 4, 6 }, + { 4, 6, 5, 6, 4 }, + { 6, 6, 6, 5, 6 }, + { 4, 4, 4, 5, 4 }, + { 5, 5, 5, 4, 5 }, + { 4, 4, 3, 4, 4 }, + { 3, 3, 4, 3, 3 }, + { 4, 3, 3, 3, 4 }, + { 3, 4, 4, 4, 3 }, + { 4, 3, 4, 3, 4 }, + { 3, 4, 3, 4, 3 }, + { 4, 2, 3, 2, 4 }, + { 2, 4, 3, 4, 2 }, + { 4, 4, 4, 3, 4 }, + { 3, 3, 3, 4, 3 }, + { 3, 2, 4, 2, 3 }, + { 3, 4, 2, 4, 3 }, + { 4, 3, 2, 3, 4 }, + { 2, 3, 4, 3, 2 }, + { 2, 2, 4, 2, 2 }, + }, + form = { 6, 6, 6, 6, 6 }, + }, } _.MatrixLine80Form10X5TypeA = { - { - type = "Line80Form10X5TypeA", - link_type = 0, - direction = 0, - line_count = 80, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {8, 8, 8, 8, 8}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {7, 8, 7, 8, 7}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {8, 7, 8, 7, 8}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {6, 7, 8, 7, 6}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {8, 7, 6, 7, 8}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {7, 8, 8, 8, 7}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {8, 7, 7, 7, 8}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {7, 7, 8, 7, 7}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {8, 8, 7, 8, 8}, - {9, 9, 9, 9, 9}, - {8, 9, 8, 9, 8}, - {9, 8, 9, 8, 9}, - {7, 8, 9, 8, 7}, - {9, 8, 7, 8, 9}, - {8, 9, 9, 9, 8}, - {9, 8, 8, 8, 9}, - {8, 8, 9, 8, 8}, - {9, 9, 8, 9, 9}, - {7, 7, 8, 9, 9}, - {10, 10, 10, 10, 10}, - {9, 10, 9, 10, 9}, - {10, 9, 10, 9, 10}, - {8, 9, 10, 9, 8}, - {10, 9, 8, 9, 10}, - {9, 10, 10, 10, 9}, - {10, 9, 9, 9, 10}, - {9, 9, 10, 9, 9}, - {10, 10, 9, 10, 10}, - {8, 8, 9, 10, 10}, - }, - form = {10, 10, 10, 10, 10}, - }, + { + type = "Line80Form10X5TypeA", + link_type = 0, + direction = 0, + line_count = 80, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 8, 8, 8, 8, 8 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 7, 8, 7, 8, 7 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 8, 7, 8, 7, 8 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 6, 7, 8, 7, 6 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 8, 7, 6, 7, 8 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 7, 8, 8, 8, 7 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 8, 7, 7, 7, 8 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 7, 7, 8, 7, 7 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 8, 8, 7, 8, 8 }, + { 9, 9, 9, 9, 9 }, + { 8, 9, 8, 9, 8 }, + { 9, 8, 9, 8, 9 }, + { 7, 8, 9, 8, 7 }, + { 9, 8, 7, 8, 9 }, + { 8, 9, 9, 9, 8 }, + { 9, 8, 8, 8, 9 }, + { 8, 8, 9, 8, 8 }, + { 9, 9, 8, 9, 9 }, + { 7, 7, 8, 9, 9 }, + { 10, 10, 10, 10, 10 }, + { 9, 10, 9, 10, 9 }, + { 10, 9, 10, 9, 10 }, + { 8, 9, 10, 9, 8 }, + { 10, 9, 8, 9, 10 }, + { 9, 10, 10, 10, 9 }, + { 10, 9, 9, 9, 10 }, + { 9, 9, 10, 9, 9 }, + { 10, 10, 9, 10, 10 }, + { 8, 8, 9, 10, 10 }, + }, + form = { 10, 10, 10, 10, 10 }, + }, } _.MatrixLine80Form3X5TypeA = { - { - type = "Line80Form3X5TypeA", - link_type = 0, - direction = 0, - line_count = 80, - lines = { - {2, 2, 2, 2, 2}, - {1, 1, 1, 1, 1}, - {3, 3, 3, 3, 3}, - {1, 2, 3, 2, 1}, - {3, 2, 1, 2, 3}, - {2, 1, 1, 1, 2}, - {2, 3, 3, 3, 2}, - {1, 1, 2, 3, 3}, - {3, 3, 2, 1, 1}, - {2, 3, 2, 1, 2}, - {2, 1, 2, 3, 2}, - {1, 2, 2, 2, 1}, - {3, 2, 2, 2, 3}, - {1, 2, 1, 2, 1}, - {3, 2, 3, 2, 3}, - {2, 2, 1, 2, 2}, - {2, 2, 3, 2, 2}, - {1, 1, 3, 1, 1}, - {3, 3, 1, 3, 3}, - {1, 3, 3, 3, 1}, - {3, 1, 1, 1, 3}, - {2, 3, 1, 3, 2}, - {2, 1, 3, 1, 2}, - {1, 3, 1, 3, 1}, - {3, 1, 3, 1, 3}, - {3, 1, 2, 3, 1}, - {1, 3, 2, 1, 3}, - {1, 3, 2, 3, 1}, - {3, 1, 2, 1, 3}, - {3, 2, 1, 1, 2}, - {1, 2, 3, 3, 2}, - {1, 1, 3, 3, 3}, - {3, 3, 1, 1, 1}, - {2, 1, 3, 2, 3}, - {2, 3, 1, 2, 1}, - {1, 2, 1, 2, 3}, - {3, 2, 3, 2, 1}, - {2, 3, 3, 1, 1}, - {1, 1, 2, 2, 3}, - {3, 3, 2, 2, 1}, - {3, 1, 1, 1, 1}, - {1, 3, 3, 3, 3}, - {3, 3, 3, 3, 1}, - {1, 1, 1, 1, 3}, - {2, 1, 2, 1, 2}, - {2, 3, 2, 3, 2}, - {1, 2, 3, 3, 3}, - {3, 2, 1, 1, 1}, - {1, 2, 2, 2, 2}, - {3, 2, 2, 2, 2}, - {1, 1, 1, 1, 2}, - {1, 1, 1, 2, 2}, - {1, 1, 1, 2, 3}, - {1, 1, 2, 1, 1}, - {1, 1, 2, 2, 1}, - {1, 1, 2, 2, 2}, - {1, 1, 2, 3, 2}, - {1, 2, 1, 1, 1}, - {1, 2, 1, 2, 2}, - {3, 1, 2, 1, 2}, - {1, 3, 2, 3, 2}, - {1, 2, 1, 3, 1}, - {3, 2, 3, 1, 3}, - {1, 2, 2, 2, 3}, - {3, 2, 2, 2, 1}, - {1, 2, 2, 3, 3}, - {2, 1, 1, 1, 1}, - {2, 1, 1, 2, 2}, - {2, 1, 1, 2, 3}, - {1, 2, 2, 1, 2}, - {2, 1, 2, 2, 3}, - {2, 1, 2, 3, 3}, - {2, 2, 1, 1, 1}, - {2, 2, 1, 1, 2}, - {2, 2, 1, 2, 3}, - {1, 1, 3, 2, 1}, - {2, 2, 2, 1, 1}, - {2, 2, 3, 3, 3}, - {3, 3, 3, 3, 2}, - {2, 2, 2, 2, 3}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "Line80Form3X5TypeA", + link_type = 0, + direction = 0, + line_count = 80, + lines = { + { 2, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 1 }, + { 3, 3, 3, 3, 3 }, + { 1, 2, 3, 2, 1 }, + { 3, 2, 1, 2, 3 }, + { 2, 1, 1, 1, 2 }, + { 2, 3, 3, 3, 2 }, + { 1, 1, 2, 3, 3 }, + { 3, 3, 2, 1, 1 }, + { 2, 3, 2, 1, 2 }, + { 2, 1, 2, 3, 2 }, + { 1, 2, 2, 2, 1 }, + { 3, 2, 2, 2, 3 }, + { 1, 2, 1, 2, 1 }, + { 3, 2, 3, 2, 3 }, + { 2, 2, 1, 2, 2 }, + { 2, 2, 3, 2, 2 }, + { 1, 1, 3, 1, 1 }, + { 3, 3, 1, 3, 3 }, + { 1, 3, 3, 3, 1 }, + { 3, 1, 1, 1, 3 }, + { 2, 3, 1, 3, 2 }, + { 2, 1, 3, 1, 2 }, + { 1, 3, 1, 3, 1 }, + { 3, 1, 3, 1, 3 }, + { 3, 1, 2, 3, 1 }, + { 1, 3, 2, 1, 3 }, + { 1, 3, 2, 3, 1 }, + { 3, 1, 2, 1, 3 }, + { 3, 2, 1, 1, 2 }, + { 1, 2, 3, 3, 2 }, + { 1, 1, 3, 3, 3 }, + { 3, 3, 1, 1, 1 }, + { 2, 1, 3, 2, 3 }, + { 2, 3, 1, 2, 1 }, + { 1, 2, 1, 2, 3 }, + { 3, 2, 3, 2, 1 }, + { 2, 3, 3, 1, 1 }, + { 1, 1, 2, 2, 3 }, + { 3, 3, 2, 2, 1 }, + { 3, 1, 1, 1, 1 }, + { 1, 3, 3, 3, 3 }, + { 3, 3, 3, 3, 1 }, + { 1, 1, 1, 1, 3 }, + { 2, 1, 2, 1, 2 }, + { 2, 3, 2, 3, 2 }, + { 1, 2, 3, 3, 3 }, + { 3, 2, 1, 1, 1 }, + { 1, 2, 2, 2, 2 }, + { 3, 2, 2, 2, 2 }, + { 1, 1, 1, 1, 2 }, + { 1, 1, 1, 2, 2 }, + { 1, 1, 1, 2, 3 }, + { 1, 1, 2, 1, 1 }, + { 1, 1, 2, 2, 1 }, + { 1, 1, 2, 2, 2 }, + { 1, 1, 2, 3, 2 }, + { 1, 2, 1, 1, 1 }, + { 1, 2, 1, 2, 2 }, + { 3, 1, 2, 1, 2 }, + { 1, 3, 2, 3, 2 }, + { 1, 2, 1, 3, 1 }, + { 3, 2, 3, 1, 3 }, + { 1, 2, 2, 2, 3 }, + { 3, 2, 2, 2, 1 }, + { 1, 2, 2, 3, 3 }, + { 2, 1, 1, 1, 1 }, + { 2, 1, 1, 2, 2 }, + { 2, 1, 1, 2, 3 }, + { 1, 2, 2, 1, 2 }, + { 2, 1, 2, 2, 3 }, + { 2, 1, 2, 3, 3 }, + { 2, 2, 1, 1, 1 }, + { 2, 2, 1, 1, 2 }, + { 2, 2, 1, 2, 3 }, + { 1, 1, 3, 2, 1 }, + { 2, 2, 2, 1, 1 }, + { 2, 2, 3, 3, 3 }, + { 3, 3, 3, 3, 2 }, + { 2, 2, 2, 2, 3 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixLine80Form4X6TypeA = { - { - type = "Line80Form4X6TypeA", - link_type = 0, - direction = 0, - line_count = 80, - lines = { - {1, 1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4, 4}, - {1, 2, 3, 3, 2, 1}, - {4, 3, 2, 2, 3, 4}, - {2, 3, 4, 4, 3, 2}, - {3, 2, 1, 1, 2, 3}, - {1, 2, 1, 1, 2, 1}, - {4, 3, 4, 4, 3, 4}, - {2, 1, 2, 2, 1, 2}, - {3, 4, 3, 3, 4, 3}, - {2, 3, 2, 2, 3, 2}, - {3, 2, 3, 3, 2, 3}, - {1, 1, 2, 2, 1, 1}, - {4, 4, 3, 3, 4, 4}, - {2, 2, 3, 3, 2, 2}, - {3, 3, 2, 2, 3, 3}, - {3, 3, 4, 4, 3, 3}, - {2, 2, 1, 1, 2, 2}, - {2, 3, 3, 3, 3, 2}, - {3, 2, 2, 2, 2, 3}, - {2, 1, 1, 1, 1, 2}, - {3, 4, 4, 4, 4, 3}, - {4, 3, 3, 3, 3, 4}, - {1, 2, 2, 2, 2, 1}, - {3, 1, 1, 1, 1, 3}, - {2, 4, 4, 4, 4, 2}, - {4, 2, 2, 2, 2, 4}, - {1, 3, 3, 3, 3, 1}, - {3, 3, 1, 1, 3, 3}, - {2, 2, 4, 4, 2, 2}, - {1, 1, 3, 3, 1, 1}, - {4, 4, 2, 2, 4, 4}, - {4, 4, 1, 1, 4, 4}, - {1, 1, 4, 4, 1, 1}, - {4, 3, 2, 1, 1, 1}, - {1, 2, 3, 4, 4, 4}, - {1, 1, 1, 2, 3, 4}, - {4, 4, 4, 3, 2, 1}, - {3, 2, 1, 1, 1, 1}, - {2, 3, 4, 4, 4, 4}, - {1, 1, 1, 1, 2, 3}, - {4, 4, 4, 4, 3, 2}, - {4, 3, 2, 2, 2, 2}, - {1, 2, 3, 3, 3, 3}, - {2, 2, 2, 2, 3, 4}, - {3, 3, 3, 3, 2, 1}, - {2, 4, 1, 1, 4, 2}, - {3, 1, 4, 4, 1, 3}, - {1, 4, 1, 1, 4, 1}, - {4, 1, 4, 4, 1, 4}, - {1, 2, 1, 2, 1, 2}, - {3, 4, 3, 4, 3, 4}, - {2, 3, 2, 3, 2, 3}, - {3, 2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3, 4}, - {2, 1, 2, 1, 2, 1}, - {1, 3, 1, 3, 1, 3}, - {4, 2, 4, 2, 4, 2}, - {2, 4, 2, 4, 2, 4}, - {3, 1, 3, 1, 3, 1}, - {1, 4, 1, 4, 1, 4}, - {4, 1, 4, 1, 4, 1}, - {1, 2, 3, 4, 3, 2}, - {4, 3, 2, 1, 2, 3}, - {2, 3, 4, 3, 2, 1}, - {3, 2, 1, 2, 3, 4}, - {1, 2, 1, 2, 3, 4}, - {4, 3, 4, 3, 2, 1}, - {2, 3, 2, 1, 2, 3}, - {3, 2, 3, 4, 3, 2}, - {1, 4, 4, 4, 4, 1}, - {4, 1, 1, 1, 1, 4}, - {2, 4, 1, 1, 4, 2}, - {3, 1, 4, 4, 1, 3}, - {1, 3, 4, 4, 3, 1}, - {4, 2, 1, 1, 2, 4}, - {2, 4, 1, 4, 1, 3}, - {3, 1, 4, 1, 4, 2}, - }, - form = {4, 4, 4, 4, 4, 4}, - }, + { + type = "Line80Form4X6TypeA", + link_type = 0, + direction = 0, + line_count = 80, + lines = { + { 1, 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4, 4 }, + { 1, 2, 3, 3, 2, 1 }, + { 4, 3, 2, 2, 3, 4 }, + { 2, 3, 4, 4, 3, 2 }, + { 3, 2, 1, 1, 2, 3 }, + { 1, 2, 1, 1, 2, 1 }, + { 4, 3, 4, 4, 3, 4 }, + { 2, 1, 2, 2, 1, 2 }, + { 3, 4, 3, 3, 4, 3 }, + { 2, 3, 2, 2, 3, 2 }, + { 3, 2, 3, 3, 2, 3 }, + { 1, 1, 2, 2, 1, 1 }, + { 4, 4, 3, 3, 4, 4 }, + { 2, 2, 3, 3, 2, 2 }, + { 3, 3, 2, 2, 3, 3 }, + { 3, 3, 4, 4, 3, 3 }, + { 2, 2, 1, 1, 2, 2 }, + { 2, 3, 3, 3, 3, 2 }, + { 3, 2, 2, 2, 2, 3 }, + { 2, 1, 1, 1, 1, 2 }, + { 3, 4, 4, 4, 4, 3 }, + { 4, 3, 3, 3, 3, 4 }, + { 1, 2, 2, 2, 2, 1 }, + { 3, 1, 1, 1, 1, 3 }, + { 2, 4, 4, 4, 4, 2 }, + { 4, 2, 2, 2, 2, 4 }, + { 1, 3, 3, 3, 3, 1 }, + { 3, 3, 1, 1, 3, 3 }, + { 2, 2, 4, 4, 2, 2 }, + { 1, 1, 3, 3, 1, 1 }, + { 4, 4, 2, 2, 4, 4 }, + { 4, 4, 1, 1, 4, 4 }, + { 1, 1, 4, 4, 1, 1 }, + { 4, 3, 2, 1, 1, 1 }, + { 1, 2, 3, 4, 4, 4 }, + { 1, 1, 1, 2, 3, 4 }, + { 4, 4, 4, 3, 2, 1 }, + { 3, 2, 1, 1, 1, 1 }, + { 2, 3, 4, 4, 4, 4 }, + { 1, 1, 1, 1, 2, 3 }, + { 4, 4, 4, 4, 3, 2 }, + { 4, 3, 2, 2, 2, 2 }, + { 1, 2, 3, 3, 3, 3 }, + { 2, 2, 2, 2, 3, 4 }, + { 3, 3, 3, 3, 2, 1 }, + { 2, 4, 1, 1, 4, 2 }, + { 3, 1, 4, 4, 1, 3 }, + { 1, 4, 1, 1, 4, 1 }, + { 4, 1, 4, 4, 1, 4 }, + { 1, 2, 1, 2, 1, 2 }, + { 3, 4, 3, 4, 3, 4 }, + { 2, 3, 2, 3, 2, 3 }, + { 3, 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3, 4 }, + { 2, 1, 2, 1, 2, 1 }, + { 1, 3, 1, 3, 1, 3 }, + { 4, 2, 4, 2, 4, 2 }, + { 2, 4, 2, 4, 2, 4 }, + { 3, 1, 3, 1, 3, 1 }, + { 1, 4, 1, 4, 1, 4 }, + { 4, 1, 4, 1, 4, 1 }, + { 1, 2, 3, 4, 3, 2 }, + { 4, 3, 2, 1, 2, 3 }, + { 2, 3, 4, 3, 2, 1 }, + { 3, 2, 1, 2, 3, 4 }, + { 1, 2, 1, 2, 3, 4 }, + { 4, 3, 4, 3, 2, 1 }, + { 2, 3, 2, 1, 2, 3 }, + { 3, 2, 3, 4, 3, 2 }, + { 1, 4, 4, 4, 4, 1 }, + { 4, 1, 1, 1, 1, 4 }, + { 2, 4, 1, 1, 4, 2 }, + { 3, 1, 4, 4, 1, 3 }, + { 1, 3, 4, 4, 3, 1 }, + { 4, 2, 1, 1, 2, 4 }, + { 2, 4, 1, 4, 1, 3 }, + { 3, 1, 4, 1, 4, 2 }, + }, + form = { 4, 4, 4, 4, 4, 4 }, + }, } _.MatrixLine80Form7X5TypeA = { - { - type = "Line80Form7X5TypeA", - link_type = 0, - direction = 0, - line_count = 80, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 4, 5, 5}, - {4, 4, 5, 6, 6}, - {5, 5, 6, 7, 7}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {5, 5, 4, 3, 3}, - {6, 6, 5, 4, 4}, - {7, 7, 6, 5, 5}, - {1, 1, 2, 3, 4}, - {2, 2, 3, 4, 5}, - {3, 3, 4, 5, 6}, - {4, 4, 5, 6, 7}, - {7, 7, 6, 5, 4}, - {6, 6, 5, 4, 3}, - {5, 5, 4, 3, 2}, - {4, 4, 3, 2, 1}, - {1, 2, 3, 4, 4}, - {2, 3, 4, 5, 5}, - {3, 4, 5, 6, 6}, - {4, 5, 6, 7, 7}, - {7, 6, 5, 4, 4}, - {6, 5, 4, 3, 3}, - {5, 4, 3, 2, 2}, - {4, 3, 2, 1, 1}, - {1, 2, 3, 4, 3}, - }, - form = {7, 7, 7, 7, 7}, - }, + { + type = "Line80Form7X5TypeA", + link_type = 0, + direction = 0, + line_count = 80, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 4, 5, 5 }, + { 4, 4, 5, 6, 6 }, + { 5, 5, 6, 7, 7 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 5, 5, 4, 3, 3 }, + { 6, 6, 5, 4, 4 }, + { 7, 7, 6, 5, 5 }, + { 1, 1, 2, 3, 4 }, + { 2, 2, 3, 4, 5 }, + { 3, 3, 4, 5, 6 }, + { 4, 4, 5, 6, 7 }, + { 7, 7, 6, 5, 4 }, + { 6, 6, 5, 4, 3 }, + { 5, 5, 4, 3, 2 }, + { 4, 4, 3, 2, 1 }, + { 1, 2, 3, 4, 4 }, + { 2, 3, 4, 5, 5 }, + { 3, 4, 5, 6, 6 }, + { 4, 5, 6, 7, 7 }, + { 7, 6, 5, 4, 4 }, + { 6, 5, 4, 3, 3 }, + { 5, 4, 3, 2, 2 }, + { 4, 3, 2, 1, 1 }, + { 1, 2, 3, 4, 3 }, + }, + form = { 7, 7, 7, 7, 7 }, + }, } _.MatrixLine90Form11X5TypeA = { - { - type = "Line90Form11X5TypeA", - link_type = 0, - direction = 0, - line_count = 90, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {8, 8, 8, 8, 8}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {7, 8, 7, 8, 7}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {8, 7, 8, 7, 8}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {6, 7, 8, 7, 6}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {8, 7, 6, 7, 8}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {7, 8, 8, 8, 7}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {8, 7, 7, 7, 8}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {7, 7, 8, 7, 7}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {8, 8, 7, 8, 8}, - {9, 9, 9, 9, 9}, - {8, 9, 8, 9, 8}, - {9, 8, 9, 8, 9}, - {7, 8, 9, 8, 7}, - {9, 8, 7, 8, 9}, - {8, 9, 9, 9, 8}, - {9, 8, 8, 8, 9}, - {8, 8, 9, 8, 8}, - {9, 9, 8, 9, 9}, - {7, 7, 8, 9, 9}, - {10, 10, 10, 10, 10}, - {9, 10, 9, 10, 9}, - {10, 9, 10, 9, 10}, - {8, 9, 10, 9, 8}, - {10, 9, 8, 9, 10}, - {9, 10, 10, 10, 9}, - {10, 9, 9, 9, 10}, - {9, 9, 10, 9, 9}, - {10, 10, 9, 10, 10}, - {8, 8, 9, 10, 10}, - {11, 11, 11, 11, 11}, - {10, 11, 10, 11, 10}, - {11, 10, 11, 10, 11}, - {9, 10, 11, 10, 9}, - {11, 10, 9, 10, 11}, - {10, 11, 11, 11, 10}, - {11, 10, 10, 10, 11}, - {10, 10, 11, 10, 10}, - {11, 11, 10, 11, 11}, - {9, 9, 10, 11, 11}, - }, - form = {11, 11, 11, 11, 11}, - }, + { + type = "Line90Form11X5TypeA", + link_type = 0, + direction = 0, + line_count = 90, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 8, 8, 8, 8, 8 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 7, 8, 7, 8, 7 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 8, 7, 8, 7, 8 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 6, 7, 8, 7, 6 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 8, 7, 6, 7, 8 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 7, 8, 8, 8, 7 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 8, 7, 7, 7, 8 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 7, 7, 8, 7, 7 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 8, 8, 7, 8, 8 }, + { 9, 9, 9, 9, 9 }, + { 8, 9, 8, 9, 8 }, + { 9, 8, 9, 8, 9 }, + { 7, 8, 9, 8, 7 }, + { 9, 8, 7, 8, 9 }, + { 8, 9, 9, 9, 8 }, + { 9, 8, 8, 8, 9 }, + { 8, 8, 9, 8, 8 }, + { 9, 9, 8, 9, 9 }, + { 7, 7, 8, 9, 9 }, + { 10, 10, 10, 10, 10 }, + { 9, 10, 9, 10, 9 }, + { 10, 9, 10, 9, 10 }, + { 8, 9, 10, 9, 8 }, + { 10, 9, 8, 9, 10 }, + { 9, 10, 10, 10, 9 }, + { 10, 9, 9, 9, 10 }, + { 9, 9, 10, 9, 9 }, + { 10, 10, 9, 10, 10 }, + { 8, 8, 9, 10, 10 }, + { 11, 11, 11, 11, 11 }, + { 10, 11, 10, 11, 10 }, + { 11, 10, 11, 10, 11 }, + { 9, 10, 11, 10, 9 }, + { 11, 10, 9, 10, 11 }, + { 10, 11, 11, 11, 10 }, + { 11, 10, 10, 10, 11 }, + { 10, 10, 11, 10, 10 }, + { 11, 11, 10, 11, 11 }, + { 9, 9, 10, 11, 11 }, + }, + form = { 11, 11, 11, 11, 11 }, + }, } _.MatrixLine95Form8X5TypeA = { - { - type = "Line95Form8X5TypeA", - link_type = 0, - direction = 0, - line_count = 95, - lines = { - {1, 1, 1, 1, 1}, - {2, 2, 2, 2, 2}, - {3, 3, 3, 3, 3}, - {4, 4, 4, 4, 4}, - {5, 5, 5, 5, 5}, - {6, 6, 6, 6, 6}, - {7, 7, 7, 7, 7}, - {8, 8, 8, 8, 8}, - {1, 2, 2, 2, 1}, - {2, 3, 3, 3, 2}, - {3, 4, 4, 4, 3}, - {4, 5, 5, 5, 4}, - {5, 6, 6, 6, 5}, - {6, 7, 7, 7, 6}, - {7, 8, 8, 8, 7}, - {2, 1, 1, 1, 2}, - {3, 2, 2, 2, 3}, - {4, 3, 3, 3, 4}, - {5, 4, 4, 4, 5}, - {6, 5, 5, 5, 6}, - {7, 6, 6, 6, 7}, - {8, 7, 7, 7, 8}, - {1, 1, 2, 1, 1}, - {2, 2, 3, 2, 2}, - {3, 3, 4, 3, 3}, - {4, 4, 5, 4, 4}, - {5, 5, 6, 5, 5}, - {6, 6, 7, 6, 6}, - {7, 7, 8, 7, 7}, - {2, 2, 1, 2, 2}, - {3, 3, 2, 3, 3}, - {4, 4, 3, 4, 4}, - {5, 5, 4, 5, 5}, - {6, 6, 5, 6, 6}, - {7, 7, 6, 7, 7}, - {8, 8, 7, 8, 8}, - {1, 2, 1, 2, 1}, - {2, 3, 2, 3, 2}, - {3, 4, 3, 4, 3}, - {4, 5, 4, 5, 4}, - {5, 6, 5, 6, 5}, - {6, 7, 6, 7, 6}, - {7, 8, 7, 8, 7}, - {2, 1, 2, 1, 2}, - {3, 2, 3, 2, 3}, - {4, 3, 4, 3, 4}, - {5, 4, 5, 4, 5}, - {6, 5, 6, 5, 6}, - {7, 6, 7, 6, 7}, - {8, 7, 8, 7, 8}, - {1, 2, 3, 2, 1}, - {2, 3, 4, 3, 2}, - {3, 4, 5, 4, 3}, - {4, 5, 6, 5, 4}, - {5, 6, 7, 6, 5}, - {6, 7, 8, 7, 6}, - {3, 2, 1, 2, 3}, - {4, 3, 2, 3, 4}, - {5, 4, 3, 4, 5}, - {6, 5, 4, 5, 6}, - {7, 6, 5, 6, 7}, - {8, 7, 6, 7, 8}, - {1, 1, 2, 3, 3}, - {2, 2, 3, 4, 4}, - {3, 3, 4, 5, 5}, - {4, 4, 5, 6, 6}, - {5, 5, 6, 7, 7}, - {6, 6, 7, 8, 8}, - {3, 3, 2, 1, 1}, - {4, 4, 3, 2, 2}, - {5, 5, 4, 3, 3}, - {6, 6, 5, 4, 4}, - {7, 7, 6, 5, 5}, - {8, 8, 7, 6, 6}, - {1, 1, 2, 3, 4}, - {2, 2, 3, 4, 5}, - {3, 3, 4, 5, 6}, - {4, 4, 5, 6, 7}, - {5, 5, 6, 7, 8}, - {8, 8, 7, 6, 5}, - {7, 7, 6, 5, 4}, - {6, 6, 5, 4, 3}, - {5, 5, 4, 3, 2}, - {4, 4, 3, 2, 1}, - {1, 2, 3, 4, 4}, - {2, 3, 4, 5, 5}, - {3, 4, 5, 6, 6}, - {4, 5, 6, 7, 7}, - {5, 6, 7, 8, 8}, - {8, 7, 6, 5, 5}, - {7, 6, 5, 4, 4}, - {6, 5, 4, 3, 3}, - {5, 4, 3, 2, 2}, - {4, 3, 2, 1, 1}, - {1, 2, 3, 4, 3}, - }, - form = {8, 8, 8, 8, 8}, - }, + { + type = "Line95Form8X5TypeA", + link_type = 0, + direction = 0, + line_count = 95, + lines = { + { 1, 1, 1, 1, 1 }, + { 2, 2, 2, 2, 2 }, + { 3, 3, 3, 3, 3 }, + { 4, 4, 4, 4, 4 }, + { 5, 5, 5, 5, 5 }, + { 6, 6, 6, 6, 6 }, + { 7, 7, 7, 7, 7 }, + { 8, 8, 8, 8, 8 }, + { 1, 2, 2, 2, 1 }, + { 2, 3, 3, 3, 2 }, + { 3, 4, 4, 4, 3 }, + { 4, 5, 5, 5, 4 }, + { 5, 6, 6, 6, 5 }, + { 6, 7, 7, 7, 6 }, + { 7, 8, 8, 8, 7 }, + { 2, 1, 1, 1, 2 }, + { 3, 2, 2, 2, 3 }, + { 4, 3, 3, 3, 4 }, + { 5, 4, 4, 4, 5 }, + { 6, 5, 5, 5, 6 }, + { 7, 6, 6, 6, 7 }, + { 8, 7, 7, 7, 8 }, + { 1, 1, 2, 1, 1 }, + { 2, 2, 3, 2, 2 }, + { 3, 3, 4, 3, 3 }, + { 4, 4, 5, 4, 4 }, + { 5, 5, 6, 5, 5 }, + { 6, 6, 7, 6, 6 }, + { 7, 7, 8, 7, 7 }, + { 2, 2, 1, 2, 2 }, + { 3, 3, 2, 3, 3 }, + { 4, 4, 3, 4, 4 }, + { 5, 5, 4, 5, 5 }, + { 6, 6, 5, 6, 6 }, + { 7, 7, 6, 7, 7 }, + { 8, 8, 7, 8, 8 }, + { 1, 2, 1, 2, 1 }, + { 2, 3, 2, 3, 2 }, + { 3, 4, 3, 4, 3 }, + { 4, 5, 4, 5, 4 }, + { 5, 6, 5, 6, 5 }, + { 6, 7, 6, 7, 6 }, + { 7, 8, 7, 8, 7 }, + { 2, 1, 2, 1, 2 }, + { 3, 2, 3, 2, 3 }, + { 4, 3, 4, 3, 4 }, + { 5, 4, 5, 4, 5 }, + { 6, 5, 6, 5, 6 }, + { 7, 6, 7, 6, 7 }, + { 8, 7, 8, 7, 8 }, + { 1, 2, 3, 2, 1 }, + { 2, 3, 4, 3, 2 }, + { 3, 4, 5, 4, 3 }, + { 4, 5, 6, 5, 4 }, + { 5, 6, 7, 6, 5 }, + { 6, 7, 8, 7, 6 }, + { 3, 2, 1, 2, 3 }, + { 4, 3, 2, 3, 4 }, + { 5, 4, 3, 4, 5 }, + { 6, 5, 4, 5, 6 }, + { 7, 6, 5, 6, 7 }, + { 8, 7, 6, 7, 8 }, + { 1, 1, 2, 3, 3 }, + { 2, 2, 3, 4, 4 }, + { 3, 3, 4, 5, 5 }, + { 4, 4, 5, 6, 6 }, + { 5, 5, 6, 7, 7 }, + { 6, 6, 7, 8, 8 }, + { 3, 3, 2, 1, 1 }, + { 4, 4, 3, 2, 2 }, + { 5, 5, 4, 3, 3 }, + { 6, 6, 5, 4, 4 }, + { 7, 7, 6, 5, 5 }, + { 8, 8, 7, 6, 6 }, + { 1, 1, 2, 3, 4 }, + { 2, 2, 3, 4, 5 }, + { 3, 3, 4, 5, 6 }, + { 4, 4, 5, 6, 7 }, + { 5, 5, 6, 7, 8 }, + { 8, 8, 7, 6, 5 }, + { 7, 7, 6, 5, 4 }, + { 6, 6, 5, 4, 3 }, + { 5, 5, 4, 3, 2 }, + { 4, 4, 3, 2, 1 }, + { 1, 2, 3, 4, 4 }, + { 2, 3, 4, 5, 5 }, + { 3, 4, 5, 6, 6 }, + { 4, 5, 6, 7, 7 }, + { 5, 6, 7, 8, 8 }, + { 8, 7, 6, 5, 5 }, + { 7, 6, 5, 4, 4 }, + { 6, 5, 4, 3, 3 }, + { 5, 4, 3, 2, 2 }, + { 4, 3, 2, 1, 1 }, + { 1, 2, 3, 4, 3 }, + }, + form = { 8, 8, 8, 8, 8 }, + }, } _.MatrixMatchForm7X7TypeA = { - { - type = "MatchForm7X7", - link_type = 4, - direction = 0, - line_count = 20, - lines = { - {0, 0, 0}, - }, - form = {7, 7, 7, 7, 7, 7, 7}, - }, + { + type = "MatchForm7X7", + link_type = 4, + direction = 0, + line_count = 20, + lines = { + { 0, 0, 0 }, + }, + form = { 7, 7, 7, 7, 7, 7, 7 }, + }, } _.MatrixSameForm5X6TypeA = { - { - type = "SameForm5X6", - link_type = 3, - direction = 0, - line_count = 20, - lines = { - {0, 0, 0}, - }, - form = {5, 5, 5, 5, 5, 5}, - }, + { + type = "SameForm5X6", + link_type = 3, + direction = 0, + line_count = 20, + lines = { + { 0, 0, 0 }, + }, + form = { 5, 5, 5, 5, 5, 5 }, + }, } _.MatrixSameForm5X6TypeB = { - { - type = "SameForm5X6TypeB", - link_type = 3, - direction = 0, - line_count = 25, - lines = { - {0, 0, 0}, - }, - form = {5, 5, 5, 5, 5, 5}, - }, + { + type = "SameForm5X6TypeB", + link_type = 3, + direction = 0, + line_count = 25, + lines = { + { 0, 0, 0 }, + }, + form = { 5, 5, 5, 5, 5, 5 }, + }, } _.MatrixWaysForm333331 = { - { - type = "WaysForm333331", - link_type = 1, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {3, 3, 3, 3, 3, 1}, - }, + { + type = "WaysForm333331", + link_type = 1, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 3, 3, 3, 3, 3, 1 }, + }, } _.MatrixWaysForm33555 = { - { - type = "WaysForm33555", - link_type = 1, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {3, 3, 5, 5, 5}, - }, + { + type = "WaysForm33555", + link_type = 1, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 3, 3, 5, 5, 5 }, + }, } _.MatrixWaysForm344444 = { - { - type = "WaysForm344444", - link_type = 1, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {3, 4, 4, 4, 4, 4}, - }, + { + type = "WaysForm344444", + link_type = 1, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 3, 4, 4, 4, 4, 4 }, + }, } _.MatrixWaysForm3X5TypeA = { - { - type = "WaysForm3X5TypeA", - link_type = 1, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {3, 3, 3, 3, 3}, - }, + { + type = "WaysForm3X5TypeA", + link_type = 1, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 3, 3, 3, 3, 3 }, + }, } _.MatrixWaysForm44668 = { - { - type = "WaysForm44668", - link_type = 1, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {4, 4, 6, 6, 8}, - }, + { + type = "WaysForm44668", + link_type = 1, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 4, 4, 6, 6, 8 }, + }, } _.MatrixWaysForm4X5TypeA = { - { - type = "WaysForm4X5TypeA", - link_type = 1, - direction = 0, - line_count = 100, - lines = { - {0, 0, 0}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "WaysForm4X5TypeA", + link_type = 1, + direction = 0, + line_count = 100, + lines = { + { 0, 0, 0 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } _.MatrixWaysForm4X5TypeB = { - { - type = "WaysForm4X5TypeB", - link_type = 1, - direction = 0, - line_count = 60, - lines = { - {0, 0, 0}, - }, - form = {4, 4, 4, 4, 4}, - }, + { + type = "WaysForm4X5TypeB", + link_type = 1, + direction = 0, + line_count = 60, + lines = { + { 0, 0, 0 }, + }, + form = { 4, 4, 4, 4, 4 }, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/external/Client_Config/Config/base/PrizeModel.lua b/gamesrv/slotspkg/external/Client_Config/Config/base/PrizeModel.lua index 07ce268..a40ecde 100644 --- a/gamesrv/slotspkg/external/Client_Config/Config/base/PrizeModel.lua +++ b/gamesrv/slotspkg/external/Client_Config/Config/base/PrizeModel.lua @@ -2,51 +2,51 @@ local _ = {} _.PrizeModelPrizeModelTypeA = { - [1] = { - id = 1, - ani_type = "big_win", - min_multiple = 10, - max_multiple = 25, - }, - [2] = { - id = 2, - ani_type = "mega_win", - min_multiple = 25, - max_multiple = 50, - }, - [3] = { - id = 3, - ani_type = "epic_win", - min_multiple = 50, - max_multiple = -1, - }, + [1] = { + id = 1, + ani_type = "big_win", + min_multiple = 10, + max_multiple = 25, + }, + [2] = { + id = 2, + ani_type = "mega_win", + min_multiple = 25, + max_multiple = 50, + }, + [3] = { + id = 3, + ani_type = "epic_win", + min_multiple = 50, + max_multiple = -1, + }, } _.PrizeModelPrizeModelTypeB = { - [1] = { - id = 1, - ani_type = "big_win", - min_multiple = 15, - max_multiple = 30, - }, - [2] = { - id = 2, - ani_type = "mega_win", - min_multiple = 30, - max_multiple = 45, - }, - [3] = { - id = 3, - ani_type = "epic_win", - min_multiple = 45, - max_multiple = 60, - }, - [4] = { - id = 4, - ani_type = "epic_win", - min_multiple = 60, - max_multiple = -1, - }, + [1] = { + id = 1, + ani_type = "big_win", + min_multiple = 15, + max_multiple = 30, + }, + [2] = { + id = 2, + ani_type = "mega_win", + min_multiple = 30, + max_multiple = 45, + }, + [3] = { + id = 3, + ani_type = "epic_win", + min_multiple = 45, + max_multiple = 60, + }, + [4] = { + id = 4, + ani_type = "epic_win", + min_multiple = 60, + max_multiple = -1, + }, } return _ \ No newline at end of file diff --git a/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go b/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go index 8ee1e34..11ce095 100644 --- a/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go +++ b/gamesrv/slotspkg/internal/exported/excel2go/structs/structs.go @@ -44,75 +44,75 @@ func NewBigRat(s string) *big.Rat { type ( // BetChangeList comment BetChangeList struct { - Index int64 + Index int64 BetChangeList float64 - BetSizeIndex int64 + BetSizeIndex int64 BetLevelIndex int64 } // BetLevel comment BetLevel struct { - Index int64 + Index int64 BetLevel int64 } // BetLine comment BetLine struct { - Index int64 + Index int64 BetLine int64 } // BetSize comment BetSize struct { - Index int64 + Index int64 BetSize int64 } // CashManiaMidItemInfo comment CashManiaMidItemInfo struct { - Index int64 - ItemID int64 - Multi int64 + Index int64 + ItemID int64 + Multi int64 FreeSpinCount int64 } // CashManiaOthers comment CashManiaOthers struct { - BaseWinPro float64 - FreeWinPro float64 - MaxWin int64 - WinNudgePro float64 - WinRespinPro float64 - NoWinNudgePro float64 + BaseWinPro float64 + FreeWinPro float64 + MaxWin int64 + WinNudgePro float64 + WinRespinPro float64 + NoWinNudgePro float64 NoWinRespinPro float64 } // CashManiaRandomItemWeight comment CashManiaRandomItemWeight struct { - ID int64 - ItemID int64 + ID int64 + ItemID int64 BaseWeight float64 FreeWeight float64 } // FirstBet comment FirstBet struct { - Index int64 - BetSizeIndex int64 + Index int64 + BetSizeIndex int64 BetLevelIndex int64 } // Formation comment Formation struct { - SpinType int64 - NodeType string - ID int64 - SeqID int64 - Reel string - Matrix string - Symbol string - FirstInitMethod int64 - OtherInitMethod int64 + SpinType int64 + NodeType string + ID int64 + SeqID int64 + Reel string + Matrix string + Symbol string + FirstInitMethod int64 + OtherInitMethod int64 FirstInitSymbols []int64 OtherInitSymbols []int64 } // FortuneDragonBaseMultiplier comment FortuneDragonBaseMultiplier struct { - WinRateMin float64 - WinRateMax float64 - ItemIds []int64 + WinRateMin float64 + WinRateMax float64 + ItemIds []int64 MultiplierWeights []int64 } // FortuneDragonFreeMultiplier comment @@ -123,126 +123,126 @@ type ( // FortuneDragonFreeMultiplierCount comment FortuneDragonFreeMultiplierCount struct { MultiplierCount int64 - Weight int64 + Weight int64 } // FortuneDragonOthers comment FortuneDragonOthers struct { - FreespinTriggerPro float64 - FreeSpinCount int64 - MaxWin int64 + FreespinTriggerPro float64 + FreeSpinCount int64 + MaxWin int64 SureWinFreespinTriggerPro float64 - SureWinBetMultiplier int64 + SureWinBetMultiplier int64 } // FortuneMouseOthers comment FortuneMouseOthers struct { RespinTriggerPro float64 - MaxWin int64 - ExtraWin int64 + MaxWin int64 + ExtraWin int64 } // FortuneOxOthers comment FortuneOxOthers struct { RespinTriggerPro float64 - Multiplier int64 - MaxWin int64 + Multiplier int64 + MaxWin int64 } // FortuneRabbitCashPrizeWeight comment FortuneRabbitCashPrizeWeight struct { - ID int64 - PrizeValue float64 - Weight float64 + ID int64 + PrizeValue float64 + Weight float64 NoWinWeight float64 } // FortuneRabbitForceCashCountWeight comment FortuneRabbitForceCashCountWeight struct { - ID int64 - Count int64 + ID int64 + Count int64 Weight float64 } // FortuneRabbitOthers comment FortuneRabbitOthers struct { FreespinTriggerPro float64 - FreeSpinCount int64 - MaxWin int64 + FreeSpinCount int64 + MaxWin int64 } // GateofOlympusMultiplier comment GateofOlympusMultiplier struct { Multiple int64 - ID int64 - Weights []int64 + ID int64 + Weights []int64 } // GateofOlympusReelChoose comment GateofOlympusReelChoose struct { - ID int64 + ID int64 IsFreeSpin bool - NodeType string - Weights []int64 + NodeType string + Weights []int64 } // JackpotPrize comment JackpotPrize struct { - PrizeType int64 - PipeIn int64 - StartPoint int64 - IsRolling bool - RollingTime int64 - ReducePercent int64 + PrizeType int64 + PipeIn int64 + StartPoint int64 + IsRolling bool + RollingTime int64 + ReducePercent int64 JackpotLimitByTotalBet int64 } // MapRTPMode comment MapRTPMode struct { - ID int64 + ID int64 TypeWeight map[int64]*MapRTPModeTypeWeight - Desc string - Rtp float64 + Desc string + Rtp float64 } // MapRTPModeTypeWeight comment MapRTPModeTypeWeight struct { - ID int64 + ID int64 Weight int64 } // Matrix comment Matrix struct { - Type string - LinkType int64 + Type string + LinkType int64 Direction int64 LineCount int64 - Lines [][]int64 - Form []int64 + Lines [][]int64 + Form []int64 } // OptAuthenticate comment OptAuthenticate struct { - Flag string - Order int64 - ValidValues []string + Flag string + Order int64 + ValidValues []string InvalidValues []string } // OptGroup comment OptGroup struct { - ID int64 - Batch int64 + ID int64 + Batch int64 IsNewPlayer bool - StartTime string - EndTime string - Affect []int64 - Weight []int64 + StartTime string + EndTime string + Affect []int64 + Weight []int64 } // PrizeModel comment PrizeModel struct { - ID int64 - AniType string + ID int64 + AniType string MinMultiple int64 MaxMultiple int64 } // Scatter comment Scatter struct { - ScatterCount int64 - FreeSpinBouts int64 + ScatterCount int64 + FreeSpinBouts int64 FreeSpinExtraBouts int64 - BasePayrate int64 - FreePayrate int64 + BasePayrate int64 + FreePayrate int64 } // ScatterFreeChoose comment ScatterFreeChoose struct { - ID int64 + ID int64 FreeSpinTimes int64 TouchTimesMin int64 TouchTimesMax int64 @@ -250,24 +250,24 @@ type ( // SimulatorFSMultiLevel comment SimulatorFSMultiLevel struct { Level int64 - Min int64 - Max int64 + Min int64 + Max int64 } // SuperStackWeight comment SuperStackWeight struct { - ID int64 + ID int64 ItemID int64 Weight float64 } // Symbol comment Symbol struct { - ID int64 - Name string - IsWild bool - Group []int64 - PayRate []int64 + ID int64 + Name string + IsWild bool + Group []int64 + PayRate []int64 ClientOrder int64 - ClientDsc string + ClientDsc string } // SymbolBetRatio comment SymbolBetRatio struct { @@ -275,13 +275,13 @@ type ( } // TestRandomWeight comment TestRandomWeight struct { - ID int64 - Time float64 + ID int64 + Time float64 Weight float64 } // Text comment Text struct { - Type string + Type string Texts []*TextTexts } // TextTexts comment @@ -291,25 +291,25 @@ type ( } // Vector comment Vector struct { - Choice int64 - Ratio float64 - Vector []int64 + Choice int64 + Ratio float64 + Vector []int64 Procedure string } // VectorDemand comment VectorDemand struct { - Choice int64 - MinRatio float64 - MaxRatio float64 + Choice int64 + MinRatio float64 + MaxRatio float64 Procedure string - Count int64 + Count int64 } // VectorForceWin comment VectorForceWin struct { - Choice int64 + Choice int64 MinRatio float64 MaxRatio float64 - Weight float64 + Weight float64 } // CashManiaBetBetChangeList comment CashManiaBetBetChangeList = BetChangeList @@ -850,5 +850,4 @@ type ( // TestSymbolBetRatio comment TestSymbolBetRatio = SymbolBetRatio - -) \ No newline at end of file +) diff --git a/gamesrv/slotspkg/slots/handler.go b/gamesrv/slotspkg/slots/handler.go index c63bdc3..fdd8083 100644 --- a/gamesrv/slotspkg/slots/handler.go +++ b/gamesrv/slotspkg/slots/handler.go @@ -19,7 +19,7 @@ func (sm *SlotsMgr) Enter(s *base.SlotsSession, gameId int64) (*cli.SlotsEnterRe logger.Logger.Error("[slotsMgr.Enter] gameId not exist") return nil, errors.New("gameId not exist") } - + player.Get(s).Book.Coin.Set(s.Coin()) player.Init(s) diff --git a/gamesrv/tienlen/scenedata_tienlen.go b/gamesrv/tienlen/scenedata_tienlen.go index dd941de..868fe1e 100644 --- a/gamesrv/tienlen/scenedata_tienlen.go +++ b/gamesrv/tienlen/scenedata_tienlen.go @@ -557,6 +557,60 @@ func (this *TienLenSceneData) GetFreeGameSceneType() int32 { return this.GetSceneType() } +// 纯随机发牌 +func (this *TienLenSceneData) RandomCards() { + allCards := []int32{} + for i := 0; i < rule.POKER_CNT; i++ { + allCards = append(allCards, int32(i)) + } + shuffleInts(allCards) + cardss := map[int][]int32{} + for i, card := range allCards { + if card != rule.InvalideCard { + index := i / 13 + cardss[index] = append(cardss[index], int32(card)) + } + } + minCard := int32(999) + for i, seat := range this.seats { + if seat != nil && seat.IsGameing() { + for index, card := range cardss[i] { + seat.cards[index] = card + if rule.Value(card) < rule.Value(minCard) { + this.startOpPos = int32(seat.GetPos()) + minCard = card + this.curMinCard = minCard + } else if rule.Value(card) == rule.Value(minCard) { + if rule.Color(card) < rule.Color(minCard) { + this.startOpPos = int32(seat.GetPos()) + minCard = card + this.curMinCard = minCard + } + } + } + pack := &tienlen.SCTienLenCard{} + for j := int32(0); j < rule.HandCardNum; j++ { + pack.Cards = append(pack.Cards, seat.cards[j]) + } + pack.IsOutRecord = seat.CanUseRecordItem() + proto.SetDefaults(pack) + seat.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) + logger.Logger.Trace("SnId: ", seat.SnId, ";SCTienLenCard: ", pack.Cards) + + pack.SnId = seat.SnId + this.BroadcastToAudience(int(tienlen.TienLenPacketID_PACKET_SCTienLenCard), pack) + } + } +} +func shuffleInts(ints []int32) { + // 使用当前时间作为随机种子 + rand.Seed(time.Now().UnixNano()) + for i := len(ints) - 1; i > 0; i-- { + j := rand.Intn(i + 1) + ints[i], ints[j] = ints[j], ints[i] + } +} + // SendHandCard_Match 发牌 // 比赛场发牌 // 纯真人,随机发牌 @@ -2136,6 +2190,7 @@ func (this *TienLenSceneData) SaveCustomLog() { EndTs: time.Now().Unix(), State: state, Creator: this.GetCreator(), + Price: this.GetCustom().GetPrice(), } for snid := range this.BilledList { var items []*model.Item diff --git a/gamesrv/tienlen/scenepolicy_tienlen.go b/gamesrv/tienlen/scenepolicy_tienlen.go index 973af23..5965abc 100644 --- a/gamesrv/tienlen/scenepolicy_tienlen.go +++ b/gamesrv/tienlen/scenepolicy_tienlen.go @@ -991,7 +991,7 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { if rule.TestOpen { sceneEx.SendHandCardTest() } else { - if len(sceneEx.testPokers) > 1 { + /*if len(sceneEx.testPokers) > 1 { sceneEx.SendHandCardOdds() } else { if sceneEx.IsMatchScene() || sceneEx.IsCustom() { @@ -999,6 +999,16 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) { } else { sceneEx.SendHandCardOdds() } + }*/ + + if sceneEx.WGCreateScene.GetCloseCtrl() { + sceneEx.RandomCards() + } else { + if sceneEx.IsMatchScene() || sceneEx.IsCustom() { + sceneEx.SendHandCard_Match() + } else { + sceneEx.SendHandCardOdds() + } } } @@ -2639,7 +2649,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { GameId: int64(sceneEx.GameId), GameFreeId: int64(sceneEx.GetGameFreeId()), }) - mq.Write(&model.CustomLogAward{ + award := &model.CustomLogAward{ Platform: p.Platform, CycleId: sceneEx.CycleID, SnId: p.SnId, @@ -2647,7 +2657,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) { Awards: items, StartTs: sceneEx.GameStartTime.Unix(), EndTs: time.Now().Unix(), - }) + Price: sceneEx.WGCreateScene.GetCustom().GetPrice(), + ImageURL: sceneEx.WGCreateScene.GetCustom().GetImageURL(), + } + mq.Write(award, mq.DBCustomLogAward) + mq.Write(award, mq.WorldCustomAward) sceneEx.PlayerAward[p.SnId] = &items } } diff --git a/mgrsrv/api/webapi_worldsrv.go b/mgrsrv/api/webapi_worldsrv.go index 5ca0a5a..ba04297 100644 --- a/mgrsrv/api/webapi_worldsrv.go +++ b/mgrsrv/api/webapi_worldsrv.go @@ -246,6 +246,8 @@ func init() { admin.MyAdminApp.Route("/api/player/delete", WorldSrvApi) // 添加道具 admin.MyAdminApp.Route("/api/player/AddItem", WorldSrvApi) + // 修改竞技馆抽奖记录图片视频 + admin.MyAdminApp.Route("/api/game/show_lottery", WorldSrvApi) } func Stats() map[string]ApiStats { diff --git a/model/config.go b/model/config.go index 3c0d34c..cca3281 100644 --- a/model/config.go +++ b/model/config.go @@ -157,6 +157,12 @@ type AllConfig struct { *webapi.ClientUpgrade //弹窗配置 *webapi.PopUpWindowConfig + // 竞技馆抽奖活动 + *webapi.LotteryConfig + // 竞技馆抽奖展示配置 + LotteryShows map[int64]*webapi.ShowLottery + // 竞技馆抽奖必中配置 + LotteryUser map[int64]*webapi.UserLottery } type GlobalConfig struct { @@ -190,6 +196,8 @@ func (cm *ConfigMgr) GetConfig(platform string) *AllConfig { RoomConfig: make(map[int32]*webapi.RoomConfig), RoomTypeMap: make(map[int32][]*webapi.RoomConfig), RoomConfigSystem: make(map[int32]*webapi.RoomConfigSystem), + LotteryUser: make(map[int64]*webapi.UserLottery), + LotteryShows: make(map[int64]*webapi.ShowLottery), } cm.platform[platform] = c } @@ -502,3 +510,15 @@ func (cm *ConfigMgr) GetRoomConfig(plt string, lastChannel string) *gamehall.SCR } return pack } + +func (cm *ConfigMgr) GetLotteryConfig(plt string, id int64) *webapi.LotteryInfo { + d := cm.GetConfig(plt) + if d != nil && d.LotteryConfig != nil { + for _, v := range d.LotteryConfig.GetList() { + if v.GetId() == id { + return v + } + } + } + return nil +} diff --git a/model/customlog.go b/model/customlog.go index 9b7b93e..06226b6 100644 --- a/model/customlog.go +++ b/model/customlog.go @@ -42,6 +42,7 @@ type CustomLog struct { List []RoundInfo // 对局记录 StartTs, EndTs int64 // 开始,结束时间 State int32 // 0正常结束 1后台中途解散 + Price int64 // 奖励价值 } // CustomLogAward 竞技馆玩家奖励记录 @@ -52,6 +53,8 @@ type CustomLogAward struct { Name string Awards []*Item StartTs, EndTs int64 // 开始,结束时间 + Price int64 + ImageURL string } type CustomLogAwardFindReq struct { diff --git a/model/gameparam.go b/model/gameparam.go index 751c401..9e74ba2 100644 --- a/model/gameparam.go +++ b/model/gameparam.go @@ -84,14 +84,14 @@ type GameParam struct { PermitInitScore int64 // 赛季通行证初始积分 GuideStepMaxNum int32 // 新手引导步骤最大值 GuideTs int64 // 新手引导时间戳,小于这个时间的玩家不显示新手引导 - CustomAwardUpdateTime int // 竞技馆奖励更新时间 + CustomAwardUpdateTime int // 竞技馆奖励更新时间,单位秒 CustomAwardMinAddTime int // 竞技馆假奖励方法周期,单位秒 CustomAwardMaxAddTime int // 竞技馆假奖励方法周期,单位秒 AdminPassword string // 管理员密码 UseAdminPassword bool // 是否使用管理员密码 CloseCustomRoomCreate bool // 关闭自定义房间创建 ClientVersion int32 // 客户端版本号 - ClientVersionChannel []string // 客户端版本号包渠道 + ClientVersionChannel []string // 客户端版本号包渠道 } var GameParamPath = "../data/gameparam.json" diff --git a/model/lottery.go b/model/lottery.go index f986c9e..ccc8768 100644 --- a/model/lottery.go +++ b/model/lottery.go @@ -1,70 +1,77 @@ package model import ( - "github.com/globalsign/mgo/bson" "time" ) -const ( - LOTTERY_LOG_MAX = 30 -) +// 玩家对于每个抽奖活动的状态 var ( LotteryDBName = "user" LotteryCollName = "user_lottery" ) -// 奖池记录 -type GameLotteryLog struct { - Time int32 //时间 - Nick string //昵称 - Card []int32 //牌数据 - Kind int32 //牌型 - Coin int32 //获得奖金 -} - -type GameLottery struct { - Id int32 //游戏场次id - GameId int32 //游戏id - Value int64 //彩金数量 - Logs []*GameLotteryLog //彩金获得记录 -} - type Lottery struct { - Id bson.ObjectId `bson:"_id"` - Dirty int32 `bson:"-"` - Platform string //平台编号 - Lotteries map[int32]*GameLottery //奖金池 - CreateTime time.Time //创建日期 - UpdateTime time.Time //最后更新日期 + SnId int32 // 玩家id + CId int64 // 抽奖配置Id + Code []string // 抽奖码 + StartTs int64 // 抽奖时间 + CostCard int64 // 消耗房卡 + ReCostCard int // 不足获取抽奖码时消耗房卡记录 } -func NewLottery(platform string) *Lottery { - cl := &Lottery{ - Id: bson.NewObjectId(), - Dirty: 1, - Platform: platform, - CreateTime: time.Now(), - Lotteries: make(map[int32]*GameLottery), - } - return cl +type GetLotteryReq struct { + Platform string + SnId int32 + CId int64 + StartTs int64 } -func GetAllLottery() (ret []Lottery, err error) { +type GetLotteryResp struct { + Lottery []*Lottery +} + +// GetLottery 获取玩家对于每个抽奖活动的状态 +// plt 平台 +// snid 玩家id +// cid 抽奖配置Id +// startTs 活动开始时间范围,大于这个时间的活动 +func GetLottery(plt string, snid int32, cid, startTs int64) (ret []*Lottery, err error) { if rpcCli == nil { return nil, ErrRPClientNoConn } - err = rpcCli.CallWithTimeout("LotterySvc.GetAllLottery", struct{}{}, &ret, time.Second*30) - return + req := &GetLotteryReq{ + Platform: plt, + SnId: snid, + CId: cid, + StartTs: startTs, + } + resp := &GetLotteryResp{} + + err = rpcCli.CallWithTimeout("LotterySvc.Get", req, resp, time.Second*30) + if err != nil { + return nil, err + } + return resp.Lottery, nil } -func UpsertLottery(item *Lottery) (err error) { +type UpsertLotteryReq struct { + Platform string + Lottery []*Lottery +} + +func UpsertLottery(plt string, item ...*Lottery) (err error) { if rpcCli == nil { return ErrRPClientNoConn } + req := &UpsertLotteryReq{ + Platform: plt, + Lottery: item, + } + var ret bool - err = rpcCli.CallWithTimeout("LotterySvc.UpsertLottery", item, &ret, time.Second*30) + err = rpcCli.CallWithTimeout("LotterySvc.Upsert", req, &ret, time.Second*30) return } diff --git a/model/lotterycfg.go b/model/lotterycfg.go deleted file mode 100644 index 75fedb3..0000000 --- a/model/lotterycfg.go +++ /dev/null @@ -1,44 +0,0 @@ -package model - -import "encoding/json" - -type LotteryConfiger interface { - HitRatio(card []int32, kind int32) int32 - GetTaxRatio() int32 -} - -type LotteryConfigParser func(cfg string) (LotteryConfiger, error) - -type KindOfCard struct { - Kind int32 //牌型 - Ratio int32 //奖池比例,万分比 -} - -// 彩金配置 -type LotteryConfig struct { - Type int32 //奖池类型 0:税收 - Ratio int32 //比例 百分比 - Koc []KindOfCard //特殊牌型获得奖池占比 -} - -func (this *LotteryConfig) GetTaxRatio() int32 { - return this.Ratio -} - -func (this *LotteryConfig) HitRatio(card []int32, kind int32) int32 { - //@testcode - //return 500 - //@testcode - for i := 0; i < len(this.Koc); i++ { - if this.Koc[i].Kind == kind { - return this.Koc[i].Ratio - } - } - return 0 -} - -func CommonLotteryConfigParser(cfg string) (LotteryConfiger, error) { - dncfg := &LotteryConfig{} - err := json.Unmarshal([]byte(cfg), dncfg) - return dncfg, err -} diff --git a/model/lotterycode.go b/model/lotterycode.go new file mode 100644 index 0000000..98c82a9 --- /dev/null +++ b/model/lotterycode.go @@ -0,0 +1,129 @@ +package model + +import "time" + +var ( + LotteryCodeDBName = "log" + LotteryCodeCollName = "log_lotterycode" +) + +// 玩家抽奖活动开奖码 + +type LotteryCode struct { + Platform string `bson:"-"` + SnId int32 // 玩家id + CId int64 // 抽奖配置id + StartTs int64 // 抽奖开始时间 + Code string // 开奖码 + Index int // 开奖码序号 +} + +type UpsertLotteryCodeReq struct { + Platform string + Item *LotteryCode +} + +// UpsertLotteryCode 记录玩家抽奖活动开奖码 +func UpsertLotteryCode(plt string, item *LotteryCode) (err error) { + if rpcCli == nil { + return ErrRPClientNoConn + } + + req := &UpsertLotteryCodeReq{ + Platform: plt, + Item: item, + } + ret := false + + err = rpcCli.CallWithTimeout("LotteryCodeSvc.Upsert", req, &ret, time.Second*30) + if err != nil { + return err + } + return nil +} + +type GetLotteryCodeReq struct { + Platform string + Code string + CId int64 + StartTs int64 +} + +type GetLotteryCodeResp struct { + Item *LotteryCode +} + +// GetLotteryCode 获取玩家抽奖活动开奖码 +func GetLotteryCode(plt string, code string, cid int64, startTs int64) (*LotteryCode, error) { + if rpcCli == nil { + return nil, ErrRPClientNoConn + } + + req := &GetLotteryCodeReq{ + Platform: plt, + Code: code, + CId: cid, + StartTs: startTs, + } + ret := &GetLotteryCodeResp{} + + err := rpcCli.CallWithTimeout("LotteryCodeSvc.Get", req, ret, time.Second*30) + if err != nil { + return nil, err + } + return ret.Item, nil +} + +// GetLotteryCodeJoinNumReq 获取参与人数 +type GetLotteryCodeJoinNumReq struct { + Platform string + CId int64 + StartTs int64 +} + +// GetLotteryCodeJoinNum 获取参与人数 +func GetLotteryCodeJoinNum(plt string, cid int64, startTs int64) (int, error) { + if rpcCli == nil { + return 0, ErrRPClientNoConn + } + req := &GetLotteryCodeJoinNumReq{ + Platform: plt, + CId: cid, + StartTs: startTs, + } + ret := 0 + err := rpcCli.CallWithTimeout("LotteryCodeSvc.GetJoinNum", req, &ret, time.Second*30) + if err != nil { + return 0, err + } + return ret, nil +} + +// GetLotteryCodeRandomReq 获取随机开奖码 +type GetLotteryCodeRandomReq struct { + Platform string + CId int64 + StartTs int64 + Index int + Tp int +} + +// GetLotteryCodeRandom 获取随机开奖码 +func GetLotteryCodeRandom(plt string, cid int64, startTs int64, tp, index int) (*LotteryCode, error) { + if rpcCli == nil { + return nil, ErrRPClientNoConn + } + req := &GetLotteryCodeRandomReq{ + Platform: plt, + CId: cid, + StartTs: startTs, + Index: index, + Tp: tp, + } + ret := &GetLotteryCodeResp{} + err := rpcCli.CallWithTimeout("LotteryCodeSvc.GetRandom", req, ret, time.Second*30) + if err != nil { + return nil, err + } + return ret.Item, nil +} diff --git a/model/lotterydata.go b/model/lotterydata.go new file mode 100644 index 0000000..af9b051 --- /dev/null +++ b/model/lotterydata.go @@ -0,0 +1,81 @@ +package model + +import "time" + +var ( + LotteryDataDBName = "log" + LotteryDataCollName = "log_lotterydata" +) + +// LotteryData 单个抽奖活动的状态 +type LotteryData struct { + Platform string `bson:"-"` + CId int64 // 抽奖配置id + StartTs int64 // 开始时间 + EndTs int64 // 结束时间 + WinTs int64 // 发奖时间 + Reward []*ItemInfo // 奖励 + Price int64 // 价值,美分 + TotalCode int64 // 总开奖码数 + RobotCodeNum int64 // 机器人开奖码数 + ImageURL string // 图片地址 + + Code int // 抽奖码序号 + PlayerIndex int // 玩家序号 + RobotIndex int // 机器人序号 + IsSend bool // 是否发奖 + PlayerNum int32 // 参与人数 + CostCard int64 // 所有消耗房卡数量 + Format string // 兑奖码格式 + CustomAward int64 // 竞技馆奖品价值 + RobotCodeCount int // 机器人已发放开奖码数量 + Num int // 期数 + + SnId int32 // 玩家ID + Name string // 玩家名字 + WinCostCard int64 // 中奖玩家消耗房卡数量 + WinCode string // 中奖码 + IsRobot bool // 是否机器人中奖 +} + +type GetLotteryDataReq struct { + Platform string +} + +type GetLotteryDataResp struct { + Data []*LotteryData +} + +func GetLotteryData(plt string) (ret []*LotteryData, err error) { + if rpcCli == nil { + return nil, ErrRPClientNoConn + } + + req := &GetLotteryDataReq{ + Platform: plt, + } + resp := &GetLotteryDataResp{} + err = rpcCli.CallWithTimeout("LotteryDataSvc.Get", req, resp, time.Second*30) + if err != nil { + return nil, err + } + return resp.Data, nil +} + +type UpsertLotteryDataReq struct { + Platform string + Data []*LotteryData +} + +func UpsertLotteryData(plt string, data []*LotteryData) (err error) { + if rpcCli == nil { + return + } + + req := &UpsertLotteryDataReq{ + Platform: plt, + Data: data, + } + ret := false + return rpcCli.CallWithTimeout("LotteryDataSvc.Upsert", req, &ret, time.Second*30) +} diff --git a/model/lotterylog.go b/model/lotterylog.go index f79d465..c639b80 100644 --- a/model/lotterylog.go +++ b/model/lotterylog.go @@ -1,103 +1,96 @@ package model import ( + "mongo.games.com/game/protocol/webapi" "time" - - "github.com/globalsign/mgo" - "github.com/globalsign/mgo/bson" ) +// 中奖记录 + var ( LotteryLogDBName = "log" LotteryLogCollName = "log_lottery" ) +type LotteryAward struct { + Id int64 // 奖品Id + N int64 // 奖品数量 +} + +type LotteryShow struct { + Tp int32 // 1图片 2视频 + Url string // 地址 + ImgUrl string // 缩略图地址 +} + type LotteryLog struct { - LogId bson.ObjectId `bson:"_id"` - Platform string //平台名称 - GameFreeId int32 - GameId int32 - SnId int32 - NickName string - IsRob bool - Cards []int32 - Kind int32 - Coin int32 //变化金额 - Pool int64 //变化前彩金池数量 - RecId string - Time time.Time + Platform string `bson:"-"` + CId int64 // 抽奖配置Id + CTime time.Time // 开始时间 + Num int32 // 期数 + SnId int32 // 中奖玩家 + Name string // 中奖玩家昵称 + PlayerNum int64 // 参与人数 + Code string // 中奖码 + CostCard int64 // 消耗房卡 + IsRobot bool // 是否机器人 + Award []*LotteryAward // 奖品 + Price int64 // 奖品价值 + IsMust bool // 是否必中 + ImageURL string // 图片地址 + Ts int64 // 发奖时间 + Media []*LotteryShow // 媒体信息 } -func NewLotteryLog() *LotteryLog { - log := &LotteryLog{LogId: bson.NewObjectId()} - return log +type GetLotteryLogReq struct { + Platform string + Num int } -func NewLotteryLogEx(platform string, gamefreeid, gameid, snid int32, nick string, isRob bool, cards []int32, kind, coin int32, pool int64, recId string) *LotteryLog { - cl := NewLotteryLog() - cl.SnId = snid - cl.Platform = platform - cl.NickName = nick - cl.IsRob = isRob - cl.GameFreeId = gamefreeid - cl.GameId = gameid - cl.Cards = cards - cl.Kind = kind - cl.Coin = coin - cl.RecId = recId - cl.Pool = pool - cl.Time = time.Now() - return cl -} -func InsertLotteryLog(platform string, gamefreeid, gameid, snid int32, nick string, isRob bool, cards []int32, kind, coin int32, pool int64, recId string) error { - if rpcCli == nil { - return ErrRPClientNoConn - } - var ret bool - cl := NewLotteryLogEx(platform, gamefreeid, gameid, snid, nick, isRob, cards, kind, coin, pool, recId) - return rpcCli.CallWithTimeout("LotteryLogSvc.InsertLotteryLog", cl, &ret, time.Second*30) +type GetLotteryLogResp struct { + LotteryLog []*LotteryLog } -func InsertLotteryLogs(logs ...*LotteryLog) (err error) { - if rpcCli == nil { - return ErrRPClientNoConn - } - var ret bool - return rpcCli.CallWithTimeout("LotteryLogSvc.InsertLotteryLogs", logs, &ret, time.Second*30) -} - -type RemoveLotteryLogArgs struct { - Plt string - Ts time.Time -} - -func RemoveLotteryLog(plt string, ts time.Time) (ret *mgo.ChangeInfo, err error) { +func GetLotteryLogs(plt string, count int) ([]*LotteryLog, error) { if rpcCli == nil { return nil, ErrRPClientNoConn } - args := &RemoveLotteryLogArgs{ - Plt: plt, - Ts: ts, + + req := &GetLotteryLogReq{ + Platform: plt, + Num: count, } - err = rpcCli.CallWithTimeout("LotteryLogSvc.RemoveLotteryLog", args, &ret, time.Second*30) - return + ret := &GetLotteryLogResp{ + LotteryLog: []*LotteryLog{}, + } + err := rpcCli.CallWithTimeout("LotteryLogSvc.GetLotteryLogs", req, ret, time.Second*30) + if err != nil { + return nil, err + } + + return ret.LotteryLog, nil } -type GetLotteryLogBySnidAndLessTsArgs struct { - Plt string - Id int32 - Ts time.Time +type UpdateLotteryMediaReq struct { + Platform string + LogId string + Media []*webapi.ShowLottery } -func GetLotteryLogBySnidAndLessTs(plt string, id int32, ts time.Time) (ret []LotteryLog, err error) { +func UpdateLotteryMedia(plt string, logId string, req []*webapi.ShowLottery) error { if rpcCli == nil { - return nil, ErrRPClientNoConn + return ErrRPClientNoConn } - args := &GetLotteryLogBySnidAndLessTsArgs{ - Plt: plt, - Id: id, - Ts: ts, + + upsertReq := &UpdateLotteryMediaReq{ + Platform: plt, + LogId: logId, + Media: req, } - err = rpcCli.CallWithTimeout("LotteryLogSvc.GetLotteryLogBySnidAndLessTs", args, &ret, time.Second*30) - return + ret := false + err := rpcCli.CallWithTimeout("LotteryLogSvc.UpdateMedia", upsertReq, &ret, time.Second*30) + if err != nil { + return err + } + return nil } diff --git a/model/message.go b/model/message.go index 54bc381..651d1b5 100644 --- a/model/message.go +++ b/model/message.go @@ -40,6 +40,7 @@ const ( MSGTYPE_ITEM_CHANGE //背包使用兑换 MSGTYPE_RANK_PermitReward // 通行证排行奖励 MSGTYPE_ClientUpgrade // 客户端升级 + MSGTYPE_Lottery // 开奖码抽奖 ) const ( diff --git a/mq/keyconf.go b/mq/keyconf.go index 456bbcf..942db62 100644 --- a/mq/keyconf.go +++ b/mq/keyconf.go @@ -8,7 +8,7 @@ const ( BackGameRecord = "evt_gamerec" BackLogin = "evt_login" BackOnline = "evt_online" - BackPhoneLottery = "evt_phonelottery" + BackPhoneLottery = "evt_phonelottery" // 积分抽奖 BackReliefund = "log_relieffund" BackSystemFreeGive = "evt_systemfreegive" BackSystemPermitCycle = "back_permitcycle" @@ -27,8 +27,9 @@ const () // worldsrv 消息 const ( - WorldLogCoinAck = "world_logcoin_ack" - WorldInviteAck = "world_invite_ack" + WorldLogCoinAck = "world_logcoin_ack" + WorldInviteAck = "world_invite_ack" + WorldCustomAward = "world_customaward" ) // dbproxy 消息 @@ -40,10 +41,13 @@ const ( DBInvite = "db_invite" DBAPILog = "db_apilog" DBGiveLog = "db_givelog" + DBLotteryCode = "db_lotterycode" // 玩家抽奖码 + DBLotteryLog = "db_lotterylog" // 中奖记录 ) // ranksrv 消息 const ( RankCustomLogAward = "rank_customlog_award" // 房卡场对局奖励 + RankLotteryLog = "rank_lotterylog" // 中奖记录 ) diff --git a/protocol/doc.md b/protocol/doc.md index 855a21e..cd95479 100644 --- a/protocol/doc.md +++ b/protocol/doc.md @@ -166,9 +166,11 @@ - 5581~5599 ### fortunedragon.prot + - 5600~5609 ### fortunerabbit.prot + - 5610~5619 ### game.proto(玩家离开) diff --git a/protocol/gamehall/game.pb.go b/protocol/gamehall/game.pb.go index 2bfe73e..2b39388 100644 --- a/protocol/gamehall/game.pb.go +++ b/protocol/gamehall/game.pb.go @@ -2117,6 +2117,7 @@ type PrivateRoomInfo struct { CreateTs int64 `protobuf:"varint,11,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //创建时间戳 State int32 `protobuf:"varint,12,opt,name=State,proto3" json:"State,omitempty"` //房间状态 0等待中 1进行中 2已结束 Players []*PrivatePlayerInfo `protobuf:"bytes,13,rep,name=Players,proto3" json:"Players,omitempty"` //玩家列表 + IsSystem bool `protobuf:"varint,14,opt,name=IsSystem,proto3" json:"IsSystem,omitempty"` //是否系统创建 } func (x *PrivateRoomInfo) Reset() { @@ -2242,6 +2243,13 @@ func (x *PrivateRoomInfo) GetPlayers() []*PrivatePlayerInfo { return nil } +func (x *PrivateRoomInfo) GetIsSystem() bool { + if x != nil { + return x.IsSystem + } + return false +} + //PACKET_SC_GETPRIVATEROOMLIST type SCGetPrivateRoomList struct { state protoimpl.MessageState @@ -4394,7 +4402,7 @@ var file_game_proto_rawDesc = []byte{ 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x49, 0x64, 0x22, 0xa4, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x49, 0x64, 0x22, 0xc0, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, @@ -4420,384 +4428,386 @@ var file_game_proto_rawDesc = []byte{ 0x74, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x53, 0x43, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, - 0x70, 0x12, 0x2f, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x22, 0x75, 0x0a, 0x0f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x09, 0x51, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, - 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, - 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x51, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, - 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, - 0x09, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, - 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x22, 0x36, 0x0a, 0x0b, - 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, - 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a, - 0x0d, 0x53, 0x43, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, - 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a, 0x11, 0x43, - 0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x4f, 0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, - 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x79, 0x70, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x79, 0x70, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a, - 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x74, - 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1a, 0x0a, - 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, - 0x6c, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, - 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, - 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, - 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, - 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x52, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69, - 0x73, 0x74, 0x54, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73, - 0x74, 0x54, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x22, 0x7c, 0x0a, 0x0d, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74, - 0x72, 0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, - 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x2f, 0x0a, + 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x75, + 0x0a, 0x0f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, + 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x09, 0x51, 0x52, 0x6f, 0x6f, 0x6d, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, + 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x78, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x2f, 0x0a, + 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x51, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, + 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, + 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, 0x09, 0x47, 0x61, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x22, 0x36, 0x0a, 0x0b, 0x53, 0x43, 0x47, 0x61, + 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x43, 0x41, + 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, - 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, - 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x46, - 0x6f, 0x72, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, - 0x6f, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65, - 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, - 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, - 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x46, 0x6f, 0x72, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x43, 0x46, 0x6f, 0x72, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, + 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a, 0x11, 0x43, 0x53, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, + 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f, + 0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, + 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x6f, + 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x6f, + 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55, + 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0xc0, 0x01, + 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x2c, + 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, + 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, + 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, + 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, + 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, + 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, + 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, + 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, + 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, + 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, + 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x22, + 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x6f, + 0x6f, 0x6d, 0x22, 0x7c, 0x0a, 0x0d, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, + 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f, + 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, + 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x46, 0x6f, 0x72, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, + 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, + 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, + 0x6f, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, + 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, + 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f, + 0x64, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x43, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, + 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, + 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x77, 0x69, 0x74, 0x68, 0x46, 0x6c, + 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53, + 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43, + 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, - 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x77, 0x69, - 0x74, 0x68, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x61, - 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x4d, - 0x0a, 0x0b, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, - 0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, - 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, - 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x50, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x02, 0x54, 0x73, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, - 0x75, 0x6d, 0x22, 0x49, 0x0a, 0x0b, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x22, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x02, 0x54, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb8, 0x03, - 0x0a, 0x0e, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, - 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, - 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, - 0x12, 0x2a, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, - 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, - 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, - 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, - 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, - 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, - 0xb1, 0x0a, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, - 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, - 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, - 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, - 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, - 0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, - 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, - 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, - 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, - 0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, - 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, - 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, - 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, - 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, - 0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, - 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, - 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, - 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, - 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, - 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, - 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x10, 0xcc, - 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xcd, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, - 0x10, 0xce, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, + 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, + 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, + 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x49, + 0x0a, 0x0b, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, + 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, + 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x54, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb8, 0x03, 0x0a, 0x0e, 0x52, 0x6f, + 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, + 0x65, 0x55, 0x52, 0x49, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, + 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, + 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x3a, 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0xb1, 0x0a, 0x0a, 0x11, + 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x16, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, + 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x10, 0xfa, 0x07, 0x12, + 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x73, 0x46, 0x75, + 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, + 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, 0x08, 0x12, 0x1d, 0x0a, + 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, 0x6f, 0x74, 0x45, 0x6e, + 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, 0x12, 0x2c, 0x0a, 0x27, + 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x75, 0x62, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, + 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, + 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x98, 0x08, + 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x6e, + 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, + 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, + 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, + 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, + 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa2, 0x08, 0x12, 0x1d, + 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x47, 0x61, + 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, 0x08, 0x12, 0x16, 0x0a, + 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, + 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, 0x08, 0x12, 0x15, 0x0a, + 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, + 0x74, 0x10, 0xcb, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x10, 0xcc, 0x08, 0x12, 0x17, 0x0a, + 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x10, 0xcd, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, + 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xce, 0x08, 0x12, + 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, + 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0xb5, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, - 0x41, 0x72, 0x65, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, - 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, - 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, - 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, - 0x0a, 0x1a, 0x4f, 0x70, 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, - 0x49, 0x73, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, - 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x44, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0xaa, 0x46, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, - 0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, - 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0xb2, 0x46, 0x2a, 0xc8, 0x09, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, - 0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, - 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, - 0x9c, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, - 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, - 0x9f, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, - 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, - 0x41, 0x4d, 0x45, 0x10, 0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, - 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa4, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, - 0x47, 0x10, 0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x10, 0xb9, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, - 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, - 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, - 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21, - 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, - 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2, - 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, - 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, - 0x54, 0x10, 0xe3, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, - 0xe8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, - 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, - 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, - 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, - 0x49, 0x54, 0x10, 0xf6, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, - 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xfa, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x10, 0xfb, - 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, - 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0xfc, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x10, 0xfd, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, - 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, - 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, - 0x4f, 0x4d, 0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, - 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, - 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, - 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x2a, 0x29, - 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x65, - 0x72, 0x6f, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, - 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, - 0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12, + 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x65, 0x47, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70, + 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c, + 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x45, 0x72, 0x72, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, + 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12, + 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61, + 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab, + 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, + 0xc8, 0x09, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, + 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, + 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, + 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, + 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, + 0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, + 0x45, 0x10, 0xa4, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, + 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb8, 0x11, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xb9, + 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, + 0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, + 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, + 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, + 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2, 0x11, 0x12, 0x21, 0x0a, + 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, + 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe3, 0x11, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, + 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, + 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x4e, 0x54, + 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, + 0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf6, + 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, + 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, + 0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x10, 0xfa, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x10, 0xfb, 0x11, 0x12, 0x18, 0x0a, + 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x10, 0xfc, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0xfd, + 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, + 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, + 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc3, + 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, + 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, + 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, + 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, + 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xc9, + 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, + 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x2a, 0x29, 0x0a, 0x08, 0x44, 0x61, + 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, + 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, + 0x69, 0x73, 0x74, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, + 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/gamehall/game.proto b/protocol/gamehall/game.proto index 59fdfcf..4d11603 100644 --- a/protocol/gamehall/game.proto +++ b/protocol/gamehall/game.proto @@ -332,6 +332,7 @@ message PrivateRoomInfo{ int64 CreateTs = 11; //创建时间戳 int32 State = 12; //房间状态 0等待中 1进行中 2已结束 repeated PrivatePlayerInfo Players = 13; //玩家列表 + bool IsSystem = 14; //是否系统创建 } //PACKET_SC_GETPRIVATEROOMLIST diff --git a/protocol/rank/rank.pb.go b/protocol/rank/rank.pb.go index 6508d86..d52e539 100644 --- a/protocol/rank/rank.pb.go +++ b/protocol/rank/rank.pb.go @@ -49,6 +49,9 @@ const ( Rank_PACKET_CSRoomAward Rank = 10014 Rank_PACKET_SCRoomAward Rank = 10015 Rank_PACKET_SCRoomAwardOne Rank = 10016 // 竞技馆获奖记录通知 + // 竞技馆抽奖历史 + Rank_PACKET_CSLotteryHistory Rank = 10017 + Rank_PACKET_SCLotteryHistory Rank = 10018 ) // Enum value maps for Rank. @@ -72,6 +75,8 @@ var ( 10014: "PACKET_CSRoomAward", 10015: "PACKET_SCRoomAward", 10016: "PACKET_SCRoomAwardOne", + 10017: "PACKET_CSLotteryHistory", + 10018: "PACKET_SCLotteryHistory", } Rank_value = map[string]int32{ "PACKET_RANK_ZERO": 0, @@ -92,6 +97,8 @@ var ( "PACKET_CSRoomAward": 10014, "PACKET_SCRoomAward": 10015, "PACKET_SCRoomAwardOne": 10016, + "PACKET_CSLotteryHistory": 10017, + "PACKET_SCLotteryHistory": 10018, } ) @@ -1916,10 +1923,12 @@ type UserAward struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"` // 玩家id - Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 昵称 - Awards []*Item `protobuf:"bytes,3,rep,name=Awards,proto3" json:"Awards,omitempty"` // 奖品 - Ts int64 `protobuf:"varint,4,opt,name=Ts,proto3" json:"Ts,omitempty"` // 获得时间 + Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"` // 玩家id + Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 昵称 + Awards []*Item `protobuf:"bytes,3,rep,name=Awards,proto3" json:"Awards,omitempty"` // 奖品 + Ts int64 `protobuf:"varint,4,opt,name=Ts,proto3" json:"Ts,omitempty"` // 获得时间 + Price int64 `protobuf:"varint,5,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值 + ImageURL string `protobuf:"bytes,6,opt,name=ImageURL,proto3" json:"ImageURL,omitempty"` // 奖品图片 } func (x *UserAward) Reset() { @@ -1982,6 +1991,20 @@ func (x *UserAward) GetTs() int64 { return 0 } +func (x *UserAward) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *UserAward) GetImageURL() string { + if x != nil { + return x.ImageURL + } + return "" +} + //PACKET_SCRoomAward type SCRoomAward struct { state protoimpl.MessageState @@ -2054,6 +2077,244 @@ func (x *SCRoomAward) GetTotal() int32 { return 0 } +// 竞技馆抽奖历史 +// PACKET_CSLotteryHistory +type CSLotteryHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSLotteryHistory) Reset() { + *x = CSLotteryHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSLotteryHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSLotteryHistory) ProtoMessage() {} + +func (x *CSLotteryHistory) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSLotteryHistory.ProtoReflect.Descriptor instead. +func (*CSLotteryHistory) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{26} +} + +type LotteryShow struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 资源类型 + Url string `protobuf:"bytes,2,opt,name=Url,proto3" json:"Url,omitempty"` // 资源地址 + ImgUrl string `protobuf:"bytes,3,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` // 缩略图地址 +} + +func (x *LotteryShow) Reset() { + *x = LotteryShow{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LotteryShow) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LotteryShow) ProtoMessage() {} + +func (x *LotteryShow) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LotteryShow.ProtoReflect.Descriptor instead. +func (*LotteryShow) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{27} +} + +func (x *LotteryShow) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +func (x *LotteryShow) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *LotteryShow) GetImgUrl() string { + if x != nil { + return x.ImgUrl + } + return "" +} + +type LotteryHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳 + Index int32 `protobuf:"varint,2,opt,name=Index,proto3" json:"Index,omitempty"` // 期数 + SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id + Name string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家名字 + Award []*Item `protobuf:"bytes,5,rep,name=Award,proto3" json:"Award,omitempty"` // 本期奖品 + Show []*LotteryShow `protobuf:"bytes,6,rep,name=Show,proto3" json:"Show,omitempty"` // 展示列表 +} + +func (x *LotteryHistory) Reset() { + *x = LotteryHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LotteryHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LotteryHistory) ProtoMessage() {} + +func (x *LotteryHistory) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LotteryHistory.ProtoReflect.Descriptor instead. +func (*LotteryHistory) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{28} +} + +func (x *LotteryHistory) GetTs() int64 { + if x != nil { + return x.Ts + } + return 0 +} + +func (x *LotteryHistory) GetIndex() int32 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *LotteryHistory) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *LotteryHistory) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LotteryHistory) GetAward() []*Item { + if x != nil { + return x.Award + } + return nil +} + +func (x *LotteryHistory) GetShow() []*LotteryShow { + if x != nil { + return x.Show + } + return nil +} + +// PACKET_SCLotteryHistory +type SCLotteryHistory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + List []*LotteryHistory `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"` +} + +func (x *SCLotteryHistory) Reset() { + *x = SCLotteryHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_rank_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCLotteryHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCLotteryHistory) ProtoMessage() {} + +func (x *SCLotteryHistory) ProtoReflect() protoreflect.Message { + mi := &file_rank_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCLotteryHistory.ProtoReflect.Descriptor instead. +func (*SCLotteryHistory) Descriptor() ([]byte, []int) { + return file_rank_proto_rawDescGZIP(), []int{29} +} + +func (x *SCLotteryHistory) GetList() []*LotteryHistory { + if x != nil { + return x.List + } + return nil +} + var File_rank_proto protoreflect.FileDescriptor var file_rank_proto_rawDesc = []byte{ @@ -2225,63 +2486,90 @@ var file_rank_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x24, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x01, 0x4e, 0x22, 0x67, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x0b, 0x53, - 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74, - 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x2a, - 0xe2, 0x03, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, - 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, - 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, - 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, - 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, - 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, - 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, - 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, - 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, - 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, - 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, - 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, - 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, - 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9f, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, - 0x65, 0x10, 0xa0, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, - 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, - 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, - 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, - 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, - 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x01, 0x4e, 0x22, 0x99, 0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x72, + 0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x61, + 0x6e, 0x6b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x47, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x22, + 0xa7, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, + 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, + 0x68, 0x6f, 0x77, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x3c, 0x0a, 0x10, 0x53, 0x43, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x61, + 0x6e, 0x6b, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x9e, 0x04, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, + 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, + 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, + 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, + 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, + 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, + 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, + 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, + 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, + 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, + 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, + 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, + 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x12, 0x17, + 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x41, + 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9f, 0x4e, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, + 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, + 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, + 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x15, 0x0a, + 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, 0x57, 0x65, + 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, + 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2297,7 +2585,7 @@ func file_rank_proto_rawDescGZIP() []byte { } var file_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 30) var file_rank_proto_goTypes = []interface{}{ (Rank)(0), // 0: rank.Rank (RankInvite)(0), // 1: rank.RankInvite @@ -2327,6 +2615,10 @@ var file_rank_proto_goTypes = []interface{}{ (*Item)(nil), // 25: rank.Item (*UserAward)(nil), // 26: rank.UserAward (*SCRoomAward)(nil), // 27: rank.SCRoomAward + (*CSLotteryHistory)(nil), // 28: rank.CSLotteryHistory + (*LotteryShow)(nil), // 29: rank.LotteryShow + (*LotteryHistory)(nil), // 30: rank.LotteryHistory + (*SCLotteryHistory)(nil), // 31: rank.SCLotteryHistory } var file_rank_proto_depIdxs = []int32{ 3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank @@ -2344,11 +2636,14 @@ var file_rank_proto_depIdxs = []int32{ 22, // 12: rank.SCPermit.Me:type_name -> rank.PermitRank 25, // 13: rank.UserAward.Awards:type_name -> rank.Item 26, // 14: rank.SCRoomAward.List:type_name -> rank.UserAward - 15, // [15:15] is the sub-list for method output_type - 15, // [15:15] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 25, // 15: rank.LotteryHistory.Award:type_name -> rank.Item + 29, // 16: rank.LotteryHistory.Show:type_name -> rank.LotteryShow + 30, // 17: rank.SCLotteryHistory.List:type_name -> rank.LotteryHistory + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_rank_proto_init() } @@ -2669,6 +2964,54 @@ func file_rank_proto_init() { return nil } } + file_rank_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSLotteryHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rank_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LotteryShow); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rank_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LotteryHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rank_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCLotteryHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -2676,7 +3019,7 @@ func file_rank_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rank_proto_rawDesc, NumEnums: 2, - NumMessages: 26, + NumMessages: 30, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/rank/rank.proto b/protocol/rank/rank.proto index 03e8f94..5cb9956 100644 --- a/protocol/rank/rank.proto +++ b/protocol/rank/rank.proto @@ -29,6 +29,10 @@ enum Rank{ PACKET_CSRoomAward = 10014; PACKET_SCRoomAward = 10015; PACKET_SCRoomAwardOne = 10016; // 竞技馆获奖记录通知 + + // 竞技馆抽奖历史 + PACKET_CSLotteryHistory = 10017; + PACKET_SCLotteryHistory = 10018; } // 排位榜 @@ -230,6 +234,8 @@ message UserAward{ string Name = 2; // 昵称 repeated Item Awards = 3; // 奖品 int64 Ts = 4; // 获得时间 + int64 Price = 5; // 奖品价值 + string ImageURL = 6; // 奖品图片 } //PACKET_SCRoomAward @@ -238,4 +244,28 @@ message SCRoomAward{ int32 Skip = 2; // 偏移量 int32 Limit = 3; // 每页数量 int32 Total = 4; // 总数量 +} + +// 竞技馆抽奖历史 +// PACKET_CSLotteryHistory +message CSLotteryHistory{} + +message LotteryShow { + int32 Tp = 1; // 资源类型 + string Url = 2; // 资源地址 + string ImgUrl = 3; // 缩略图地址 +} + +message LotteryHistory{ + int64 Ts = 1; // 时间戳 + int32 Index = 2; // 期数 + int32 SnId = 3; // 玩家id + string Name = 4; // 玩家名字 + repeated Item Award = 5; // 本期奖品 + repeated LotteryShow Show = 6; // 展示列表 +} + +// PACKET_SCLotteryHistory +message SCLotteryHistory{ + repeated LotteryHistory List = 1; } \ No newline at end of file diff --git a/protocol/server/server.pb.go b/protocol/server/server.pb.go index 693fb61..da93985 100644 --- a/protocol/server/server.pb.go +++ b/protocol/server/server.pb.go @@ -913,6 +913,8 @@ type CustomParam struct { CostType int32 `protobuf:"varint,3,opt,name=CostType,proto3" json:"CostType,omitempty"` // 房卡场付费方式 1AA 2房主 Password string `protobuf:"bytes,4,opt,name=Password,proto3" json:"Password,omitempty"` // 房间密码 Voice int32 `protobuf:"varint,5,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1开启 2关闭 + Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值 + ImageURL string `protobuf:"bytes,7,opt,name=ImageURL,proto3" json:"ImageURL,omitempty"` // 图片地址 } func (x *CustomParam) Reset() { @@ -982,6 +984,20 @@ func (x *CustomParam) GetVoice() int32 { return 0 } +func (x *CustomParam) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *CustomParam) GetImageURL() string { + if x != nil { + return x.ImageURL + } + return "" +} + type MatchParam struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -8994,7 +9010,7 @@ var file_server_proto_rawDesc = []byte{ 0x28, 0x09, 0x52, 0x04, 0x54, 0x65, 0x78, 0x74, 0x22, 0x28, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, - 0x75, 0x6d, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x61, 0x72, + 0x75, 0x6d, 0x22, 0xd1, 0x01, 0x0a, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, @@ -9004,1153 +9020,1156 @@ var file_server_proto_rawDesc = []byte{ 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, - 0x6f, 0x69, 0x63, 0x65, 0x22, 0xec, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, - 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x49, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, - 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x43, 0x75, 0x72, - 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0d, 0x43, 0x75, 0x72, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, - 0x24, 0x0a, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, - 0x79, 0x70, 0x65, 0x22, 0x8b, 0x05, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, - 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, - 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, - 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, - 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x66, 0x74, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x45, - 0x6e, 0x74, 0x65, 0x72, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x73, 0x65, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x73, - 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x09, 0x43, 0x6f, - 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x43, 0x6f, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, - 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x12, 0x28, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, - 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x74, 0x72, 0x6c, - 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x74, 0x72, - 0x6c, 0x22, 0x3c, 0x0a, 0x0e, 0x57, 0x47, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x03, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x47, 0x72, 0x61, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x47, 0x72, 0x61, 0x63, 0x65, 0x22, - 0x4c, 0x0a, 0x0e, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, - 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0x56, 0x0a, - 0x0a, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x52, - 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, - 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0xdd, 0x06, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, - 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, - 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, - 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x54, - 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, - 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, - 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, - 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x49, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x52, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x53, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x52, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x07, 0x43, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x52, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, - 0x75, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x11, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x20, 0x0a, - 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x12, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x1a, 0x38, 0x0a, - 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x6f, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, + 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x22, 0xec, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x43, + 0x75, 0x72, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0d, 0x43, 0x75, 0x72, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0x8b, 0x05, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x66, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x41, + 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x66, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, + 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, + 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x09, + 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x43, + 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2b, 0x0a, 0x06, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x28, 0x0a, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, + 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x18, 0x1a, 0x20, 0x03, + 0x28, 0x05, 0x52, 0x09, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, + 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x74, + 0x72, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, + 0x74, 0x72, 0x6c, 0x22, 0x3c, 0x0a, 0x0e, 0x57, 0x47, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x03, 0x52, 0x03, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x47, 0x72, 0x61, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x47, 0x72, 0x61, 0x63, + 0x65, 0x22, 0x4c, 0x0a, 0x0e, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, + 0x56, 0x0a, 0x0a, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, + 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x66, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, + 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0xdd, 0x06, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, + 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1c, 0x0a, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, + 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, + 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, + 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x52, 0x07, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, + 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x57, 0x47, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x52, 0x65, 0x63, 0x68, 0x61, 0x72, 0x67, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x56, 0x43, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x1a, + 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, + 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x0d, 0x57, 0x47, 0x41, 0x75, 0x64, 0x69, 0x65, - 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, - 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, - 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, - 0x6f, 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0x91, - 0x07, 0x0a, 0x0d, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x65, - 0x6c, 0x56, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x65, 0x6c, 0x56, - 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x73, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x73, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x12, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x05, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, - 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, 0x0a, 0x10, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x13, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x52, 0x61, 0x6e, 0x6b, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x43, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6b, 0x0a, 0x0d, 0x57, 0x47, 0x41, 0x75, 0x64, + 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x50, 0x6f, 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, + 0x22, 0x91, 0x07, 0x0a, 0x0d, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, + 0x0a, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, + 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x46, 0x65, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x53, 0x65, 0x6c, 0x56, 0x69, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x65, + 0x6c, 0x56, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, + 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x57, 0x69, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, + 0x6f, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x0a, 0x12, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x43, + 0x61, 0x63, 0x68, 0x65, 0x42, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x05, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x43, 0x75, 0x72, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x57, 0x0a, 0x10, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x57, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x10, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x2e, 0x52, 0x61, + 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x52, 0x61, + 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x38, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x10, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x72, - 0x6f, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x22, 0x66, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x68, 0x6f, - 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x47, 0x57, 0x42, 0x69, - 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x13, 0x47, 0x47, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x6e, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, - 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x70, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, 0x15, 0x47, 0x47, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x42, 0x69, 0x6e, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x53, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0f, 0x57, 0x47, 0x44, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, 0x6f, - 0x75, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x03, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x74, - 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x22, 0xb8, - 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x48, - 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x0c, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, - 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x42, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x0d, 0x52, 0x65, - 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x53, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x22, 0x9c, 0x04, - 0x0a, 0x0f, 0x47, 0x52, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x52, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, - 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x52, 0x03, 0x52, 0x65, 0x63, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, 0x75, 0x62, - 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6c, 0x75, 0x62, - 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, - 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, - 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, - 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, 0x61, 0x74, - 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, 0x12, 0x1c, - 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, 0xb2, 0x01, 0x0a, - 0x0a, 0x57, 0x52, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, 0x79, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x4c, - 0x6f, 0x67, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, - 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x57, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x52, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x53, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x57, 0x54, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, - 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x8f, 0x01, 0x0a, - 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, - 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xac, - 0x01, 0x0a, 0x09, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3c, 0x0a, 0x10, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x72, 0x6f, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0x66, 0x0a, 0x0e, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, + 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x10, 0x47, 0x57, + 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x13, 0x47, + 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x69, + 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x56, 0x69, 0x70, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x56, 0x69, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x70, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x29, 0x0a, 0x15, 0x47, 0x47, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x42, + 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x69, 0x64, 0x22, 0x79, 0x0a, 0x0f, 0x57, 0x47, 0x44, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x69, 0x6e, 0x75, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x48, 0x6f, 0x75, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x48, 0x6f, 0x75, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x6f, + 0x6e, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f, 0x6e, 0x74, 0x68, + 0x22, 0xb8, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x41, 0x63, 0x63, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x0c, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x69, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x42, 0x69, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x73, 0x22, 0x41, 0x0a, 0x0d, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x12, 0x30, 0x0a, + 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x08, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x22, + 0x9c, 0x04, 0x0a, 0x0f, 0x47, 0x52, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x03, 0x52, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x52, 0x03, 0x52, 0x65, 0x63, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, + 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, + 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6c, + 0x75, 0x62, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x50, 0x6f, 0x73, + 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, + 0x6f, 0x67, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, + 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x73, 0x56, 0x65, 0x72, + 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x44, 0x22, 0xb2, + 0x01, 0x0a, 0x0a, 0x57, 0x52, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, + 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x52, 0x65, + 0x63, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x49, 0x73, 0x42, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x43, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x43, 0x69, 0x74, + 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, + 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, + 0x67, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x0c, 0x57, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x52, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x47, 0x0a, 0x0b, 0x57, 0x54, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x50, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x8f, + 0x01, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x48, 0x65, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x48, 0x65, 0x61, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, + 0x50, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x0b, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x22, 0xac, 0x01, 0x0a, 0x09, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x52, 0x05, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x22, + 0x76, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, + 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4d, + 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, + 0x61, 0x78, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x33, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x43, 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0a, + 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x69, + 0x73, 0x68, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x69, 0x73, 0x68, + 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0c, 0x47, 0x57, 0x46, 0x69, + 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, + 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x73, 0x68, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x22, 0x44, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, + 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, + 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0d, 0x57, 0x52, 0x49, + 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, + 0x69, 0x74, 0x22, 0x40, 0x0a, 0x12, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x57, 0x47, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x4b, 0x69, 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, + 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, + 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x57, 0x44, 0x44, 0x61, 0x74, + 0x61, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, + 0x83, 0x01, 0x0a, 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x43, 0x61, 0x72, 0x64, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, + 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, + 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x50, + 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5c, 0x0a, + 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0e, 0x47, + 0x57, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, + 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x57, 0x47, 0x52, 0x65, 0x62, + 0x69, 0x6e, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x4f, 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x4f, 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, + 0x64, 0x22, 0x4e, 0x0a, 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, + 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, + 0x67, 0x22, 0x51, 0x0a, 0x0b, 0x57, 0x47, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x4f, 0x70, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x73, 0x6e, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x4e, 0x65, 0x77, 0x4e, 0x6f, + 0x74, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x72, 0x6f, + 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x22, 0xa7, + 0x02, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x6f, + 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, + 0x49, 0x73, 0x46, 0x6f, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, + 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x79, 0x73, 0x49, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x53, 0x79, 0x73, 0x49, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x79, 0x73, 0x4f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x53, 0x79, 0x73, 0x4f, 0x75, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x47, 0x57, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x63, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, - 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x76, 0x0a, - 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x75, 0x72, 0x72, 0x52, 0x6f, - 0x75, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4d, 0x61, 0x78, - 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4d, 0x61, 0x78, - 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x33, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, - 0x74, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x75, 0x6d, + 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0d, 0x50, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x22, + 0xb5, 0x01, 0x0a, 0x0f, 0x57, 0x47, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x50, + 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x57, 0x47, 0x53, 0x65, + 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x42, 0x43, + 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x57, 0x42, 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x47, 0x57, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x65, + 0x76, 0x65, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x7e, 0x0a, + 0x10, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, + 0x67, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, + 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x6e, 0x69, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x08, 0x52, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x22, 0x7a, 0x0a, + 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x0a, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x42, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, + 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x54, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x42, 0x47, 0x61, + 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0c, + 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, + 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x22, 0xa8, 0x01, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, + 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x10, + 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, + 0x12, 0x40, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x52, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, + 0x63, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, + 0x22, 0x2e, 0x0a, 0x12, 0x57, 0x47, 0x50, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x5d, 0x0a, 0x0e, 0x47, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, + 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, + 0x4f, 0x0a, 0x17, 0x57, 0x47, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, + 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x20, + 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, + 0x22, 0x94, 0x01, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, + 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x44, 0x57, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, + 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, + 0x6c, 0x74, 0x22, 0x89, 0x03, 0x0a, 0x13, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, + 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, + 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x49, + 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, + 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, + 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x12, 0x28, + 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, + 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x65, 0x74, + 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x6c, + 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x43, + 0x0a, 0x17, 0x57, 0x44, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, + 0x43, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, + 0x74, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, + 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 0x53, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x22, 0xce, 0x01, 0x0a, 0x0e, 0x47, 0x57, + 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x4a, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x4a, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, + 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x0e, 0x47, 0x57, + 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, + 0x57, 0x47, 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x55, 0x73, + 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, + 0x44, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x44, 0x0a, 0x0f, 0x47, + 0x57, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x12, 0x31, + 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, + 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x22, 0x3b, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x75, 0x74, + 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x54, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x22, 0x74, + 0x0a, 0x1e, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, + 0x62, 0x4e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x10, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6f, + 0x72, 0x63, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, + 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, + 0x74, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, + 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, + 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x6e, 0x0a, + 0x18, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, + 0x65, 0x43, 0x66, 0x67, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x4c, 0x0a, + 0x16, 0x57, 0x47, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x47, + 0x57, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x22, 0x40, 0x0a, + 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, + 0x3e, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, + 0x39, 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0a, 0x46, 0x69, - 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x69, 0x73, 0x68, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x69, 0x73, 0x68, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x78, 0x0a, 0x0c, 0x47, 0x57, 0x46, 0x69, 0x73, 0x68, - 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x46, 0x69, - 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x52, 0x0b, 0x46, 0x69, 0x73, 0x68, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, - 0x22, 0x44, 0x0a, 0x0c, 0x47, 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x6f, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x52, 0x6f, 0x6f, - 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0d, 0x57, 0x52, 0x49, 0x6e, 0x76, - 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, - 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x49, 0x73, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, - 0x22, 0x40, 0x0a, 0x12, 0x57, 0x52, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x03, 0x43, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x57, 0x47, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4b, 0x69, - 0x63, 0x6b, 0x4f, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, - 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x53, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x53, 0x69, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x57, 0x44, 0x44, 0x61, 0x74, 0x61, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x34, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x43, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x83, 0x01, - 0x0a, 0x0d, 0x47, 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0b, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, - 0x72, 0x64, 0x52, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x22, 0x0a, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x6f, 0x77, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x4d, - 0x6f, 0x64, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, 0x69, 0x6e, 0x50, - 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x43, - 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x79, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x43, - 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x43, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x5c, 0x0a, 0x0d, 0x47, - 0x4e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a, 0x0e, 0x47, 0x57, 0x52, - 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x48, 0x0a, 0x12, 0x57, 0x47, 0x52, 0x65, 0x62, 0x69, 0x6e, - 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4f, - 0x6c, 0x64, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6c, - 0x64, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4e, 0x65, 0x77, 0x53, 0x6e, 0x49, 0x64, 0x22, - 0x4e, 0x0a, 0x0c, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6c, 0x61, 0x67, 0x12, - 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x46, - 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x22, - 0x51, 0x0a, 0x0b, 0x57, 0x47, 0x48, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x4f, 0x70, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6e, - 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x4e, 0x65, 0x77, 0x4e, 0x6f, 0x74, 0x69, - 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, - 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x69, 0x73, 0x72, 0x6f, 0x62, 0x22, 0xa7, 0x02, 0x0a, - 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x12, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, + 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x69, 0x6c, 0x6c, + 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, + 0x50, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, + 0x73, 0x22, 0xd5, 0x01, 0x0a, 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, + 0x70, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, + 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x61, 0x6d, + 0x65, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x57, 0x47, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x46, 0x6f, 0x6f, 0x6c, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x49, 0x73, - 0x46, 0x6f, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x4c, 0x6f, - 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0d, 0x4c, 0x6f, 0x73, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, - 0x49, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, - 0x79, 0x73, 0x49, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x79, 0x73, - 0x4f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x79, 0x73, 0x4f, 0x75, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x47, 0x57, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x73, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x50, 0x75, 0x6d, 0x70, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, - 0x50, 0x75, 0x6d, 0x70, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xb5, 0x01, - 0x0a, 0x0f, 0x57, 0x47, 0x52, 0x65, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, - 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, - 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd7, 0x01, 0x0a, 0x15, 0x57, 0x47, 0x53, 0x65, 0x74, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x57, 0x47, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x09, 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, + 0x75, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, + 0x75, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, + 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x53, 0x53, 0x52, + 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x57, 0x42, 0x43, 0x6f, 0x69, - 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x57, 0x42, - 0x43, 0x6f, 0x69, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x52, 0x65, 0x73, - 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x2a, 0x0a, 0x14, 0x47, 0x57, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, - 0x57, 0x42, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x10, 0x47, - 0x57, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x12, - 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, - 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x53, 0x6e, 0x69, 0x64, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03, 0x28, 0x08, - 0x52, 0x09, 0x49, 0x73, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x6e, 0x67, 0x22, 0x7a, 0x0a, 0x12, 0x47, - 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x4c, 0x65, 0x61, 0x76, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x18, 0x0a, - 0x07, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x73, 0x22, 0xc0, 0x01, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x42, 0x65, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x42, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x47, 0x61, 0x69, 0x6e, - 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, - 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, - 0x69, 0x6e, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x57, 0x42, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x0c, 0x47, 0x57, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x44, - 0x61, 0x74, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0xa8, - 0x01, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x54, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, - 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x72, 0x64, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x47, 0x57, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x40, - 0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, - 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x57, 0x69, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x47, 0x61, 0x69, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x63, 0x49, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x65, 0x63, 0x49, 0x64, 0x22, 0x2e, - 0x0a, 0x12, 0x57, 0x47, 0x50, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x44, 0x54, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5d, - 0x0a, 0x0e, 0x47, 0x52, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, - 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x4f, 0x0a, - 0x17, 0x57, 0x47, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, - 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, - 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, - 0x01, 0x0a, 0x0d, 0x57, 0x47, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x50, 0x75, 0x6d, 0x70, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x33, 0x0a, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x44, 0x42, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x52, 0x0a, 0x44, 0x42, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x41, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x50, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6c, 0x74, - 0x22, 0x89, 0x03, 0x0a, 0x13, 0x44, 0x57, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, - 0x61, 0x6d, 0x65, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x49, 0x6e, 0x54, - 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x49, 0x6e, - 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x49, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x47, 0x61, 0x6d, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x4f, 0x6e, - 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x61, 0x78, 0x77, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0f, - 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x41, 0x63, 0x63, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x73, - 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, - 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x10, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x65, 0x74, 0x43, 0x6f, - 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x6c, 0x6f, 0x77, - 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0e, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x43, 0x0a, 0x17, - 0x57, 0x44, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x4c, 0x6f, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4c, 0x6f, 0x67, 0x43, 0x6e, 0x74, 0x22, - 0x85, 0x01, 0x0a, 0x0b, 0x47, 0x57, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, - 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, - 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x42, 0x61, 0x6e, 0x6b, 0x65, 0x72, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x22, 0xce, 0x01, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, - 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, - 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4a, 0x61, - 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4a, 0x61, - 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x68, - 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x0e, 0x47, 0x57, 0x47, 0x61, - 0x6d, 0x65, 0x4a, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x0e, 0x57, 0x47, - 0x4e, 0x69, 0x63, 0x65, 0x49, 0x64, 0x52, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x55, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x4e, 0x65, 0x77, 0x49, 0x64, 0x22, 0x61, 0x0a, 0x11, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x44, 0x12, - 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x44, 0x0a, 0x0f, 0x47, 0x57, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x12, 0x31, 0x0a, 0x06, - 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, - 0x4f, 0x49, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x22, - 0x3b, 0x0a, 0x13, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x41, 0x75, 0x74, 0x6f, 0x4d, - 0x61, 0x72, 0x6b, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x54, 0x61, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x54, 0x61, 0x67, 0x22, 0x74, 0x0a, 0x1e, - 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x6f, 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, - 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, + 0x0a, 0x10, 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x6f, 0x62, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, + 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, + 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, + 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, - 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x62, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, - 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x10, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x6f, 0x72, 0x63, - 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x22, 0xc8, 0x01, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x41, 0x75, 0x74, - 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, - 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, - 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x52, 0x61, 0x74, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x55, 0x73, 0x65, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, - 0x1a, 0x0a, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x08, 0x44, 0x6f, 0x77, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x22, 0x6e, 0x0a, 0x18, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x12, 0x36, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x43, - 0x66, 0x67, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x66, 0x67, 0x22, 0x4c, 0x0a, 0x16, 0x57, - 0x47, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, - 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x03, 0x43, 0x66, 0x67, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x43, 0x66, 0x67, 0x52, 0x03, 0x43, 0x66, 0x67, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0c, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x49, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x22, 0x40, 0x0a, 0x0c, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x3e, 0x0a, - 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x16, 0x0a, - 0x06, 0x53, 0x74, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, - 0x74, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x22, 0x39, 0x0a, - 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, + 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x0d, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, + 0x4a, 0x61, 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, + 0x53, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x24, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x67, 0x57, 0x69, 0x6e, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, + 0x70, 0x69, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x70, 0x69, + 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x49, + 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, + 0x72, 0x64, 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, + 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, + 0x71, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, + 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, + 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, + 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, + 0x61, 0x76, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x47, 0x57, 0x50, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, + 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0e, 0x47, 0x52, 0x44, 0x65, 0x73, + 0x74, 0x72, 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, + 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x52, 0x57, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x47, 0x44, + 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, + 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, + 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, + 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, + 0x0a, 0x05, 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, + 0x6f, 0x74, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, + 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9b, 0x03, + 0x0a, 0x0c, 0x47, 0x57, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, + 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x2e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x4c, 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x6f, + 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, + 0x66, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, + 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, + 0x12, 0x29, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, + 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, + 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x75, 0x0a, 0x0d, 0x57, + 0x47, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, + 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, + 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, + 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, + 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, + 0x65, 0x79, 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x57, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x4d, 0x73, 0x67, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x57, 0x41, 0x64, 0x64, 0x53, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, + 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, + 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, + 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0xaf, 0x01, 0x0a, + 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, + 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, + 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, + 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0x60, + 0x0a, 0x10, 0x57, 0x47, 0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x22, 0x32, 0x0a, 0x0c, 0x57, 0x47, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x47, 0x57, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x22, - 0xd5, 0x01, 0x0a, 0x12, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4e, 0x75, - 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4e, - 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x70, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x70, 0x65, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, 0x6f, - 0x67, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x4c, - 0x6f, 0x67, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, - 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x11, 0x57, 0x47, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x51, 0x75, 0x69, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x16, 0x57, 0x47, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x61, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x08, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x42, - 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, - 0x42, 0x61, 0x73, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4f, 0x75, 0x74, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4f, 0x75, 0x74, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x52, 0x65, 0x73, 0x74, 0x4e, 0x75, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x53, 0x53, 0x52, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x12, 0x0a, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x96, 0x01, 0x0a, 0x10, - 0x57, 0x47, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x6f, 0x62, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x1c, - 0x0a, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x4e, 0x65, 0x65, 0x64, 0x41, 0x77, 0x61, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x0d, 0x57, 0x47, 0x47, 0x61, 0x6d, 0x65, 0x4a, 0x61, - 0x63, 0x6b, 0x70, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x24, 0x0a, - 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x67, 0x57, 0x69, 0x6e, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x70, 0x69, - 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x53, 0x70, 0x69, 0x6e, 0x49, - 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x42, 0x61, 0x73, 0x65, 0x42, 0x65, 0x74, 0x12, 0x1e, 0x0a, - 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x55, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0d, 0x49, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x43, - 0x61, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, - 0x73, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x65, 0x72, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x47, 0x61, 0x74, 0x65, 0x53, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x49, 0x73, 0x51, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x49, 0x73, 0x51, 0x4d, 0x12, 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, - 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x28, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x53, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0c, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0x71, 0x0a, - 0x15, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, - 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x47, 0x61, 0x74, 0x65, 0x53, - 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, - 0x22, 0x23, 0x0a, 0x0d, 0x57, 0x47, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x15, 0x47, 0x57, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x47, 0x61, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, - 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x57, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, - 0x63, 0x65, 0x6e, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, - 0x65, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x2a, 0x0a, 0x0e, 0x47, 0x52, 0x44, 0x65, 0x73, 0x74, 0x72, - 0x6f, 0x79, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x49, - 0x64, 0x22, 0x24, 0x0a, 0x10, 0x52, 0x57, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x41, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x41, 0x63, 0x63, 0x22, 0x40, 0x0a, 0x0c, 0x57, 0x47, 0x44, 0x54, 0x52, - 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0xc6, 0x01, 0x0a, 0x0c, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x69, - 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x44, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x54, 0x6f, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x6f, 0x74, - 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, - 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, - 0x69, 0x6e, 0x22, 0x37, 0x0a, 0x07, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, - 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x9b, 0x03, 0x0a, 0x0c, - 0x47, 0x57, 0x44, 0x54, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, - 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, - 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x44, - 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4e, 0x43, 0x6f, 0x69, 0x6e, - 0x12, 0x2e, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x44, 0x54, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x65, - 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, - 0x65, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x43, 0x6f, 0x69, 0x6e, - 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, 0x61, 0x6d, - 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4e, 0x75, 0x6d, 0x4f, 0x66, 0x47, - 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x6f, 0x70, 0x4e, 0x75, 0x6d, 0x12, 0x29, - 0x0a, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x52, 0x07, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x44, 0x43, - 0x6f, 0x69, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x44, 0x43, 0x6f, 0x69, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x54, 0x44, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x75, 0x0a, 0x0d, 0x57, 0x47, 0x52, - 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, - 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, 0x65, 0x62, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, - 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x57, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x44, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x43, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, - 0x67, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x57, 0x41, 0x64, 0x64, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, - 0x65, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x22, 0x72, 0x0a, 0x0e, 0x57, 0x47, 0x53, 0x69, 0x6e, 0x67, - 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x63, 0x65, 0x6e, - 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x63, 0x65, 0x6e, 0x65, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x12, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x12, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x09, 0x57, - 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, - 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, - 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x22, 0x60, 0x0a, 0x10, - 0x57, 0x47, 0x42, 0x75, 0x79, 0x52, 0x65, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x22, 0x32, - 0x0a, 0x0c, 0x57, 0x47, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, - 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53, - 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x2a, - 0x83, 0x17, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, - 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, 0x07, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, 0x0a, 0x12, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x49, 0x4e, - 0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, 0x07, 0x12, - 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, 0x52, 0x56, - 0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, 0x10, 0xf5, - 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x43, - 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, - 0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xcd, - 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, - 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, - 0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x43, 0x41, - 0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, - 0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0xd3, - 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, - 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, 0x12, 0x20, - 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xd5, 0x08, - 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, 0x49, 0x4e, - 0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0xd7, - 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x52, - 0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, 0x12, 0x16, - 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, - 0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, 0x54, 0x45, - 0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, - 0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, - 0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, 0x43, 0x4b, - 0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x4e, 0x41, - 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, 0x4d, 0x4f, - 0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, 0x44, 0x10, - 0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x43, 0x48, - 0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, - 0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, - 0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, 0x12, 0x19, - 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, 0x53, 0x48, - 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, 0x4f, 0x52, - 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, - 0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x41, - 0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, - 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, 0x12, 0x20, - 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, - 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xee, 0x08, - 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, - 0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xef, - 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, 0xf2, 0x08, - 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, 0x0a, 0x13, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, 0x72, 0x6c, - 0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, - 0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, 0x0b, 0x12, - 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, 0x54, 0x49, - 0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, - 0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x10, - 0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x4c, 0x45, - 0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, 0x45, 0x57, - 0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x52, - 0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x4f, - 0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, - 0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10, - 0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, - 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, 0x42, 0x6f, - 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x50, - 0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, - 0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, - 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, 0xef, 0x0b, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, - 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x4c, - 0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, - 0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, - 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, 0x0b, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, 0x20, 0x0a, - 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, - 0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, 0x0b, 0x12, - 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, - 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, 0x4e, 0x53, - 0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, 0x0a, 0x18, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x4f, - 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x54, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0xf8, - 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, - 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, - 0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x54, 0x5f, - 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, 0x0a, 0x1b, + 0x53, 0x6e, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, + 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, + 0x64, 0x2a, 0x83, 0x17, 0x0a, 0x0a, 0x53, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, + 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x52, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x43, 0x55, 0x52, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x10, 0xe8, + 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x42, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xe9, 0x07, 0x12, 0x17, + 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x54, 0x45, + 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xea, 0x07, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x53, 0x5f, 0x44, 0x49, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0xec, + 0x07, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x53, 0x5f, 0x53, + 0x52, 0x56, 0x43, 0x54, 0x52, 0x4c, 0x10, 0xed, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x10, 0xf4, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x47, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x54, 0x41, 0x47, + 0x10, 0xf5, 0x07, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x53, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x54, 0x41, 0x47, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x43, 0x41, 0x53, 0x54, 0x10, 0xf6, 0x07, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, + 0x10, 0xcd, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, + 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xce, 0x08, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xcf, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, 0x12, 0x1f, - 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, 0x0b, 0x12, - 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, 0x0b, 0x12, - 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x43, 0x45, - 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x52, 0x4f, - 0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, - 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, 0x83, 0x0c, - 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, - 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, - 0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, - 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, - 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, 0x0c, 0x12, - 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, - 0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x88, 0x0c, - 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x44, 0x45, - 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, 0x19, 0x0a, - 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, - 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, - 0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, - 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8c, - 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, - 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, 0x0c, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, 0x49, 0x4e, - 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, 0x0a, 0x19, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, 0x49, 0x4e, - 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x12, 0x1d, 0x0a, 0x18, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x42, 0x55, 0x59, 0x52, 0x45, 0x43, - 0x54, 0x49, 0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x90, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x6b, 0x69, 0x6e, 0x10, 0x91, 0x0c, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x10, 0x92, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, - 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xd0, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x52, 0x4f, 0x4f, 0x4d, + 0x43, 0x41, 0x52, 0x44, 0x10, 0xd1, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, + 0x45, 0x10, 0xd2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x44, 0x52, 0x4f, 0x50, 0x4c, 0x49, 0x4e, 0x45, + 0x10, 0xd3, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, + 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0xd4, 0x08, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x42, 0x49, 0x4e, 0x44, 0x10, + 0xd5, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x47, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x55, 0x4e, 0x42, + 0x49, 0x4e, 0x44, 0x10, 0xd6, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, + 0x10, 0xd7, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, + 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xd8, 0x08, + 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x47, 0x41, + 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xd9, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x45, 0x4e, + 0x54, 0x45, 0x52, 0x10, 0xda, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, + 0x45, 0x10, 0xdb, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xdc, 0x08, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x49, 0x4e, 0x56, + 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x4f, 0x54, 0x10, 0xdd, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x4b, 0x49, + 0x43, 0x4b, 0x4f, 0x55, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x10, 0xde, 0x08, 0x12, 0x1a, + 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x4e, 0x41, 0x4c, 0x59, 0x53, 0x49, 0x53, 0x10, 0xdf, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x42, 0x49, 0x4c, 0x4c, + 0x4d, 0x4f, 0x4e, 0x45, 0x59, 0x10, 0xe1, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x53, 0x4e, 0x49, + 0x44, 0x10, 0xe2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xe3, 0x08, + 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, + 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x10, 0xe4, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0xe5, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x47, 0x52, 0x41, 0x43, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, + 0x43, 0x45, 0x4e, 0x45, 0x10, 0xe6, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x4e, 0x44, 0x10, 0xe7, 0x08, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x46, 0x49, + 0x53, 0x48, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x10, 0xe8, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x46, + 0x4f, 0x52, 0x43, 0x45, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xe9, 0x08, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x57, 0x49, 0x4e, 0x53, 0x4f, 0x43, 0x4f, 0x52, 0x45, 0x10, 0xea, 0x08, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x44, 0x41, 0x54, 0x41, 0x10, 0xeb, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xec, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x41, 0x43, 0x4b, 0x54, 0x68, 0x69, 0x72, 0x64, + 0x52, 0x65, 0x62, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xed, 0x08, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x57, 0x5f, 0x54, 0x68, + 0x69, 0x72, 0x64, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, + 0xee, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, + 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, + 0x10, 0xef, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, + 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x63, 0x10, 0xf0, 0x08, 0x12, 0x19, 0x0a, 0x14, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x10, 0xf1, 0x08, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x52, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x10, + 0xf2, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xf3, 0x08, 0x12, 0x18, + 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x57, 0x42, 0x43, 0x74, + 0x72, 0x6c, 0x43, 0x66, 0x67, 0x10, 0xf4, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x41, 0x52, 0x44, + 0x53, 0x10, 0xdc, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x52, 0x45, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0xdd, + 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xde, 0x0b, 0x12, 0x18, 0x0a, + 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4e, 0x45, 0x57, 0x4e, 0x4f, + 0x54, 0x49, 0x43, 0x45, 0x10, 0xdf, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x53, 0x54, 0x41, 0x54, 0x49, + 0x43, 0x10, 0xe0, 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x43, 0x4f, 0x49, 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, + 0x47, 0x10, 0xe1, 0x0b, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x53, 0x45, 0x54, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x42, 0x4c, 0x41, 0x43, 0x4b, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe2, 0x0b, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x56, + 0x45, 0x57, 0x42, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0xe3, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, + 0x41, 0x52, 0x41, 0x4d, 0x10, 0xe4, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x4c, 0x4f, 0x47, 0x10, 0xe5, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x47, 0x57, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x43, 0x4f, + 0x49, 0x4e, 0x10, 0xe6, 0x0b, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x47, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xea, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x47, 0x52, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x10, 0xeb, 0x0b, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x47, 0x5f, 0x53, 0x79, 0x6e, 0x63, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x61, 0x66, 0x65, + 0x42, 0x6f, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xec, 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x54, 0x43, 0x4f, 0x49, + 0x4e, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0xed, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x43, 0x4c, 0x55, 0x42, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x10, 0xee, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x47, 0x57, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4c, 0x4f, 0x47, 0x10, + 0xef, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, + 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xf0, 0x0b, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, + 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xf1, 0x0b, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x43, 0x4f, 0x49, + 0x4e, 0x10, 0xf2, 0x0b, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, + 0x57, 0x5f, 0x4e, 0x49, 0x43, 0x45, 0x49, 0x44, 0x52, 0x45, 0x42, 0x49, 0x4e, 0x44, 0x10, 0xf3, + 0x0b, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x57, 0x49, 0x4e, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0xf4, 0x0b, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, + 0x59, 0x45, 0x52, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x52, 0x4b, 0x54, 0x41, 0x47, 0x10, 0xf5, + 0x0b, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, + 0x4e, 0x56, 0x49, 0x54, 0x45, 0x52, 0x4f, 0x42, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x43, 0x4f, 0x49, + 0x4e, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xf6, 0x0b, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, + 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xf7, 0x0b, 0x12, 0x24, 0x0a, + 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, + 0x54, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, + 0x10, 0xf8, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x10, 0xf9, 0x0b, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, + 0x54, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x50, 0x41, 0x59, 0x10, 0xfa, 0x0b, 0x12, 0x20, + 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, + 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0xfb, 0x0b, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x47, 0x52, 0x41, 0x44, 0x45, 0x10, 0xfc, + 0x0b, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, + 0x4c, 0x41, 0x59, 0x45, 0x52, 0x51, 0x55, 0x49, 0x54, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0xfd, + 0x0b, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, + 0x43, 0x45, 0x4e, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x42, 0x41, 0x53, 0x45, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0xfe, 0x0b, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x54, 0x4f, 0x50, 0x4c, + 0x41, 0x59, 0x45, 0x52, 0x10, 0xff, 0x0b, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x49, 0x4e, 0x56, 0x49, 0x54, 0x45, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x52, 0x4f, 0x42, 0x10, 0x80, 0x0c, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x57, 0x47, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4a, 0x41, 0x43, 0x4b, 0x50, 0x4f, 0x54, 0x10, + 0x83, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, + 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, + 0x47, 0x41, 0x4d, 0x45, 0x10, 0x85, 0x0c, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, + 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x86, 0x0c, 0x12, 0x23, 0x0a, 0x1e, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x87, + 0x0c, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, + 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x4d, 0x49, 0x4e, 0x49, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, + 0x88, 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x52, 0x5f, + 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x53, 0x43, 0x45, 0x4e, 0x45, 0x10, 0x89, 0x0c, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, + 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x8a, 0x0c, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0x8b, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x57, 0x47, 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, + 0x10, 0x8c, 0x0c, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, + 0x5f, 0x44, 0x54, 0x52, 0x4f, 0x4f, 0x4d, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x10, 0x8d, + 0x0c, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x53, + 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8e, 0x0c, 0x12, 0x1e, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x57, 0x5f, 0x41, 0x44, 0x44, 0x53, + 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x10, 0x8f, 0x0c, 0x12, 0x1d, + 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x42, 0x55, 0x59, 0x52, + 0x45, 0x43, 0x54, 0x49, 0x4d, 0x45, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x90, 0x0c, 0x12, 0x19, 0x0a, + 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x57, 0x47, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x53, 0x6b, 0x69, 0x6e, 0x10, 0x91, 0x0c, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x10, 0x92, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/server/server.proto b/protocol/server/server.proto index fbe0719..3445297 100644 --- a/protocol/server/server.proto +++ b/protocol/server/server.proto @@ -173,6 +173,8 @@ message CustomParam { int32 CostType = 3; // 房卡场付费方式 1AA 2房主 string Password = 4; // 房间密码 int32 Voice = 5; // 是否开启语音 1开启 2关闭 + int64 Price = 6; // 奖品价值 + string ImageURL = 7; // 图片地址 } message MatchParam { diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index ad044f9..2d4ac9e 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -8671,6 +8671,7 @@ type RoomConfig struct { CostType int32 `protobuf:"varint,14,opt,name=CostType,proto3" json:"CostType,omitempty"` // 消耗类型 1AA 2房主 3自定义 Voice int32 `protobuf:"varint,15,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1是 2否 3自定义 ImageURI string `protobuf:"bytes,16,opt,name=ImageURI,proto3" json:"ImageURI,omitempty"` // 奖励图片 + Price int64 `protobuf:"varint,17,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值 } func (x *RoomConfig) Reset() { @@ -8817,6 +8818,13 @@ func (x *RoomConfig) GetImageURI() string { return "" } +func (x *RoomConfig) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + // etcd /game/room_config_system type RoomConfigSystem struct { state protoimpl.MessageState @@ -9176,6 +9184,285 @@ func (x *PopUpWindowInfo) GetWeight() int32 { return 0 } +// etcd /game/lottery 抽奖活动配置 +type LotteryConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 1开启 2关闭 + Cycle int32 `protobuf:"varint,3,opt,name=Cycle,proto3" json:"Cycle,omitempty"` // 循环开关 1开启 2关闭 + List []*LotteryInfo `protobuf:"bytes,4,rep,name=List,proto3" json:"List,omitempty"` // 活动列表 +} + +func (x *LotteryConfig) Reset() { + *x = LotteryConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LotteryConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LotteryConfig) ProtoMessage() {} + +func (x *LotteryConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LotteryConfig.ProtoReflect.Descriptor instead. +func (*LotteryConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{96} +} + +func (x *LotteryConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *LotteryConfig) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *LotteryConfig) GetCycle() int32 { + if x != nil { + return x.Cycle + } + return 0 +} + +func (x *LotteryConfig) GetList() []*LotteryInfo { + if x != nil { + return x.List + } + return nil +} + +type LotteryInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id + StartHMS int64 `protobuf:"varint,2,opt,name=StartHMS,proto3" json:"StartHMS,omitempty"` // 开始时间,时*10000 + 分*100 + 秒 + EndHMS int64 `protobuf:"varint,3,opt,name=EndHMS,proto3" json:"EndHMS,omitempty"` // 结束时间,时*10000 + 分*100 + 秒 + WinHMS int64 `protobuf:"varint,4,opt,name=WinHMS,proto3" json:"WinHMS,omitempty"` // 开奖时间,时*10000 + 分*100 + 秒 + Reward []*ItemInfo `protobuf:"bytes,5,rep,name=Reward,proto3" json:"Reward,omitempty"` // 奖励 + Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` // 价值,美分 + TotalCode int64 `protobuf:"varint,7,opt,name=TotalCode,proto3" json:"TotalCode,omitempty"` // 总开奖码数 + RobotCode int64 `protobuf:"varint,8,opt,name=RobotCode,proto3" json:"RobotCode,omitempty"` // 机器人开奖码数 + On int32 `protobuf:"varint,9,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 + ImageURI string `protobuf:"bytes,10,opt,name=ImageURI,proto3" json:"ImageURI,omitempty"` // 图片地址 +} + +func (x *LotteryInfo) Reset() { + *x = LotteryInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LotteryInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LotteryInfo) ProtoMessage() {} + +func (x *LotteryInfo) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[97] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LotteryInfo.ProtoReflect.Descriptor instead. +func (*LotteryInfo) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{97} +} + +func (x *LotteryInfo) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LotteryInfo) GetStartHMS() int64 { + if x != nil { + return x.StartHMS + } + return 0 +} + +func (x *LotteryInfo) GetEndHMS() int64 { + if x != nil { + return x.EndHMS + } + return 0 +} + +func (x *LotteryInfo) GetWinHMS() int64 { + if x != nil { + return x.WinHMS + } + return 0 +} + +func (x *LotteryInfo) GetReward() []*ItemInfo { + if x != nil { + return x.Reward + } + return nil +} + +func (x *LotteryInfo) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *LotteryInfo) GetTotalCode() int64 { + if x != nil { + return x.TotalCode + } + return 0 +} + +func (x *LotteryInfo) GetRobotCode() int64 { + if x != nil { + return x.RobotCode + } + return 0 +} + +func (x *LotteryInfo) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + +func (x *LotteryInfo) GetImageURI() string { + if x != nil { + return x.ImageURI + } + return "" +} + +// etcd /game/user_lottery 必中抽奖配置 +type UserLottery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + Id int64 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id + SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家ID + Time string `protobuf:"bytes,4,opt,name=Time,proto3" json:"Time,omitempty"` // 抽奖时间 2006-01-02 15:04:05 + Num int64 `protobuf:"varint,5,opt,name=Num,proto3" json:"Num,omitempty"` // 第几期 + On int32 `protobuf:"varint,6,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭 +} + +func (x *UserLottery) Reset() { + *x = UserLottery{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserLottery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserLottery) ProtoMessage() {} + +func (x *UserLottery) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserLottery.ProtoReflect.Descriptor instead. +func (*UserLottery) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{98} +} + +func (x *UserLottery) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *UserLottery) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *UserLottery) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *UserLottery) GetTime() string { + if x != nil { + return x.Time + } + return "" +} + +func (x *UserLottery) GetNum() int64 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *UserLottery) GetOn() int32 { + if x != nil { + return x.On + } + return 0 +} + var File_common_proto protoreflect.FileDescriptor var file_common_proto_rawDesc = []byte{ @@ -10532,7 +10819,7 @@ var file_common_proto_rawDesc = []byte{ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, - 0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, + 0x72, 0x74, 0x49, 0x64, 0x22, 0xe2, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, @@ -10561,57 +10848,92 @@ var file_common_proto_rawDesc = []byte{ 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, - 0x55, 0x52, 0x49, 0x22, 0x96, 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x55, 0x52, 0x49, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x96, 0x03, 0x0a, 0x10, 0x52, 0x6f, + 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, + 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, + 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, + 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, + 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x46, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x46, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x75, + 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, + 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x4f, 0x6e, 0x22, 0x7f, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x07, 0x4f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, + 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, 0x11, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, - 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, - 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, - 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, - 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x75, 0x6c, 0x6c, - 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x75, 0x6c, 0x6c, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, - 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x4f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x7f, 0x0a, 0x0d, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x46, - 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x46, 0x6f, - 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, - 0x11, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 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, 0x2b, - 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7f, 0x0a, 0x0f, 0x50, - 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x26, 0x5a, 0x24, - 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x70, 0x55, + 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x7f, 0x0a, 0x0f, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, + 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x22, 0x7a, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x91, + 0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e, + 0x64, 0x48, 0x4d, 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x45, 0x6e, 0x64, 0x48, + 0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x48, 0x4d, 0x53, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x48, 0x4d, 0x53, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f, + 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62, + 0x6f, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x52, 0x49, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, + 0x52, 0x49, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x74, 0x74, 0x65, + 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, + 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, + 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10626,7 +10948,7 @@ func file_common_proto_rawDescGZIP() []byte { return file_common_proto_rawDescData } -var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 106) +var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 109) var file_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -10724,32 +11046,35 @@ var file_common_proto_goTypes = []interface{}{ (*ClientUpgrade)(nil), // 93: webapi.ClientUpgrade (*PopUpWindowConfig)(nil), // 94: webapi.PopUpWindowConfig (*PopUpWindowInfo)(nil), // 95: webapi.PopUpWindowInfo - nil, // 96: webapi.Platform.BindTelRewardEntry - nil, // 97: webapi.PlayerData.RankScoreEntry - nil, // 98: webapi.ItemShop.AwardEntry - nil, // 99: webapi.VIPcfg.AwardEntry - nil, // 100: webapi.VIPcfg.Privilege1Entry - nil, // 101: webapi.VIPcfg.Privilege7Entry - nil, // 102: webapi.VIPcfg.Privilege9Entry - nil, // 103: webapi.ActInviteConfig.PayScoreEntry - nil, // 104: webapi.SkinLevel.UpItemEntry - nil, // 105: webapi.SkinItem.UnlockParamEntry - (*server.DB_GameFree)(nil), // 106: server.DB_GameFree - (*server.DB_GameItem)(nil), // 107: server.DB_GameItem + (*LotteryConfig)(nil), // 96: webapi.LotteryConfig + (*LotteryInfo)(nil), // 97: webapi.LotteryInfo + (*UserLottery)(nil), // 98: webapi.UserLottery + nil, // 99: webapi.Platform.BindTelRewardEntry + nil, // 100: webapi.PlayerData.RankScoreEntry + nil, // 101: webapi.ItemShop.AwardEntry + nil, // 102: webapi.VIPcfg.AwardEntry + nil, // 103: webapi.VIPcfg.Privilege1Entry + nil, // 104: webapi.VIPcfg.Privilege7Entry + nil, // 105: webapi.VIPcfg.Privilege9Entry + nil, // 106: webapi.ActInviteConfig.PayScoreEntry + nil, // 107: webapi.SkinLevel.UpItemEntry + nil, // 108: webapi.SkinItem.UnlockParamEntry + (*server.DB_GameFree)(nil), // 109: server.DB_GameFree + (*server.DB_GameItem)(nil), // 110: server.DB_GameItem } var file_common_proto_depIdxs = []int32{ 2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch 3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig 4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame - 96, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 99, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 106, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 109, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree 8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree 0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting 1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting 1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting - 106, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 97, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 109, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 100, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry 32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo 14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo 14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo @@ -10762,7 +11087,7 @@ var file_common_proto_depIdxs = []int32{ 32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo 25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop 29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight - 98, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 101, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry 30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop 32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo 33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward @@ -10783,14 +11108,14 @@ var file_common_proto_depIdxs = []int32{ 38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate 48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree 48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree - 99, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 100, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry - 101, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry - 102, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry + 102, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 103, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry + 104, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 105, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry 51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg 38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate 55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig - 103, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry + 106, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry 62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward 62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward 62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward @@ -10807,12 +11132,12 @@ var file_common_proto_depIdxs = []int32{ 69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo 70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers 72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData - 107, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem + 110, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem 32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo 75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo 76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo - 104, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry - 105, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry + 107, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry + 108, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry 78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel 79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem 82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData @@ -10823,11 +11148,13 @@ var file_common_proto_depIdxs = []int32{ 32, // 82: webapi.RoomConfig.Reward:type_name -> webapi.ItemInfo 32, // 83: webapi.ClientUpgrade.Reward:type_name -> webapi.ItemInfo 95, // 84: webapi.PopUpWindowConfig.Info:type_name -> webapi.PopUpWindowInfo - 85, // [85:85] is the sub-list for method output_type - 85, // [85:85] is the sub-list for method input_type - 85, // [85:85] is the sub-list for extension type_name - 85, // [85:85] is the sub-list for extension extendee - 0, // [0:85] is the sub-list for field type_name + 97, // 85: webapi.LotteryConfig.List:type_name -> webapi.LotteryInfo + 32, // 86: webapi.LotteryInfo.Reward:type_name -> webapi.ItemInfo + 87, // [87:87] is the sub-list for method output_type + 87, // [87:87] is the sub-list for method input_type + 87, // [87:87] is the sub-list for extension type_name + 87, // [87:87] is the sub-list for extension extendee + 0, // [0:87] is the sub-list for field type_name } func init() { file_common_proto_init() } @@ -11988,6 +12315,42 @@ func file_common_proto_init() { return nil } } + file_common_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LotteryConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LotteryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_common_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserLottery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -11995,7 +12358,7 @@ func file_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_proto_rawDesc, NumEnums: 0, - NumMessages: 106, + NumMessages: 109, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index b47da19..8f06429 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -923,8 +923,8 @@ message MachineInfo{ string Name = 9;//场次名字 double BuyPrice = 10; //进货价 double CatchPrice = 11; //一次抓取价格 - double ProfitMin = 12; //盈利区间最小值 - double ProfitMax = 13; //盈利区间最大值 + double ProfitMin = 12; //盈利区间最小值 + double ProfitMax = 13; //盈利区间最大值 } // etcd /game/match_audience message MatchAudience { @@ -967,6 +967,7 @@ message RoomConfig { int32 CostType = 14; // 消耗类型 1AA 2房主 3自定义 int32 Voice = 15; // 是否开启语音 1是 2否 3自定义 string ImageURI = 16; // 奖励图片 + int64 Price = 17; // 奖品价值 } // etcd /game/room_config_system @@ -1006,4 +1007,35 @@ message PopUpWindowInfo{ string Key = 3; int32 OpenStatus = 4;//1-开启 2-关闭 int32 Weight = 5;//弹窗权重 +} + +// etcd /game/lottery 抽奖活动配置 +message LotteryConfig{ + string Platform = 1; // 平台 + int32 On = 2; // 活动开关 1开启 2关闭 + int32 Cycle = 3; // 循环开关 1开启 2关闭 + repeated LotteryInfo List = 4; // 活动列表 +} + +message LotteryInfo{ + int64 Id = 1; // 配置id + int64 StartHMS = 2; // 开始时间,时*10000 + 分*100 + 秒 + int64 EndHMS = 3; // 结束时间,时*10000 + 分*100 + 秒 + int64 WinHMS = 4; // 开奖时间,时*10000 + 分*100 + 秒 + repeated ItemInfo Reward = 5; // 奖励 + int64 Price = 6; // 价值,美分 + int64 TotalCode = 7; // 总开奖码数 + int64 RobotCode = 8; // 机器人开奖码数 + int32 On = 9; // 开关 1开启 2关闭 + string ImageURI = 10; // 图片地址 +} + +// etcd /game/user_lottery 必中抽奖配置 +message UserLottery{ + string Platform = 1; // 平台 + int64 Id = 2; // 配置id + int32 SnId = 3; // 玩家ID + string Time = 4; // 抽奖时间 2006-01-02 15:04:05 + int64 Num = 5; // 第几期 + int32 On = 6; // 开关 1开启 2关闭 } \ No newline at end of file diff --git a/protocol/webapi/webapi.pb.go b/protocol/webapi/webapi.pb.go index a0f88c8..b4a4da9 100644 --- a/protocol/webapi/webapi.pb.go +++ b/protocol/webapi/webapi.pb.go @@ -9497,6 +9497,189 @@ func (x *SAGetDollExchangeOrder) GetOrderList() []*ExchangeOrderInfo { return nil } +// 设置抽奖获奖图片和视频 +// post /api/game/show_lottery +type ASShowLottery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台 + LogId string `protobuf:"bytes,2,opt,name=LogId,proto3" json:"LogId,omitempty"` // 日志id + List []*ShowLottery `protobuf:"bytes,3,rep,name=List,proto3" json:"List,omitempty"` // 资源 +} + +func (x *ASShowLottery) Reset() { + *x = ASShowLottery{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ASShowLottery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ASShowLottery) ProtoMessage() {} + +func (x *ASShowLottery) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[139] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ASShowLottery.ProtoReflect.Descriptor instead. +func (*ASShowLottery) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{139} +} + +func (x *ASShowLottery) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ASShowLottery) GetLogId() string { + if x != nil { + return x.LogId + } + return "" +} + +func (x *ASShowLottery) GetList() []*ShowLottery { + if x != nil { + return x.List + } + return nil +} + +type ShowLottery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 资源类型 1图片 2视频 + Url string `protobuf:"bytes,2,opt,name=Url,proto3" json:"Url,omitempty"` // 资源地址 + ImgUrl string `protobuf:"bytes,3,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` // 视频缩略图地址 +} + +func (x *ShowLottery) Reset() { + *x = ShowLottery{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShowLottery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShowLottery) ProtoMessage() {} + +func (x *ShowLottery) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[140] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShowLottery.ProtoReflect.Descriptor instead. +func (*ShowLottery) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{140} +} + +func (x *ShowLottery) GetTp() int32 { + if x != nil { + return x.Tp + } + return 0 +} + +func (x *ShowLottery) GetUrl() string { + if x != nil { + return x.Url + } + return "" +} + +func (x *ShowLottery) GetImgUrl() string { + if x != nil { + return x.ImgUrl + } + return "" +} + +type SAShowLottery struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tag TagCode `protobuf:"varint,1,opt,name=Tag,proto3,enum=webapi.TagCode" json:"Tag,omitempty"` //错误码 + Msg string `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"` //错误信息 +} + +func (x *SAShowLottery) Reset() { + *x = SAShowLottery{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SAShowLottery) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SAShowLottery) ProtoMessage() {} + +func (x *SAShowLottery) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[141] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SAShowLottery.ProtoReflect.Descriptor instead. +func (*SAShowLottery) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{141} +} + +func (x *SAShowLottery) GetTag() TagCode { + if x != nil { + return x.Tag + } + return TagCode_UNKNOWN +} + +func (x *SAShowLottery) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + var File_webapi_proto protoreflect.FileDescriptor var file_webapi_proto_rawDesc = []byte{ @@ -10522,24 +10705,40 @@ var file_webapi_proto_rawDesc = []byte{ 0x12, 0x37, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0xdc, 0x01, 0x0a, 0x07, 0x54, 0x61, - 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, - 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, - 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, - 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, - 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, - 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x0d, 0x41, 0x53, 0x53, + 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x52, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x0b, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x22, 0x44, + 0x0a, 0x0d, 0x53, 0x41, 0x53, 0x68, 0x6f, 0x77, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, + 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, + 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, + 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x4d, 0x73, 0x67, 0x2a, 0xdc, 0x01, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, + 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, + 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, + 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, + 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, + 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, + 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, + 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, + 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, + 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x10, 0x0c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, + 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -10555,7 +10754,7 @@ func file_webapi_proto_rawDescGZIP() []byte { } var file_webapi_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 139) +var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 142) var file_webapi_proto_goTypes = []interface{}{ (TagCode)(0), // 0: webapi.TagCode (*SAPlatformInfo)(nil), // 1: webapi.SAPlatformInfo @@ -10697,93 +10896,96 @@ var file_webapi_proto_goTypes = []interface{}{ (*SARoomInfo)(nil), // 137: webapi.SARoomInfo (*ASGetDollExchangeOrder)(nil), // 138: webapi.ASGetDollExchangeOrder (*SAGetDollExchangeOrder)(nil), // 139: webapi.SAGetDollExchangeOrder - (*Platform)(nil), // 140: webapi.Platform - (*PlatformGameConfig)(nil), // 141: webapi.PlatformGameConfig - (*GameConfigGroup)(nil), // 142: webapi.GameConfigGroup - (*GameConfigGlobal)(nil), // 143: webapi.GameConfigGlobal - (*PlatformDbConfig)(nil), // 144: webapi.PlatformDbConfig - (*CoinPoolSetting)(nil), // 145: webapi.CoinPoolSetting - (*RoomInfo)(nil), // 146: webapi.RoomInfo - (*PlayerSingleAdjust)(nil), // 147: webapi.PlayerSingleAdjust - (*PlayerData)(nil), // 148: webapi.PlayerData - (*HorseRaceLamp)(nil), // 149: webapi.HorseRaceLamp - (*MessageInfo)(nil), // 150: webapi.MessageInfo - (*ServerInfo)(nil), // 151: webapi.ServerInfo - (*OnlineReport)(nil), // 152: webapi.OnlineReport - (*ItemInfo)(nil), // 153: webapi.ItemInfo - (*ExchangeShop)(nil), // 154: webapi.ExchangeShop - (*ShopWeight)(nil), // 155: webapi.ShopWeight + (*ASShowLottery)(nil), // 140: webapi.ASShowLottery + (*ShowLottery)(nil), // 141: webapi.ShowLottery + (*SAShowLottery)(nil), // 142: webapi.SAShowLottery + (*Platform)(nil), // 143: webapi.Platform + (*PlatformGameConfig)(nil), // 144: webapi.PlatformGameConfig + (*GameConfigGroup)(nil), // 145: webapi.GameConfigGroup + (*GameConfigGlobal)(nil), // 146: webapi.GameConfigGlobal + (*PlatformDbConfig)(nil), // 147: webapi.PlatformDbConfig + (*CoinPoolSetting)(nil), // 148: webapi.CoinPoolSetting + (*RoomInfo)(nil), // 149: webapi.RoomInfo + (*PlayerSingleAdjust)(nil), // 150: webapi.PlayerSingleAdjust + (*PlayerData)(nil), // 151: webapi.PlayerData + (*HorseRaceLamp)(nil), // 152: webapi.HorseRaceLamp + (*MessageInfo)(nil), // 153: webapi.MessageInfo + (*ServerInfo)(nil), // 154: webapi.ServerInfo + (*OnlineReport)(nil), // 155: webapi.OnlineReport + (*ItemInfo)(nil), // 156: webapi.ItemInfo + (*ExchangeShop)(nil), // 157: webapi.ExchangeShop + (*ShopWeight)(nil), // 158: webapi.ShopWeight } var file_webapi_proto_depIdxs = []int32{ 0, // 0: webapi.ASPlatformInfo.Tag:type_name -> webapi.TagCode - 140, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform + 143, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform 0, // 2: webapi.ASGameConfig.Tag:type_name -> webapi.TagCode - 141, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig + 144, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig 0, // 4: webapi.ASGameConfigGroup.Tag:type_name -> webapi.TagCode - 142, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup + 145, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup 0, // 6: webapi.ASGameConfigGlobal.Tag:type_name -> webapi.TagCode - 143, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal + 146, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal 0, // 8: webapi.ASDbConfig.Tag:type_name -> webapi.TagCode - 144, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig - 140, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform + 147, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig + 143, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform 0, // 11: webapi.SAUpdatePlatform.Tag:type_name -> webapi.TagCode - 143, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal + 146, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal 0, // 13: webapi.SAUpdateGameConfigGlobal.Tag:type_name -> webapi.TagCode - 141, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig + 144, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig 0, // 15: webapi.SAUpdateGameConfig.Tag:type_name -> webapi.TagCode - 142, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup + 145, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup 0, // 17: webapi.SAUpdateGameConfigGroup.Tag:type_name -> webapi.TagCode 0, // 18: webapi.SAAddCoinById.Tag:type_name -> webapi.TagCode 0, // 19: webapi.SAResetGamePool.Tag:type_name -> webapi.TagCode - 145, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 148, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting 0, // 21: webapi.SAUpdateGamePool.Tag:type_name -> webapi.TagCode 0, // 22: webapi.SAQueryGamePoolByGameId.Tag:type_name -> webapi.TagCode - 145, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting - 145, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 148, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 148, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting 0, // 25: webapi.SAQueryAllGamePool.Tag:type_name -> webapi.TagCode 26, // 26: webapi.SAQueryAllGamePool.CoinPoolStatesInfo:type_name -> webapi.CoinPoolStatesInfo 0, // 27: webapi.SAListRoom.Tag:type_name -> webapi.TagCode - 146, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo + 149, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo 0, // 29: webapi.SAGetRoom.Tag:type_name -> webapi.TagCode - 146, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo + 149, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo 0, // 31: webapi.SADestroyRoom.Tag:type_name -> webapi.TagCode - 147, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust + 150, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust 0, // 33: webapi.SASinglePlayerAdjust.Tag:type_name -> webapi.TagCode - 147, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust + 150, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust 0, // 35: webapi.SAGetPlayerData.Tag:type_name -> webapi.TagCode - 148, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData + 151, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData 0, // 37: webapi.SAMorePlayerData.Tag:type_name -> webapi.TagCode - 148, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData + 151, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData 0, // 39: webapi.SAKickPlayer.Tag:type_name -> webapi.TagCode 42, // 40: webapi.ASUpdatePlayerElement.PlayerEleArgs:type_name -> webapi.PlayerEleArgs 0, // 41: webapi.SAUpdatePlayerElement.Tag:type_name -> webapi.TagCode 0, // 42: webapi.SAWhiteBlackControl.Tag:type_name -> webapi.TagCode 0, // 43: webapi.SAQueryHorseRaceLampList.Tag:type_name -> webapi.TagCode - 149, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 152, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp 0, // 45: webapi.SACreateHorseRaceLamp.Tag:type_name -> webapi.TagCode 0, // 46: webapi.SAGetHorseRaceLampById.Tag:type_name -> webapi.TagCode - 149, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp - 149, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 152, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 152, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp 0, // 49: webapi.SAEditHorseRaceLamp.Tag:type_name -> webapi.TagCode 0, // 50: webapi.SARemoveHorseRaceLampById.Tag:type_name -> webapi.TagCode 0, // 51: webapi.SABlackBySnId.Tag:type_name -> webapi.TagCode 0, // 52: webapi.SACreateShortMessage.Tag:type_name -> webapi.TagCode 0, // 53: webapi.SAQueryShortMessageList.Tag:type_name -> webapi.TagCode - 150, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo + 153, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo 0, // 55: webapi.SADeleteShortMessage.Tag:type_name -> webapi.TagCode 0, // 56: webapi.SAQueryOnlineReportList.Tag:type_name -> webapi.TagCode - 148, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData + 151, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData 0, // 58: webapi.SASrvCtrlClose.Tag:type_name -> webapi.TagCode 0, // 59: webapi.SASrvCtrlNotice.Tag:type_name -> webapi.TagCode 0, // 60: webapi.SASrvCtrlStartScript.Tag:type_name -> webapi.TagCode 0, // 61: webapi.SAListServerStates.Tag:type_name -> webapi.TagCode - 151, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo + 154, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo 0, // 63: webapi.SAServerStateSwitch.Tag:type_name -> webapi.TagCode 0, // 64: webapi.SAResetEtcdData.Tag:type_name -> webapi.TagCode 0, // 65: webapi.SAOnlineReportTotal.Tag:type_name -> webapi.TagCode - 152, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport + 155, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport 0, // 67: webapi.SAAddCoinByIdAndPT.Tag:type_name -> webapi.TagCode - 153, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo + 156, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo 83, // 69: webapi.ASCreateJYB.Award:type_name -> webapi.JybInfoAward 0, // 70: webapi.SACreateJYB.Tag:type_name -> webapi.TagCode 0, // 71: webapi.SAUpdateJYB.Tag:type_name -> webapi.TagCode @@ -10795,10 +10997,10 @@ var file_webapi_proto_depIdxs = []int32{ 94, // 77: webapi.SAGetExchangeOrder.OrderList:type_name -> webapi.ExchangeOrderInfo 0, // 78: webapi.SAUpExchangeStatus.Tag:type_name -> webapi.TagCode 0, // 79: webapi.SAGetExchangeShop.Tag:type_name -> webapi.TagCode - 154, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop - 155, // 81: webapi.SAGetExchangeShop.Weight:type_name -> webapi.ShopWeight + 157, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop + 158, // 81: webapi.SAGetExchangeShop.Weight:type_name -> webapi.ShopWeight 0, // 82: webapi.SAThdUpdatePlayerCoin.Tag:type_name -> webapi.TagCode - 153, // 83: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo + 156, // 83: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo 0, // 84: webapi.SACallbackPayment.Tag:type_name -> webapi.TagCode 0, // 85: webapi.SAResource.Tag:type_name -> webapi.TagCode 0, // 86: webapi.SASendSms.Tag:type_name -> webapi.TagCode @@ -10807,7 +11009,7 @@ var file_webapi_proto_depIdxs = []int32{ 0, // 89: webapi.SAGetImgVerify.Tag:type_name -> webapi.TagCode 0, // 90: webapi.SAPlayerDelete.Tag:type_name -> webapi.TagCode 0, // 91: webapi.SAPlayerInviteLink.Tag:type_name -> webapi.TagCode - 153, // 92: webapi.ASAddItemById.ItemInfo:type_name -> webapi.ItemInfo + 156, // 92: webapi.ASAddItemById.ItemInfo:type_name -> webapi.ItemInfo 0, // 93: webapi.SAAddItemById.Tag:type_name -> webapi.TagCode 130, // 94: webapi.SASMSConfig.Info:type_name -> webapi.SMSInfo 0, // 95: webapi.SASMSConfig.Tag:type_name -> webapi.TagCode @@ -10817,11 +11019,13 @@ var file_webapi_proto_depIdxs = []int32{ 136, // 99: webapi.SARoomInfo.List:type_name -> webapi.RoundInfo 0, // 100: webapi.SAGetDollExchangeOrder.Tag:type_name -> webapi.TagCode 94, // 101: webapi.SAGetDollExchangeOrder.OrderList:type_name -> webapi.ExchangeOrderInfo - 102, // [102:102] is the sub-list for method output_type - 102, // [102:102] is the sub-list for method input_type - 102, // [102:102] is the sub-list for extension type_name - 102, // [102:102] is the sub-list for extension extendee - 0, // [0:102] is the sub-list for field type_name + 141, // 102: webapi.ASShowLottery.List:type_name -> webapi.ShowLottery + 0, // 103: webapi.SAShowLottery.Tag:type_name -> webapi.TagCode + 104, // [104:104] is the sub-list for method output_type + 104, // [104:104] is the sub-list for method input_type + 104, // [104:104] is the sub-list for extension type_name + 104, // [104:104] is the sub-list for extension extendee + 0, // [0:104] is the sub-list for field type_name } func init() { file_webapi_proto_init() } @@ -12499,6 +12703,42 @@ func file_webapi_proto_init() { return nil } } + file_webapi_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ASShowLottery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_webapi_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShowLottery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_webapi_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SAShowLottery); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -12506,7 +12746,7 @@ func file_webapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_webapi_proto_rawDesc, NumEnums: 1, - NumMessages: 139, + NumMessages: 142, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/webapi.proto b/protocol/webapi/webapi.proto index 0f9f309..aaf1fe9 100644 --- a/protocol/webapi/webapi.proto +++ b/protocol/webapi/webapi.proto @@ -1003,4 +1003,23 @@ message ASGetDollExchangeOrder{ message SAGetDollExchangeOrder { TagCode Tag = 1;//错误码 repeated ExchangeOrderInfo OrderList = 2;//订单数据 +} + +// 设置抽奖获奖图片和视频 +// post /api/game/show_lottery +message ASShowLottery{ + string Platform = 1; // 平台 + string LogId = 2; // 日志id + repeated ShowLottery List = 3; // 资源 +} + +message ShowLottery{ + int32 Tp = 1; // 资源类型 1图片 2视频 + string Url = 2; // 资源地址 + string ImgUrl = 3; // 视频缩略图地址 +} + +message SAShowLottery{ + TagCode Tag = 1; //错误码 + string Msg = 2; //错误信息 } \ No newline at end of file diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 2ec057c..630f615 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -164,6 +164,9 @@ const ( SPacketID_PACKET_SCPermitExchange SPacketID = 2924 // 通行证兑换 SPacketID_PACKET_CSPermitShop SPacketID = 2925 // 典藏通行证商品信息 SPacketID_PACKET_SCPermitShop SPacketID = 2956 // 典藏通行证商品信息 + SPacketID_PACKET_CSLotteryInfo SPacketID = 2926 // 抽奖信息 + SPacketID_PACKET_SCLotteryInfo SPacketID = 2927 // 抽奖信息 + SPacketID_PACKET_NotifyLotteryAward SPacketID = 2928 // 通知抽奖中奖 ) // Enum value maps for SPacketID. @@ -215,6 +218,9 @@ var ( 2924: "PACKET_SCPermitExchange", 2925: "PACKET_CSPermitShop", 2956: "PACKET_SCPermitShop", + 2926: "PACKET_CSLotteryInfo", + 2927: "PACKET_SCLotteryInfo", + 2928: "PACKET_NotifyLotteryAward", } SPacketID_value = map[string]int32{ "PACKET_SHOP_ZERO": 0, @@ -263,6 +269,9 @@ var ( "PACKET_SCPermitExchange": 2924, "PACKET_CSPermitShop": 2925, "PACKET_SCPermitShop": 2956, + "PACKET_CSLotteryInfo": 2926, + "PACKET_SCLotteryInfo": 2927, + "PACKET_NotifyLotteryAward": 2928, } ) @@ -4110,6 +4119,319 @@ func (x *SCPermitShop) GetPrice() int64 { return 0 } +// 抽奖信息 +//PACKET_CSLotteryInfo +type CSLotteryInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSLotteryInfo) Reset() { + *x = CSLotteryInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSLotteryInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSLotteryInfo) ProtoMessage() {} + +func (x *CSLotteryInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSLotteryInfo.ProtoReflect.Descriptor instead. +func (*CSLotteryInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{60} +} + +type LotteryInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 抽奖id + StartTs int64 `protobuf:"varint,2,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始时间 + EndTs int64 `protobuf:"varint,3,opt,name=EndTs,proto3" json:"EndTs,omitempty"` // 结束时间 + WinTs int64 `protobuf:"varint,4,opt,name=WinTs,proto3" json:"WinTs,omitempty"` // 开奖时间 + RemainCode int64 `protobuf:"varint,5,opt,name=RemainCode,proto3" json:"RemainCode,omitempty"` // 剩余号码 + TotalCode int64 `protobuf:"varint,6,opt,name=TotalCode,proto3" json:"TotalCode,omitempty"` // 总号码 + Award []*PropInfo `protobuf:"bytes,7,rep,name=Award,proto3" json:"Award,omitempty"` // 本期奖品 + State int32 `protobuf:"varint,8,opt,name=State,proto3" json:"State,omitempty"` // 状态 1已结束 2进行中中 3未开始 + WinCode string `protobuf:"bytes,9,opt,name=WinCode,proto3" json:"WinCode,omitempty"` // 开奖号码 + SnId int32 `protobuf:"varint,10,opt,name=SnId,proto3" json:"SnId,omitempty"` // 中奖玩家id + Name string `protobuf:"bytes,11,opt,name=Name,proto3" json:"Name,omitempty"` // 中奖玩家名字 + Index int32 `protobuf:"varint,12,opt,name=Index,proto3" json:"Index,omitempty"` // 期数 + Price int64 `protobuf:"varint,13,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值,美分 + NeedRoomCard int32 `protobuf:"varint,14,opt,name=NeedRoomCard,proto3" json:"NeedRoomCard,omitempty"` // 消耗几张房卡获得一个开奖码 + ImageURL string `protobuf:"bytes,15,opt,name=ImageURL,proto3" json:"ImageURL,omitempty"` // 图片地址 + // 玩家数据 + CostRoomCard int64 `protobuf:"varint,16,opt,name=CostRoomCard,proto3" json:"CostRoomCard,omitempty"` // 消耗房卡 + Codes []string `protobuf:"bytes,17,rep,name=Codes,proto3" json:"Codes,omitempty"` // 本期获得号码 +} + +func (x *LotteryInfo) Reset() { + *x = LotteryInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LotteryInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LotteryInfo) ProtoMessage() {} + +func (x *LotteryInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LotteryInfo.ProtoReflect.Descriptor instead. +func (*LotteryInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{61} +} + +func (x *LotteryInfo) GetId() int64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *LotteryInfo) GetStartTs() int64 { + if x != nil { + return x.StartTs + } + return 0 +} + +func (x *LotteryInfo) GetEndTs() int64 { + if x != nil { + return x.EndTs + } + return 0 +} + +func (x *LotteryInfo) GetWinTs() int64 { + if x != nil { + return x.WinTs + } + return 0 +} + +func (x *LotteryInfo) GetRemainCode() int64 { + if x != nil { + return x.RemainCode + } + return 0 +} + +func (x *LotteryInfo) GetTotalCode() int64 { + if x != nil { + return x.TotalCode + } + return 0 +} + +func (x *LotteryInfo) GetAward() []*PropInfo { + if x != nil { + return x.Award + } + return nil +} + +func (x *LotteryInfo) GetState() int32 { + if x != nil { + return x.State + } + return 0 +} + +func (x *LotteryInfo) GetWinCode() string { + if x != nil { + return x.WinCode + } + return "" +} + +func (x *LotteryInfo) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +func (x *LotteryInfo) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *LotteryInfo) GetIndex() int32 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *LotteryInfo) GetPrice() int64 { + if x != nil { + return x.Price + } + return 0 +} + +func (x *LotteryInfo) GetNeedRoomCard() int32 { + if x != nil { + return x.NeedRoomCard + } + return 0 +} + +func (x *LotteryInfo) GetImageURL() string { + if x != nil { + return x.ImageURL + } + return "" +} + +func (x *LotteryInfo) GetCostRoomCard() int64 { + if x != nil { + return x.CostRoomCard + } + return 0 +} + +func (x *LotteryInfo) GetCodes() []string { + if x != nil { + return x.Codes + } + return nil +} + +//PACKET_SCLotteryInfo +type SCLotteryInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info []*LotteryInfo `protobuf:"bytes,1,rep,name=Info,proto3" json:"Info,omitempty"` // 抽奖活动信息 +} + +func (x *SCLotteryInfo) Reset() { + *x = SCLotteryInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCLotteryInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCLotteryInfo) ProtoMessage() {} + +func (x *SCLotteryInfo) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCLotteryInfo.ProtoReflect.Descriptor instead. +func (*SCLotteryInfo) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{62} +} + +func (x *SCLotteryInfo) GetInfo() []*LotteryInfo { + if x != nil { + return x.Info + } + return nil +} + +// 通知抽奖中奖 +//PACKET_NotifyLotteryAward +type NotifyLotteryAward struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info *LotteryInfo `protobuf:"bytes,1,opt,name=Info,proto3" json:"Info,omitempty"` // 抽奖活动信息 +} + +func (x *NotifyLotteryAward) Reset() { + *x = NotifyLotteryAward{} + if protoimpl.UnsafeEnabled { + mi := &file_welfare_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotifyLotteryAward) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotifyLotteryAward) ProtoMessage() {} + +func (x *NotifyLotteryAward) ProtoReflect() protoreflect.Message { + mi := &file_welfare_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotifyLotteryAward.ProtoReflect.Descriptor instead. +func (*NotifyLotteryAward) Descriptor() ([]byte, []int) { + return file_welfare_proto_rawDescGZIP(), []int{63} +} + +func (x *NotifyLotteryAward) GetInfo() *LotteryInfo { + if x != nil { + return x.Info + } + return nil +} + var File_welfare_proto protoreflect.FileDescriptor var file_welfare_proto_rawDesc = []byte{ @@ -4536,124 +4858,166 @@ var file_welfare_proto_rawDesc = []byte{ 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, + 0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc8, 0x03, 0x0a, 0x0b, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x6e, + 0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, 0x12, + 0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57, + 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, + 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f, + 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43, + 0x6f, 0x64, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x0d, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x3e, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 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, 0xf3, 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, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, + 0xee, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xef, 0x16, 0x12, 0x1e, 0x0a, + 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, + 0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf0, 0x16, 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 ( @@ -4669,7 +5033,7 @@ func file_welfare_proto_rawDescGZIP() []byte { } var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 61) +var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 65) var file_welfare_proto_goTypes = []interface{}{ (OpResultCode)(0), // 0: welfare.OpResultCode (SPacketID)(0), // 1: welfare.SPacketID @@ -4733,7 +5097,11 @@ var file_welfare_proto_goTypes = []interface{}{ (*SCPermitExchange)(nil), // 59: welfare.SCPermitExchange (*CSPermitShop)(nil), // 60: welfare.CSPermitShop (*SCPermitShop)(nil), // 61: welfare.SCPermitShop - nil, // 62: welfare.SCInviteInfo.PayScoreEntry + (*CSLotteryInfo)(nil), // 62: welfare.CSLotteryInfo + (*LotteryInfo)(nil), // 63: welfare.LotteryInfo + (*SCLotteryInfo)(nil), // 64: welfare.SCLotteryInfo + (*NotifyLotteryAward)(nil), // 65: welfare.NotifyLotteryAward + nil, // 66: welfare.SCInviteInfo.PayScoreEntry } var file_welfare_proto_depIdxs = []int32{ 0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode @@ -4760,7 +5128,7 @@ var file_welfare_proto_depIdxs = []int32{ 0, // 21: welfare.SCWelfareContinuousPayData.OpRetCode:type_name -> welfare.OpResultCode 23, // 22: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree 0, // 23: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode - 62, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry + 66, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry 35, // 25: welfare.SCInviteInfo.Awards1:type_name -> welfare.RankAward 35, // 26: welfare.SCInviteInfo.Awards2:type_name -> welfare.RankAward 35, // 27: welfare.SCInviteInfo.Awards3:type_name -> welfare.RankAward @@ -4783,11 +5151,14 @@ var file_welfare_proto_depIdxs = []int32{ 47, // 44: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo 56, // 45: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo 0, // 46: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode - 47, // [47:47] is the sub-list for method output_type - 47, // [47:47] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 47, // 47: welfare.LotteryInfo.Award:type_name -> welfare.PropInfo + 63, // 48: welfare.SCLotteryInfo.Info:type_name -> welfare.LotteryInfo + 63, // 49: welfare.NotifyLotteryAward.Info:type_name -> welfare.LotteryInfo + 50, // [50:50] is the sub-list for method output_type + 50, // [50:50] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_welfare_proto_init() } @@ -5516,6 +5887,54 @@ func file_welfare_proto_init() { return nil } } + file_welfare_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSLotteryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LotteryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCLotteryInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_welfare_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NotifyLotteryAward); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -5523,7 +5942,7 @@ func file_welfare_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_welfare_proto_rawDesc, NumEnums: 2, - NumMessages: 61, + NumMessages: 65, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 6c5c95d..e90a85f 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -79,6 +79,10 @@ enum SPacketID { PACKET_CSPermitShop = 2925; // 典藏通行证商品信息 PACKET_SCPermitShop = 2956; // 典藏通行证商品信息 + + PACKET_CSLotteryInfo = 2926; // 抽奖信息 + PACKET_SCLotteryInfo = 2927; // 抽奖信息 + PACKET_NotifyLotteryAward = 2928; // 通知抽奖中奖 } //救济金领取 @@ -498,4 +502,41 @@ message SCPermitShop{ string Name = 2; // 名称 int32 Consume = 3; // 购买消耗类型 1金币 2钻石 int64 price = 4; // 价格 +} + +// 抽奖信息 +//PACKET_CSLotteryInfo +message CSLotteryInfo{ +} + +message LotteryInfo { + int64 Id = 1; // 抽奖id + int64 StartTs = 2; // 开始时间 + int64 EndTs = 3; // 结束时间 + int64 WinTs = 4; // 开奖时间 + int64 RemainCode = 5; // 剩余号码 + int64 TotalCode = 6; // 总号码 + repeated PropInfo Award = 7; // 本期奖品 + int32 State = 8; // 状态 1已结束 2进行中中 3未开始 + string WinCode = 9; // 开奖号码 + int32 SnId = 10; // 中奖玩家id + string Name = 11; // 中奖玩家名字 + int32 Index = 12; // 期数 + int64 Price = 13; // 奖品价值,美分 + int32 NeedRoomCard = 14; // 消耗几张房卡获得一个开奖码 + string ImageURL = 15; // 图片地址 + // 玩家数据 + int64 CostRoomCard = 16; // 消耗房卡 + repeated string Codes = 17; // 本期获得号码 +} + +//PACKET_SCLotteryInfo +message SCLotteryInfo{ + repeated LotteryInfo Info = 1; // 抽奖活动信息 +} + +// 通知抽奖中奖 +//PACKET_NotifyLotteryAward +message NotifyLotteryAward{ + LotteryInfo Info = 1; // 抽奖活动信息 } \ No newline at end of file diff --git a/ranksrv/action_gatesrv.go b/ranksrv/action_gatesrv.go index e35d054..c867d48 100644 --- a/ranksrv/action_gatesrv.go +++ b/ranksrv/action_gatesrv.go @@ -30,6 +30,8 @@ func init() { com.Register(int(rankproto.Rank_PACKET_RANK_CSPermit), rankproto.CSPermit{}, CSPermit) // 竞技馆获奖记录 com.Register(int(rankproto.Rank_PACKET_CSRoomAward), rankproto.CSRoomAward{}, CSRoomAward) + // 竞技馆获奖记录 + com.Register(int(rankproto.Rank_PACKET_CSLotteryHistory), rankproto.CSLotteryHistory{}, CSLotteryHistory) } func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { @@ -567,9 +569,11 @@ func CSRoomAward(s *netlib.Session, d *rankproto.GateTransmit, packetId int, dat if end > start && int(start) < len(list) { for _, v := range list[start:end] { r := &rankproto.UserAward{ - Snid: v.SnId, - Name: v.Name, - Ts: v.EndTs, + Snid: v.SnId, + Name: v.Name, + Ts: v.EndTs, + Price: v.Price, + ImageURL: v.ImageURL, } for _, vv := range v.Awards { r.Awards = append(r.Awards, &rankproto.Item{ @@ -592,3 +596,48 @@ func CSRoomAward(s *netlib.Session, d *rankproto.GateTransmit, packetId int, dat }) return nil } + +func CSLotteryHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error { + logger.Logger.Trace("CSLotteryHistory data:", data) + _, ok := data.(*rankproto.CSLotteryHistory) + if !ok { + return nil + } + rank.LotteryLogMgrInstance.Take(d.Platform, 0, func(list []*model.LotteryLog, err error) { + if err != nil { + logger.Logger.Errorf("CSLotteryHistory error: %v", err) + return + } + + var ranks []*rankproto.LotteryHistory + for _, v := range list { + r := &rankproto.LotteryHistory{ + Ts: v.CTime.Unix(), + Index: v.Num, + SnId: v.SnId, + Name: v.Name, + } + for _, vv := range v.Award { + r.Award = append(r.Award, &rankproto.Item{ + Id: int32(vv.Id), + N: vv.N, + }) + } + for _, vv := range v.Media { + r.Show = append(r.Show, &rankproto.LotteryShow{ + Tp: vv.Tp, + Url: vv.Url, + ImgUrl: vv.ImgUrl, + }) + } + ranks = append(ranks, r) + } + + pack := &rankproto.SCLotteryHistory{ + List: ranks, + } + common.SendToGate(sid, int(rankproto.Rank_PACKET_SCLotteryHistory), pack, s) + logger.Logger.Tracef("SCLotteryHistory: %v", pack) + }) + return nil +} diff --git a/ranksrv/com/etcd.go b/ranksrv/com/etcd.go index 98babc1..a496e75 100644 --- a/ranksrv/com/etcd.go +++ b/ranksrv/com/etcd.go @@ -30,3 +30,15 @@ func PlatformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev ConfigMgrInst.UpdateRoomConfig(config) } } + +//func etcdHandler(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { +// switch config := data.(type) { +// case *webapi.ShowLottery: +// switch event.Type { +// case clientv3.EventTypePut: +// ConfigMgrInst.GetConfig(config.Platform).LotteryShows[config.GetId()] = config +// case clientv3.EventTypeDelete: +// delete(ConfigMgrInst.GetConfig(config.Platform).LotteryShows, config.GetId()) +// } +// } +//} diff --git a/ranksrv/mq/init.go b/ranksrv/mq/init.go index 223a7cd..fbafc3e 100644 --- a/ranksrv/mq/init.go +++ b/ranksrv/mq/init.go @@ -1,6 +1,8 @@ package mq import ( + "mongo.games.com/goserver/core" + "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/srvlib" "mongo.games.com/goserver/srvlib/action" @@ -32,24 +34,48 @@ func InitHandler() { if !ok { return nil } - rank.CustomAwardMgrInstance.UpdateCache(log.Platform, 0) - var awards []*rankproto.Item - for _, v := range log.Awards { - awards = append(awards, &rankproto.Item{ - Id: v.ItemId, - N: v.ItemNum, - }) + core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { + rank.CustomAwardMgrInstance.UpdateCache(log.Platform, 0) + + var awards []*rankproto.Item + for _, v := range log.Awards { + awards = append(awards, &rankproto.Item{ + Id: v.ItemId, + N: v.ItemNum, + }) + } + pack := &rankproto.UserAward{ + Snid: log.SnId, + Name: log.Name, + Awards: awards, + Ts: log.EndTs, + Price: log.Price, + ImageURL: log.ImageURL, + } + action.BroadcastMessage(common.GetSelfAreaId(), srvlib.GateServerType, int(rankproto.Rank_PACKET_SCRoomAwardOne), pack, nil) + logger.Logger.Tracef("SCRoomAwardOne %v", pack) + return nil + }), true) + return nil + }, + }) + + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.RankLotteryLog, + Data: &model.LotteryLog{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.LotteryLog) + if !ok { + return nil } - pack := &rankproto.UserAward{ - Snid: log.SnId, - Name: log.Name, - Awards: awards, - Ts: log.EndTs, - } - action.BroadcastMessage(common.GetSelfAreaId(), srvlib.GateServerType, int(rankproto.Rank_PACKET_SCRoomAwardOne), pack, nil) - logger.Logger.Tracef("SCRoomAwardOne %v", pack) - return + + core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { + rank.LotteryLogMgrInstance.UpdateCache(log.Platform, 0) + return nil + }), true) + + return nil }, }) } diff --git a/ranksrv/rank/customaward.go b/ranksrv/rank/customaward.go index 94cd619..fc11198 100644 --- a/ranksrv/rank/customaward.go +++ b/ranksrv/rank/customaward.go @@ -82,6 +82,8 @@ func (c *CustomAwardMgr) Update() { Awards: awards, StartTs: nowTime.Add(-time.Minute * 8).Unix(), EndTs: nowTime.Unix(), + Price: vv.GetPrice(), + ImageURL: vv.GetImageURI(), }) break } diff --git a/ranksrv/rank/lottery.go b/ranksrv/rank/lottery.go new file mode 100644 index 0000000..fae44f4 --- /dev/null +++ b/ranksrv/rank/lottery.go @@ -0,0 +1,24 @@ +package rank + +import ( + "time" + + "mongo.games.com/goserver/core/logger" + + "mongo.games.com/game/model" + "mongo.games.com/game/ranksrv/com" +) + +var LotteryLogMgrInstance = com.NewListMgr[*model.LotteryLog]( + func() int64 { + return int64(time.Hour.Seconds()) // 缓存1小时 + }, + func(platform string, index int32) ([]*model.LotteryLog, error) { + logger.Logger.Tracef("load LotteryLog platform:%s", platform) + ret, err := model.GetLotteryLogs(platform, 50) + if err != nil { + logger.Logger.Errorf("load LotteryLog err:%s", err.Error()) + return nil, err + } + return ret, nil + }) diff --git a/shell/update_deploy.bat b/shell/update_deploy.bat index 9d1ec6c..1be742a 100644 --- a/shell/update_deploy.bat +++ b/shell/update_deploy.bat @@ -1,4 +1,4 @@ -set deployDir="..\deploy" +set deployDir=".\deploy" xcopy .\data\* %deployDir%\data\ /s /e /y diff --git a/worldsrv/action_bag.go b/worldsrv/action_bag.go index 95b2249..61b4d8f 100644 --- a/worldsrv/action_bag.go +++ b/worldsrv/action_bag.go @@ -87,6 +87,11 @@ func CSUpBagInfo(s *netlib.Session, packetid int, data interface{}, sid int64) e Operator: "system", Remark: "测试", }) + for _, v := range items { + if v.ItemId == common.ItemIDRoomCard && v.ItemNum < 0 { + LotteryMgrInst.AddCostRoomCard(p.Platform, p.SnId, -v.ItemNum) + } + } return nil } } diff --git a/worldsrv/action_chat.go b/worldsrv/action_chat.go index 4094145..4c5f111 100644 --- a/worldsrv/action_chat.go +++ b/worldsrv/action_chat.go @@ -28,6 +28,12 @@ func CSChatMsgHandler(s *netlib.Session, packetid int, data interface{}, sid int logger.Logger.Warn("CSChatMsgHandler platform == nil") return nil } + if msg.GetHead() > 0 { + PlayerSubjectSign.UpdateHead(p.SnId, msg.GetHead()) + } + if msg.GetName() != "" { + PlayerSubjectSign.UpdateName(p.SnId, msg.GetName()) + } var content = msg.GetContent() if len(content) > 150 { logger.Logger.Warn("CSChatMsgHandler len(content) > 150") diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 723b6c7..1e72bab 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -1329,6 +1329,8 @@ func CSCreatePrivateRoomHandler(s *netlib.Session, packetId int, data interface{ CostType: int32(costType), Password: password, Voice: int32(voice), + Price: cfg.GetPrice(), + ImageURL: cfg.GetImageURI(), }, }) diff --git a/worldsrv/action_lottery.go b/worldsrv/action_lottery.go new file mode 100644 index 0000000..558d7e5 --- /dev/null +++ b/worldsrv/action_lottery.go @@ -0,0 +1,51 @@ +package main + +import ( + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/netlib" + + "mongo.games.com/game/common" + "mongo.games.com/game/protocol/welfare" +) + +func init() { + common.Register(int(welfare.SPacketID_PACKET_CSLotteryInfo), &welfare.CSLotteryInfo{}, CSLotteryInfoHandler) +} + +func CSLotteryInfoHandler(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Tracef("CSLotteryInfo Process recv %v", data) + _, ok := data.(*welfare.CSLotteryInfo) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + return nil + } + + pack := &welfare.SCLotteryInfo{} + + var list []*welfare.LotteryInfo + cfg := PlatformMgrSingleton.GetConfig(p.Platform).LotteryConfig + if cfg != nil { + list = LotteryMgrInst.GetList(p.Platform) + pack.Info = list + } + // player lottery info + info := PlayerInfoMgrSingle.Players[p.SnId] + if info != nil { + // 当前开启中的抽奖活动id + for _, v := range list { + playerLottery := info.Lottery[v.GetId()] + if playerLottery != nil && playerLottery.StartTs == v.GetStartTs() { + v.CostRoomCard = playerLottery.CostCard + v.Codes = playerLottery.Code + } + } + } + + p.SendToClient(int(welfare.SPacketID_PACKET_SCLotteryInfo), pack) + logger.Logger.Tracef("SCLotteryInfo: %v", pack) + return nil +} diff --git a/worldsrv/addmail.go b/worldsrv/addmail.go index 5d6c8de..66b30f3 100644 --- a/worldsrv/addmail.go +++ b/worldsrv/addmail.go @@ -126,3 +126,25 @@ func AddMailClientUpgrade(snid int32, items []*webapi.ItemInfo) { ShowId: model.HallAll, }) } + +func AddMailLottery(snid int32, items []*model.ItemInfo) { + var arr []*model.Item + for _, v := range items { + arr = append(arr, &model.Item{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + + title := i18n.Tr("languages", "LotteryTitle") + content := i18n.Tr("languages", "Lottery") + + AddMail(&AddMailParam{ + Tp: model.MSGTYPE_Lottery, + SnId: snid, + Title: title, + Content: content, + Items: arr, + ShowId: model.HallAll, + }) +} diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index 9c39a95..4921e68 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -796,12 +796,12 @@ func (this *BagMgr) AddItemsOffline(param *model.AddItemParam, callback func(err } return nil }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - logger.Logger.Tracef("AddItemsOffline error(%v) Player:%+v", data, *findPlayer) if data != nil || findPlayer == nil { logger.Logger.Errorf("AddItemsOffline Error %v", data) callback(errors.New("AddItemsOffline failed")) return } + logger.Logger.Tracef("AddItemsOffline error(%v) Player:%+v", data, *findPlayer) callback(nil) })).StartByExecutor(fmt.Sprintf("Player%v", param.SnId)) } diff --git a/worldsrv/customroommgr.go b/worldsrv/customroommgr.go index 84e4c44..5f8747d 100644 --- a/worldsrv/customroommgr.go +++ b/worldsrv/customroommgr.go @@ -126,6 +126,7 @@ func (c *CustomRoomMgr) GetRoomList(plt string) []*gamehall.PrivateRoomInfo { var ret []*gamehall.PrivateRoomInfo for _, v := range d.List { if v != nil && v.PrivateRoomInfo != nil { + v.IsSystem = true // 标记为系统房间 ret = append(ret, v.PrivateRoomInfo) } } diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 802b952..12c81b6 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -3,14 +3,7 @@ package main import ( "context" "encoding/json" - "strconv" - "strings" - "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" "mongo.games.com/game/etcd" "mongo.games.com/game/model" @@ -21,6 +14,11 @@ import ( serverproto "mongo.games.com/game/protocol/server" "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/srvdata" + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/task" + "strconv" + "strings" ) func init() { @@ -104,6 +102,10 @@ func init() { etcd.Register(etcd.ETCDKEY_ClientUpgrade, webapi.ClientUpgrade{}, platformConfigEvent) //弹窗活动配置 etcd.Register(etcd.ETCDKEY_PopUpWindow, webapi.PopUpWindowConfig{}, platformConfigEvent) + // 竞技馆抽奖配置 + etcd.Register(etcd.ETCDKEY_LotteryConfig, webapi.LotteryConfig{}, platformConfigEvent) + // 用户抽奖 + etcd.Register(etcd.ETCDKEY_LotteryUser, webapi.UserLottery{}, handlerEvent) } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -342,6 +344,9 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).ClientUpgrade = config case *webapi.PopUpWindowConfig: PlatformMgrSingleton.GetConfig(config.Platform).PopUpWindowConfig = config + case *webapi.LotteryConfig: + PlatformMgrSingleton.GetConfig(config.Platform).LotteryConfig = config + LotteryMgrInst.UpdateConfig(config) default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } @@ -546,6 +551,21 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c delete(PlatformMgrSingleton.GetConfig(plt).RoomConfigSystem, int32(param[0])) } + case equalFunc(etcd.ETCDKEY_LotteryUser): + switch event.Type { + case clientv3.EventTypePut: + if data == nil { + return + } + config := data.(*webapi.UserLottery) + PlatformMgrSingleton.GetConfig(config.GetPlatform()).LotteryUser[config.GetId()] = config + case clientv3.EventTypeDelete: + if plt == "" || len(param) == 0 { + return + } + delete(PlatformMgrSingleton.GetConfig(plt).LotteryUser, int64(param[0])) + } + default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) } diff --git a/worldsrv/horseracelamp.go b/worldsrv/horseracelamp.go index bdef8f5..1c431a4 100644 --- a/worldsrv/horseracelamp.go +++ b/worldsrv/horseracelamp.go @@ -42,7 +42,7 @@ var HorseRaceLampMgrSington = &HorseRaceLampMgr{ type HorseRaceLampMgr struct { HorseRaceLampMsgList map[string]*HorseRaceLamp HorseRaceLampGameList map[string][]*HorseRaceLamp - HorseRaceLampCastList map[string]*HorseRaceLampCastInfo + HorseRaceLampCastList map[string]*HorseRaceLampCastInfo // 平台:跑马灯 NextGameHorseRaceLamp map[string]int64 } diff --git a/worldsrv/internal/playercache.go b/worldsrv/internal/playercache.go index 3713be3..fc9c0b7 100644 --- a/worldsrv/internal/playercache.go +++ b/worldsrv/internal/playercache.go @@ -17,9 +17,9 @@ type PlayerLoadReplay struct { // 重连不会执行 type IPlayerLoad interface { // Load 查询数据库,在task中执行 - Load(platform string, snid int32, player any) *PlayerLoadReplay + Load(platform string, snid int32, data any) *PlayerLoadReplay // Callback 数据查询成功的回掉方法 - Callback(player any, ret *PlayerLoadReplay) + Callback(data any, ret *PlayerLoadReplay) } // IPlayerLogined 玩家登录之后加载其他玩家数据 diff --git a/worldsrv/lotterymgr.go b/worldsrv/lotterymgr.go new file mode 100644 index 0000000..fb5da86 --- /dev/null +++ b/worldsrv/lotterymgr.go @@ -0,0 +1,713 @@ +package main + +import ( + "fmt" + "sort" + "strconv" + "time" + + "mongo.games.com/goserver/core/basic" + "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" + "mongo.games.com/goserver/core/task" + + "mongo.games.com/game/common" + "mongo.games.com/game/model" + "mongo.games.com/game/mq" + "mongo.games.com/game/protocol/webapi" + "mongo.games.com/game/protocol/welfare" +) + +const ( + LotteryRoomCard = 10 // 几张房卡获得一个抽奖码 +) + +var LotteryMgrInst = &LotteryMgr{ + Data: make(map[string]map[int64]*LotteryData), + PlatformConfig: make(map[string]*LotteryConfig), +} + +func init() { + module.RegisteModule(LotteryMgrInst, time.Minute, 0) + common.RegisterClockFunc(&common.ClockFunc{ + OnDayTimerFunc: func() { + for _, v := range LotteryMgrInst.PlatformConfig { + if v == nil { + continue + } + if v.IsCycle { + // 每天重置抽奖数据 + LotteryMgrInst.Reset() + // 重置玩家抽奖数据 + for _, v := range PlayerInfoMgrSingle.Players { + v.Lottery = make(map[int64]*model.Lottery) + } + } + } + }, + }) +} + +// LotteryData 抽奖数据 +type LotteryData struct { + *model.LotteryData +} + +// Reset 重置抽奖数据 +func (l *LotteryData) Reset() { + if l == nil { + return + } + + cfg := PlatformMgrSingleton.GetLotteryConfig(l.Platform, l.CId) + if cfg == nil { + return + } + + l.StartTs = common.IntToTime(int(cfg.GetStartHMS())).Unix() + l.EndTs = common.IntToTime(int(cfg.GetEndHMS())).Unix() + l.WinTs = common.IntToTime(int(cfg.GetWinHMS())).Unix() + l.Price = cfg.GetPrice() + l.RobotCodeNum = cfg.GetRobotCode() + l.TotalCode = cfg.GetTotalCode() + l.Reward = nil + for _, v := range cfg.GetReward() { + l.Reward = append(l.Reward, &model.ItemInfo{ + ItemId: v.GetItemId(), + ItemNum: v.GetItemNum(), + }) + } + long := len(fmt.Sprintf("%d", cfg.GetTotalCode()-1)) + if long < 1 { + long = 1 + } + l.Format = "%0" + fmt.Sprintf("%d", long) + "d" + l.ImageURL = cfg.GetImageURI() + l.CustomAward = 0 + l.Code = 0 + l.PlayerIndex = 0 + l.RobotIndex = 0 + l.SnId = 0 + l.Name = "" + l.WinCostCard = 0 + l.WinCode = "" + l.IsRobot = false + l.IsSend = false + l.CostCard = 0 + l.RobotCodeCount = 0 + l.PlayerNum = 0 +} + +// GetCode 获取抽奖码 +func (l *LotteryData) GetCode() (string, bool) { + if l == nil { + return "", false + } + if l.Code < int(l.TotalCode) { + ret := fmt.Sprintf("%d", l.Code) + l.Code++ + return ret, true + } + return "", false +} + +func (l *LotteryData) GetPlayerIndex() int { + l.PlayerIndex++ + return l.PlayerIndex +} + +func (l *LotteryData) GetRobotIndex() int { + l.RobotIndex++ + return l.RobotIndex +} + +// GetRemainCode 获取剩余抽奖码数量 +func (l *LotteryData) GetRemainCode() int { + if l == nil { + return 0 + } + return int(l.TotalCode) - l.Code +} + +// 发奖 +func (l *LotteryData) sendAward() { + now := time.Now() + if l.WinTs <= 0 || l.WinTs >= now.Unix() || l.IsSend || l.WinCode == "" || l.SnId == 0 || now.Unix()-l.WinTs > 5*60 { + return + } + l.IsSend = true + if l.IsRobot { + return + } + AddMailLottery(l.SnId, l.Reward) + // 通知 + if p := PlayerMgrSington.GetPlayerBySnId(l.SnId); p != nil { + + var lotteryAward []*welfare.PropInfo + for _, v := range l.Reward { + lotteryAward = append(lotteryAward, &welfare.PropInfo{ + ItemId: v.ItemId, + ItemNum: v.ItemNum, + }) + } + + var codes []string + info := PlayerInfoMgrSingle.Players[p.SnId] + if info != nil { + if lt := info.Lottery[l.CId]; lt != nil && lt.StartTs == l.StartTs { + codes = lt.Code + } + } + + pack := &welfare.NotifyLotteryAward{ + Info: &welfare.LotteryInfo{ + Id: l.CId, + StartTs: l.StartTs, + EndTs: l.EndTs, + WinTs: l.WinTs, + RemainCode: int64(l.GetRemainCode()), + TotalCode: l.TotalCode, + Award: lotteryAward, + State: common.LotteryStateOver, + WinCode: l.WinCode, + SnId: l.SnId, + Name: l.Name, + Index: int32(l.Num), + Price: l.Price, + NeedRoomCard: LotteryRoomCard, + ImageURL: l.ImageURL, + CostRoomCard: l.WinCostCard, + Codes: codes, + }, + } + p.SendToClient(int(welfare.SPacketID_PACKET_NotifyLotteryAward), pack) + logger.Logger.Tracef("NotifyLotteryAward: %v", pack) + } +} + +func (l *LotteryData) sendRobotCode(a, b int) { + // 随机给机器人发放抽奖码 + now := time.Now() + if l.StartTs <= now.Unix() && l.EndTs > now.Unix() && l.RobotCodeCount < int(l.RobotCodeNum) && l.GetRemainCode() > 0 { + n := common.RandInt(a, b) + for i := 0; i < n; i++ { + code, b := l.GetCode() + if b { + l.RobotCodeCount++ + // 开奖码记录 + mq.Write(&model.LotteryCode{ + Platform: l.Platform, + SnId: 0, + CId: l.CId, + StartTs: l.StartTs, + Code: code, + Index: l.GetRobotIndex(), + }) + if l.RobotCodeCount >= int(l.RobotCodeNum) || l.GetRemainCode() <= 0 { + break + } + } + } + } +} + +// Done 抽奖 +func (l *LotteryData) Done() { + now := time.Now() + if l.EndTs <= 0 || l.EndTs >= now.Unix() || l.SnId > 0 || now.Unix()-l.EndTs > 5*60 { + return + } + + sTs := common.GetDayStartTs(now.Unix()) + eTs := sTs + int64(time.Hour.Seconds()*24) + if l.StartTs < sTs || l.StartTs >= eTs { + return + } + + lotteryLog := &model.LotteryLog{} // 中奖记录 + var err error + var awardPlayer *Player // 中奖玩家 + var joinNum int // 参与人数 + var code *model.LotteryCode // 开奖码 + var costCard int64 // 消耗房卡 + var isMust bool // 是否必中 + var index int // 开奖码序号 + var tp int // 开奖类型 + + // 先随机一个机器人 + for _, v := range PlayerMgrSington.snidMap { + if v == nil { + continue + } + if !v.IsRob { + continue + } + awardPlayer = v + break + } + + if awardPlayer == nil { + awardPlayer = &Player{ + PlayerData: &model.PlayerData{}, + } + } + + // 是否必中 + for _, v := range PlatformMgrSingleton.GetConfig(l.Platform).LotteryUser { + if v.GetOn() != common.On { + continue + } + t, _ := time.Parse(time.DateTime, v.GetTime()) + if common.TsInSameDay(t.Unix(), l.StartTs) && v.GetNum() == int64(l.Num+1) { + // 必中 + isMust = true + tp = 1 + index = common.RandInt(1, l.RobotIndex) + awardPlayer.SnId = v.GetSnId() + awardPlayer.IsRob = false + logger.Logger.Tracef("LotteryData 抽奖 isMust:%v tp:%v index:%v RobotIndex:%v awardPlayer:%v", isMust, tp, index, l.RobotIndex, awardPlayer.SnId) + break + } + } + + if !isMust { + value := float64(l.CostCard*10-l.CustomAward) / float64(l.Price) + switch { + case value <= 1.2: + // 机器人开奖 + tp = 1 + index = common.RandInt(1, l.RobotIndex) + case value <= 5: + // 机器人加玩家开奖 + tp = 2 + index = common.RandInt(1, l.Code) + default: + // 玩家开奖 + tp = 3 + index = common.RandInt(1, l.PlayerIndex) + } + logger.Logger.Tracef("LotteryData 抽奖 value:%v tp:%v index:%v RobotIndex:%v Code:%v PlayerIndex:%v Cid:%v", + value, tp, index, l.RobotIndex, l.Code, l.PlayerIndex, l.CId) + } + + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + // 查询参与人数 + joinNum, err = model.GetLotteryCodeJoinNum(l.Platform, l.CId, l.StartTs) + if err != nil { + logger.Logger.Errorf("GetLotteryCodeJoinNum error:%v", err) + return err + } + // 查询开奖码 + code, err = model.GetLotteryCodeRandom(l.Platform, l.CId, l.StartTs, tp, index) + if err != nil { + logger.Logger.Errorf("GetLotteryCodeRandom error:%v", err) + return err + } + if code != nil && isMust { + code.SnId = awardPlayer.SnId + } + // 查询玩家消耗 + if code != nil && code.SnId > 0 { + list, err := model.GetLottery(l.Platform, code.SnId, l.CId, l.StartTs) + if err != nil { + logger.Logger.Errorf("GetLottery error:%v", err) + return err + } + for _, v := range list { + if v.CId == l.CId && v.StartTs == l.StartTs { + costCard = v.CostCard + break + } + } + + p := PlayerMgrSington.GetPlayerBySnId(code.SnId) + if p == nil { + playerData := model.GetPlayerBaseInfo(l.Platform, code.SnId) + if playerData != nil { + awardPlayer = &Player{ + PlayerData: &model.PlayerData{ + SnId: playerData.SnId, + Name: playerData.Name, + }, + } + } + } + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if code == nil && isMust { + code = &model.LotteryCode{ + Platform: l.Platform, + SnId: awardPlayer.SnId, + CId: l.CId, + StartTs: l.StartTs, + Code: fmt.Sprintf("%d", l.TotalCode), + } + } + if code == nil { + return + } + if code.SnId > 0 { + p := PlayerMgrSington.GetPlayerBySnId(code.SnId) + if p != nil { + awardPlayer = p + if info := PlayerInfoMgrSingle.Players[p.SnId]; info != nil { + c := info.Lottery[l.CId] + if c != nil && c.StartTs == l.StartTs { + costCard = c.CostCard + } + } + } + } + + l.PlayerNum = int32(joinNum) + + // 记录中奖结果 + if awardPlayer != nil { + l.Num = LotteryMgrInst.GetIndex(l.Platform, l.CId) + l.SnId = awardPlayer.SnId + l.Name = awardPlayer.Name + l.WinCostCard = costCard + l.WinCode = code.Code + l.IsRobot = awardPlayer.IsRobot() + + var lotteryAward []*model.LotteryAward + for _, v := range l.Reward { + lotteryAward = append(lotteryAward, &model.LotteryAward{ + Id: int64(v.ItemId), + N: v.ItemNum, + }) + } + + lotteryLog = &model.LotteryLog{ + Platform: l.Platform, + CId: l.CId, + CTime: time.Unix(l.StartTs, 0), + Num: int32(l.Num), + SnId: awardPlayer.SnId, + Name: awardPlayer.Name, + PlayerNum: int64(joinNum), + Code: l.WinCode, + CostCard: l.CostCard, + IsRobot: awardPlayer.IsRobot(), + Award: lotteryAward, + Price: l.Price, + IsMust: isMust, + ImageURL: l.ImageURL, + Ts: l.WinTs, + } + mq.Write(lotteryLog) + logger.Logger.Tracef("LotteryData 抽奖中奖记录: %+v", *lotteryLog) + // 开始发奖 + l.sendAward() + } + }), "LotterySendAward").Start() +} + +type LotteryConfig struct { + IsCycle bool +} + +// LotteryMgr 抽奖管理 +type LotteryMgr struct { + Data map[string]map[int64]*LotteryData // 平台:抽奖配置id:抽奖数据 + PlatformConfig map[string]*LotteryConfig +} + +func (l *LotteryMgr) ModuleName() string { + return "LotteryMgr" +} + +func (l *LotteryMgr) Init() { + // 加载抽奖活动数据 + for _, v := range PlatformMgrSingleton.GetPlatforms() { + if v != nil { + data, err := model.GetLotteryData(v.IdStr) + if err != nil { + panic(fmt.Sprintf("GetLotteryData error:%v", err)) + } + for _, d := range data { + ld := l.GetData(v.IdStr, d.CId) + ld.LotteryData = d + ld.Platform = v.IdStr + } + } + } +} + +func (l *LotteryMgr) Update() { + for _, v := range l.Data { + for _, d := range v { + if d == nil { + continue + } + lc := PlatformMgrSingleton.GetLotteryConfig(d.Platform, d.CId) + if lc == nil || lc.GetOn() != common.On { + continue + } + // 随机给机器人发放抽奖码 + d.sendRobotCode(1, 5) + // 活动结束,开始抽奖 + d.Done() + // 开始发奖 + d.sendAward() + } + } +} + +func (l *LotteryMgr) Shutdown() { + for k, v := range l.Data { + var arr []*model.LotteryData + for _, d := range v { + if d.LotteryData == nil { + continue + } + arr = append(arr, d.LotteryData) + } + model.UpsertLotteryData(k, arr) + } + + module.UnregisteModule(l) +} + +func (l *LotteryMgr) Reset() { + // 重置抽奖数据 + for _, v := range LotteryMgrInst.Data { + for _, d := range v { + if d == nil { + continue + } + d.Reset() + } + } +} + +func (l *LotteryMgr) UpdateConfig(conf *webapi.LotteryConfig) { + now := time.Now() + // 删除不存在的活动 + for k, v := range l.Data { + var id []int64 + for _, d := range v { + if d == nil { + continue + } + has := false + for _, vv := range conf.GetList() { + if vv.GetId() == d.CId { + has = true + break + } + } + if !has { + id = append(id, d.CId) + } + } + for _, i := range id { + delete(l.Data[k], i) + } + } + // 更新活动配置,已结束,开始中的不能修改 + for _, v := range conf.GetList() { + if v.GetTotalCode() <= 0 { + v.TotalCode = 1 + } + data := l.GetData(conf.GetPlatform(), v.GetId()) + if data.EndTs > 0 && (data.EndTs < now.Unix() || data.StartTs <= now.Unix()) { + continue + } else { + data.Reset() + } + } + l.GetConfig(conf.GetPlatform()).IsCycle = conf.GetCycle() == common.On +} + +func (l *LotteryMgr) GetConfig(plt string) *LotteryConfig { + _, ok := l.PlatformConfig[plt] + if !ok { + l.PlatformConfig[plt] = &LotteryConfig{} + } + return l.PlatformConfig[plt] +} + +func (l *LotteryMgr) GetData(plt string, cid int64) *LotteryData { + if l.Data[plt] == nil { + l.Data[plt] = make(map[int64]*LotteryData) + } + if l.Data[plt][cid] == nil { + l.Data[plt][cid] = &LotteryData{ + LotteryData: &model.LotteryData{ + Platform: plt, + CId: cid, + }, + } + } + return l.Data[plt][cid] +} + +func (l *LotteryMgr) GetIndex(plt string, cid int64) int { + var arr []*LotteryData + for _, d := range l.Data[plt] { + lc := PlatformMgrSingleton.GetLotteryConfig(d.Platform, d.CId) + if lc == nil || lc.GetOn() != common.On { + continue + } + arr = append(arr, d) + } + sort.Slice(arr, func(i, j int) bool { + if arr[i].StartTs == arr[j].StartTs { + return arr[i].EndTs < arr[j].EndTs + } + return arr[i].StartTs < arr[j].StartTs + }) + + for k, v := range arr { + if v.CId == cid { + return k + 1 + } + } + return 0 +} + +// GetList 获取抽奖列表 +func (l *LotteryMgr) GetList(plt string) []*welfare.LotteryInfo { + now := time.Now() + ret := make([]*welfare.LotteryInfo, 0) + + for _, d := range l.Data[plt] { + lc := PlatformMgrSingleton.GetLotteryConfig(d.Platform, d.CId) + if lc == nil || lc.GetOn() != common.On { + continue + } + + // 是否活动已经结束 + p := l.GetConfig(d.Platform) + if !p.IsCycle && !common.TsInSameDay(d.StartTs, now.Unix()) { + continue + } + + var award []*welfare.PropInfo + for _, a := range d.Reward { + award = append(award, &welfare.PropInfo{ + ItemId: a.ItemId, + ItemNum: a.ItemNum, + }) + } + + state := 1 + switch { + case d.EndTs < now.Unix(): + state = common.LotteryStateOver // 已结束 + case d.StartTs > now.Unix(): + state = common.LotteryStateNoStart // 未开始 + default: + state = common.LotteryStateRun // 进行中 + } + + ret = append(ret, &welfare.LotteryInfo{ + Id: d.CId, + StartTs: d.StartTs, + EndTs: d.EndTs, + WinTs: d.WinTs, + RemainCode: int64(d.GetRemainCode()), + TotalCode: d.TotalCode, + Award: award, + State: int32(state), + WinCode: d.WinCode, + SnId: d.SnId, + Name: d.Name, + Index: int32(d.Num), + Price: d.Price, + NeedRoomCard: LotteryRoomCard, + ImageURL: d.ImageURL, + }) + } + + sort.Slice(ret, func(i, j int) bool { + if ret[i].StartTs == ret[j].StartTs { + return ret[i].EndTs < ret[j].EndTs + } + return ret[i].StartTs < ret[j].StartTs + }) + for k, v := range ret { + v.Index = int32(k + 1) + } + return ret +} + +// AddCostRoomCard 添加消耗房卡 +// snid: 玩家ID +// n: 消耗房卡数量 +// cid: 抽奖配置ID +func (l *LotteryMgr) AddCostRoomCard(plt string, snid int32, n int64) { + // 活动总开关 + conf := PlatformMgrSingleton.GetConfig(plt).LotteryConfig + if conf == nil || conf.GetOn() != common.On { + return + } + + f := func() { + info := PlayerInfoMgrSingle.Players[snid] + if info == nil { + logger.Logger.Errorf("AddCostRoomCard LotteryData snid:%v not found", snid) + return + } + + for _, v := range l.GetList(plt) { + if v == nil || v.GetState() != common.LotteryStateRun { + continue + } + playerLottery := info.Lottery[v.GetId()] + if playerLottery == nil || playerLottery.StartTs != v.GetStartTs() { + playerLottery = &model.Lottery{ + SnId: snid, + CId: v.GetId(), + Code: nil, + StartTs: v.GetStartTs(), + CostCard: 0, + ReCostCard: 0, + } + info.Lottery[v.GetId()] = playerLottery + } + lotteryData := l.GetData(plt, v.GetId()) + lotteryData.CostCard += n + + playerLottery.CostCard += n + n = int64(int(n) + playerLottery.ReCostCard) + playerLottery.ReCostCard = int(n % LotteryRoomCard) + for i := 0; i < int(n)/LotteryRoomCard; i++ { + if v.GetRemainCode() <= 0 { + break + } + code, b := lotteryData.GetCode() + if b { + intCode, _ := strconv.Atoi(code) + playerLottery.Code = append(playerLottery.Code, fmt.Sprintf(lotteryData.Format, intCode)) + // 开奖码记录 + mq.Write(&model.LotteryCode{ + Platform: plt, + SnId: snid, + CId: v.GetId(), + StartTs: v.GetStartTs(), + Code: code, + Index: lotteryData.GetPlayerIndex(), + }) + // 机器人发一个 + lotteryData.sendRobotCode(1, 1) + } + } + } + } + + p := PlayerMgrSington.GetPlayerBySnId(snid) + if p == nil { + PlayerCacheMgrSingleton.Get(plt, snid, func(item *PlayerCacheItem, b bool, b2 bool) { + if item == nil || item.PlayerData == nil { + logger.Logger.Errorf("AddCostRoomCard snid:%v not found", snid) + return + } + f() + }, false) + return + } + f() +} diff --git a/worldsrv/main.go b/worldsrv/main.go index da6984b..3b18e93 100644 --- a/worldsrv/main.go +++ b/worldsrv/main.go @@ -12,6 +12,7 @@ import ( _ "mongo.games.com/game" "mongo.games.com/game/common" + "mongo.games.com/game/db" "mongo.games.com/game/model" "mongo.games.com/game/mq" ) @@ -29,6 +30,7 @@ func main() { core.LoadPackages("config.json") // core hook core.RegisteHook(core.HOOK_BEFORE_START, func() error { + db.NewGrpcClientConn() 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) mq.StartPublisher(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true, common.CustomConfig.GetInt("RMQPublishBacklog")) diff --git a/worldsrv/mq_coinlog.go b/worldsrv/mq.go similarity index 84% rename from worldsrv/mq_coinlog.go rename to worldsrv/mq.go index 89dc1c6..36f0640 100644 --- a/worldsrv/mq_coinlog.go +++ b/worldsrv/mq.go @@ -32,6 +32,8 @@ func init() { mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemJyb, Data: &model.JybLog{}}) mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBVipGiftLog, Data: &model.DbVip{}}) mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemFreeGive, Data: &model.SystemFreeGive{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryCode, Data: &model.LotteryCode{}}) + mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryLog, Data: &model.LotteryLog{}}) } func init() { @@ -96,4 +98,28 @@ func init() { return }, }) + + // 竞技馆奖励记录 + mq.RegisterHandler(&mq.RegisterHandlerParam{ + Name: mq.WorldCustomAward, + Data: &model.CustomLogAward{}, + Handler: func(data interface{}) (err error) { + log, ok := data.(*model.CustomLogAward) + if !ok { + return + } + + core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error { + for _, v := range LotteryMgrInst.GetList(log.Platform) { + if v.GetState() != 2 { // 进行中的活动 + continue + } + d := LotteryMgrInst.GetData(log.Platform, v.GetId()) + d.CustomAward += log.Price + } + return nil + }), true) + return + }, + }) } diff --git a/worldsrv/playercache.go b/worldsrv/playercache.go index aeb2057..b2c3ce5 100644 --- a/worldsrv/playercache.go +++ b/worldsrv/playercache.go @@ -23,8 +23,6 @@ const ( func init() { module.RegisteModule(PlayerCacheMgrSingleton, time.Second, 0) - //GameEventHandlerMgrSingleton.RegisteGameEventHandler(GAMEEVENT_LOGIN, PlayerCacheMgrSingleton) - //GameEventHandlerMgrSingleton.RegisteGameEventHandler(GAMEEVENT_LOGOUT, PlayerCacheMgrSingleton) } var PlayerCacheMgrSingleton = &PlayerCacheMgr{ diff --git a/worldsrv/playerinfo.go b/worldsrv/playerinfo.go index 70b2f3c..b9069ff 100644 --- a/worldsrv/playerinfo.go +++ b/worldsrv/playerinfo.go @@ -2,9 +2,11 @@ package main import ( "strconv" + "time" "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" + "mongo.games.com/goserver/core/module" "mongo.games.com/goserver/core/task" "mongo.games.com/game/common" @@ -18,37 +20,76 @@ import ( func init() { internal.RegisterPlayerLoad(PlayerInfoMgrSingle) + module.RegisteModule(PlayerInfoMgrSingle, time.Hour, 0) } var PlayerInfoMgrSingle = &PlayerInfoMgr{ - Players: make(map[int32]*PlayerInfo), + Players: make(map[int32]*PlayerInfo), + PlayerPlatform: make(map[int32]string), } type AllPlayerInfo struct { GameData []*model.PlayerGameData + Lottery []*model.Lottery } // PlayerInfo 玩家信息 type PlayerInfo struct { GameData map[string]*model.PlayerGameData // 游戏数据 + Lottery map[int64]*model.Lottery // 抽奖数据 key:抽奖配置id } type PlayerInfoMgr struct { - Players map[int32]*PlayerInfo + Players map[int32]*PlayerInfo + PlayerPlatform map[int32]string } -func (p *PlayerInfoMgr) Load(platform string, snid int32, player any) *internal.PlayerLoadReplay { +func (p *PlayerInfoMgr) ModuleName() string { + return "PlayerInfoMgr" +} + +func (p *PlayerInfoMgr) Init() { +} + +func (p *PlayerInfoMgr) Update() { + for k, v := range p.PlayerPlatform { + if PlayerMgrSington.GetPlayerBySnId(k) == nil { + p.Save(v, k, true, true) + p.Release(v, k) + } + } +} + +func (p *PlayerInfoMgr) Shutdown() { + for k, v := range p.Players { + if v == nil { + continue + } + p.Save(p.PlayerPlatform[k], k, true, true) + p.Release(p.PlayerPlatform[k], k) + } + module.UnregisteModule(p) +} + +func (p *PlayerInfoMgr) Load(platform string, snid int32, data any) *internal.PlayerLoadReplay { var err error allPlayerInfo := &AllPlayerInfo{ GameData: make([]*model.PlayerGameData, 0), + Lottery: make([]*model.Lottery, 0), } + // 游戏数据 - gameData, err := model.GetPlayerGameData(platform, snid) + allPlayerInfo.GameData, err = model.GetPlayerGameData(platform, snid) if err != nil { logger.Logger.Errorf("GetPlayerGameData snid:%v error: %v", snid, err) goto here } - allPlayerInfo.GameData = gameData + // 抽奖数据 + allPlayerInfo.Lottery, err = model.GetLottery(platform, snid, 0, common.GetDayStartTs(time.Now().Unix())) + if err != nil { + logger.Logger.Errorf("GetLottery snid:%v error: %v", snid, err) + goto here + } // ... here: @@ -60,25 +101,33 @@ here: } } -func (p *PlayerInfoMgr) Callback(player any, ret *internal.PlayerLoadReplay) { +func (p *PlayerInfoMgr) Callback(data any, ret *internal.PlayerLoadReplay) { if ret.Err != nil { return } - data, ok := ret.Data.(*AllPlayerInfo) + playerInfo, ok := ret.Data.(*AllPlayerInfo) if !ok { return } info := &PlayerInfo{ GameData: make(map[string]*model.PlayerGameData), + Lottery: make(map[int64]*model.Lottery), } // 游戏数据 - for _, v := range data.GameData { + for _, v := range playerInfo.GameData { info.GameData[v.Id] = v } + // 抽奖数据 + for _, v := range playerInfo.Lottery { + info.Lottery[v.CId] = v + } // ... p.Players[ret.Snid] = info + if ret.Snid > 0 && ret.Platform != "" { + p.PlayerPlatform[ret.Snid] = ret.Platform + } } func (p *PlayerInfoMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay { @@ -87,6 +136,9 @@ func (p *PlayerInfoMgr) LoadAfter(platform string, snid int32) *internal.PlayerL func (p *PlayerInfoMgr) CallbackAfter(ret *internal.PlayerLoadReplay) { + if ret != nil && ret.Snid > 0 && ret.Platform != "" { + p.PlayerPlatform[ret.Snid] = ret.Platform + } } func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) { @@ -102,6 +154,11 @@ func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) { if err != nil { logger.Logger.Errorf("SavePlayerGameData snid:%v error: %v", snid, err) } + // 抽奖数据 + err = model.UpsertLottery(platform, common.GetMapValues(data.Lottery)...) + if err != nil { + logger.Logger.Errorf("UpsertLottery snid:%v error: %v", snid, err) + } // ... } @@ -125,4 +182,5 @@ func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) { func (p *PlayerInfoMgr) Release(platform string, snid int32) { delete(p.Players, snid) + delete(p.PlayerPlatform, snid) } diff --git a/worldsrv/scenepolicydata.go b/worldsrv/scenepolicydata.go index 173c64d..a381830 100644 --- a/worldsrv/scenepolicydata.go +++ b/worldsrv/scenepolicydata.go @@ -76,6 +76,16 @@ func (spd *ScenePolicyData) OnSceneState(s *Scene, state int) { spd.CostPayment(s, v.SnId) } } + if s.CustomParam.GetCostType() == 2 { // 房主付费 + n := 0 + cfg := PlatformMgrSingleton.GetConfig(s.platform.IdStr).RoomConfig[s.CustomParam.GetRoomConfigId()] + for _, v := range cfg.GetCost() { + if v != nil && v.GetItemId() == common.ItemIDRoomCard { + n += int(v.GetItemNum()) + } + } + LotteryMgrInst.AddCostRoomCard(s.platform.IdStr, s.creator, int64(n)) + } } case common.SceneStateEnd: @@ -146,7 +156,11 @@ func (spd *ScenePolicyData) CostPayment(s *Scene, snid int32) bool { return false } return spd.costEnough(int(s.CustomParam.GetCostType()), s.playerNum, roomConfig, p.SnId, func(items []*model.Item) { + n := 0 for _, v := range items { + if v.ItemId == common.ItemIDRoomCard { + n += int(v.ItemNum) + } v.ItemNum = -v.ItemNum } BagMgrSingleton.AddItems(&model.AddItemParam{ @@ -160,6 +174,7 @@ func (spd *ScenePolicyData) CostPayment(s *Scene, snid int32) bool { GameFreeId: int64(s.dbGameFree.GetId()), RoomConfigId: roomConfig.GetId(), }) + LotteryMgrInst.AddCostRoomCard(p.Platform, p.SnId, int64(n)) }) } diff --git a/worldsrv/trascate_webapi.go b/worldsrv/trascate_webapi.go index 4e50e4c..b1faf9c 100644 --- a/worldsrv/trascate_webapi.go +++ b/worldsrv/trascate_webapi.go @@ -20,6 +20,7 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/mq" "mongo.games.com/game/proto" "mongo.games.com/game/protocol/bag" loginproto "mongo.games.com/game/protocol/login" @@ -2535,6 +2536,43 @@ func init() { return common.ResponseTag_TransactYield, pack } })) + + WebAPIHandlerMgrSingleton.RegisteWebAPIHandler("/api/game/show_lottery", WebAPIHandlerWrapper( + func(tNode *transact.TransNode, params []byte) (int, proto.Message) { + pack := &webapiproto.SAShowLottery{} + msg := &webapiproto.ASShowLottery{} + + var err error + err = proto.Unmarshal(params, msg) + if err != nil { + pack.Tag = webapiproto.TagCode_FAILED + pack.Msg = "参数错误" + return common.ResponseTag_ParamError, pack + } + + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + err = model.UpdateLotteryMedia(msg.GetPlatform(), msg.GetLogId(), msg.GetList()) + if err != nil { + logger.Logger.Errorf("/api/game/show_lottery UpdateLotteryMedia %v err: %v", msg, err) + return err + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err != nil { + logger.Logger.Errorf("/api/game/show_lottery %v err: %v", msg, err) + pack.Tag = webapiproto.TagCode_FAILED + pack.Msg = "修改失败" + } else { + pack.Tag = webapiproto.TagCode_SUCCESS + pack.Msg = "修改成功" + mq.Write(&model.LotteryLog{Platform: msg.GetPlatform()}, mq.RankLotteryLog) + } + tNode.TransRep.RetFiels = pack + tNode.Resume() + logger.Logger.Tracef("/api/game/show_lottery ret: %v", pack) + }), "modify_show_lottery").Start() + return common.ResponseTag_TransactYield, pack + })) } type playerDataParam struct { diff --git a/xlsx/DB_Task.xlsx b/xlsx/DB_Task.xlsx index 94e4037..6d465cc 100644 Binary files a/xlsx/DB_Task.xlsx and b/xlsx/DB_Task.xlsx differ