From 579e27e17f6338be1a8c9db830dbe621809cbb32 Mon Sep 17 00:00:00 2001 From: kxdd <39694055+shaojiayao@users.noreply.github.com> Date: Sat, 11 May 2024 11:59:22 +0800 Subject: [PATCH] =?UTF-8?q?--story=3D1000625=20--user=3D=E6=9D=8E=E6=B5=B7?= =?UTF-8?q?=E4=BA=AE=20=E5=AD=98=E9=92=B1=E7=BD=90=E8=B4=AD=E4=B9=B0?= =?UTF-8?q?=E9=99=90=E5=88=B6=E8=A1=A5=E5=85=85=20https://www.tapd.cn/3104?= =?UTF-8?q?4302/s/1011001?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_Pigbank_Prop.dat | 2 + data/DB_Pigbank_Prop.json | 5 + model/player.go | 5 +- protocol/welfare/welfare.pb.go | 280 ++++++++++++++++++--------------- protocol/welfare/welfare.proto | 8 +- worldsrv/welfmgr.go | 43 +++-- xlsx/DB_Pigbank_Prop.xlsx | Bin 13591 -> 13720 bytes 7 files changed, 203 insertions(+), 140 deletions(-) diff --git a/data/DB_Pigbank_Prop.dat b/data/DB_Pigbank_Prop.dat index 834693b..5e79d7a 100644 --- a/data/DB_Pigbank_Prop.dat +++ b/data/DB_Pigbank_Prop.dat @@ -2,3 +2,5 @@  BankMaxCoin  WinCoinRate  LoseCoinRate + + DayBuyMaxCnt \ No newline at end of file diff --git a/data/DB_Pigbank_Prop.json b/data/DB_Pigbank_Prop.json index 2e89e10..0bc78d1 100644 --- a/data/DB_Pigbank_Prop.json +++ b/data/DB_Pigbank_Prop.json @@ -14,6 +14,11 @@ "Id": 3, "PorpName": "LoseCoinRate", "PropValue": 10 + }, + { + "Id": 4, + "PorpName": "DayBuyMaxCnt", + "PropValue": 2 } ] } \ No newline at end of file diff --git a/model/player.go b/model/player.go index 1e07b7f..01af7cd 100644 --- a/model/player.go +++ b/model/player.go @@ -475,8 +475,9 @@ type TaskData struct { } type PigBankData struct { - TakeTimes int32 - BankCoin int64 + TakeTimes int32 + BankCoin int64 + DayBuyTimes int32 } type WelfareData struct { diff --git a/protocol/welfare/welfare.pb.go b/protocol/welfare/welfare.pb.go index 54ab5f6..2bef3c9 100644 --- a/protocol/welfare/welfare.pb.go +++ b/protocol/welfare/welfare.pb.go @@ -24,17 +24,18 @@ const ( type OpResultCode int32 const ( - OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 - OpResultCode_OPRC_Error OpResultCode = 1 //失败 - OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数 - OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取 - OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足 - OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人 - OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己 - OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人 - OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在 - OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足 - OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满 + OpResultCode_OPRC_Sucess OpResultCode = 0 //成功 + OpResultCode_OPRC_Error OpResultCode = 1 //失败 + OpResultCode_OPRC_NoTimes OpResultCode = 2 //没有领取次数 + OpResultCode_OPRC_CoinTooMore OpResultCode = 3 // 金币过多不符合领取 + OpResultCode_OPRC_ErrCoin OpResultCode = 4 // 钻石不足 + OpResultCode_OPRC_AlreadyBind OpResultCode = 5 // 已经绑定过邀请人 + OpResultCode_OPRC_BindSelf OpResultCode = 6 // 邀请人不能是自己 + OpResultCode_OPRC_MyInvite OpResultCode = 7 // 邀请人不能是我邀请的人 + OpResultCode_OPRC_NotExist OpResultCode = 8 // 邀请人不存在 + OpResultCode_OPRC_DiamondLess OpResultCode = 9 // 钻石不足 + OpResultCode_OPRC_PigbankNotFull OpResultCode = 10 // 存钱罐未满 + OpResultCode_OPRC_PigbankOverTakeTimes OpResultCode = 11 // 存钱罐超过每日领取次数 ) // Enum value maps for OpResultCode. @@ -51,19 +52,21 @@ var ( 8: "OPRC_NotExist", 9: "OPRC_DiamondLess", 10: "OPRC_PigbankNotFull", + 11: "OPRC_PigbankOverTakeTimes", } OpResultCode_value = map[string]int32{ - "OPRC_Sucess": 0, - "OPRC_Error": 1, - "OPRC_NoTimes": 2, - "OPRC_CoinTooMore": 3, - "OPRC_ErrCoin": 4, - "OPRC_AlreadyBind": 5, - "OPRC_BindSelf": 6, - "OPRC_MyInvite": 7, - "OPRC_NotExist": 8, - "OPRC_DiamondLess": 9, - "OPRC_PigbankNotFull": 10, + "OPRC_Sucess": 0, + "OPRC_Error": 1, + "OPRC_NoTimes": 2, + "OPRC_CoinTooMore": 3, + "OPRC_ErrCoin": 4, + "OPRC_AlreadyBind": 5, + "OPRC_BindSelf": 6, + "OPRC_MyInvite": 7, + "OPRC_NotExist": 8, + "OPRC_DiamondLess": 9, + "OPRC_PigbankNotFull": 10, + "OPRC_PigbankOverTakeTimes": 11, } ) @@ -2185,11 +2188,12 @@ type SCPigbankGetInfo struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 - BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 - BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` //结果 + BankCoin int64 `protobuf:"varint,2,opt,name=BankCoin,proto3" json:"BankCoin,omitempty"` // 当前已存金额 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 + BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 + DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 } func (x *SCPigbankGetInfo) Reset() { @@ -2259,6 +2263,13 @@ func (x *SCPigbankGetInfo) GetBankMaxCoin() int64 { return 0 } +func (x *SCPigbankGetInfo) GetDayBuyMaxCnt() int32 { + if x != nil { + return x.DayBuyMaxCnt + } + return 0 +} + // 存钱罐领取金币 //PACKET_CSPigbankTakeCoin type CSPigbankTakeCoin struct { @@ -2306,11 +2317,12 @@ type SCPigbankTakeCoin struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 - TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 - TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 - CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 - BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 + OpRetCode OpResultCode `protobuf:"varint,1,opt,name=OpRetCode,proto3,enum=welfare.OpResultCode" json:"OpRetCode,omitempty"` // 结果 + TakeCoinNum int64 `protobuf:"varint,2,opt,name=TakeCoinNum,proto3" json:"TakeCoinNum,omitempty"` // 领取金币数量 + TakeTimes int32 `protobuf:"varint,3,opt,name=TakeTimes,proto3" json:"TakeTimes,omitempty"` // 领取次数 + CostDiamond int64 `protobuf:"varint,4,opt,name=CostDiamond,proto3" json:"CostDiamond,omitempty"` // 耗费钻石 + BankMaxCoin int64 `protobuf:"varint,5,opt,name=BankMaxCoin,proto3" json:"BankMaxCoin,omitempty"` // 存钱罐最储存值 + DayBuyMaxCnt int32 `protobuf:"varint,6,opt,name=DayBuyMaxCnt,proto3" json:"DayBuyMaxCnt,omitempty"` // 今日最大可购买次数 } func (x *SCPigbankTakeCoin) Reset() { @@ -2380,6 +2392,13 @@ func (x *SCPigbankTakeCoin) GetBankMaxCoin() int64 { return 0 } +func (x *SCPigbankTakeCoin) GetDayBuyMaxCnt() int32 { + if x != nil { + return x.DayBuyMaxCnt + } + return 0 +} + var File_welfare_proto protoreflect.FileDescriptor var file_welfare_proto_rawDesc = []byte{ @@ -2577,7 +2596,7 @@ var file_welfare_proto_rawDesc = []byte{ 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc5, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x69, 0x67, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x10, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, @@ -2589,100 +2608,107 @@ var file_welfare_proto_rawDesc = []byte{ 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x13, - 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, - 0x6f, 0x69, 0x6e, 0x22, 0xcc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, - 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, - 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x77, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x20, - 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, 0x6d, - 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, - 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, - 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, - 0x69, 0x6e, 0x2a, 0xe7, 0x01, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, - 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, - 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x10, 0x01, 0x12, 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, 0x2a, 0xcd, 0x07, 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, 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, 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, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, + 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, + 0x6e, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, + 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0xf0, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x50, 0x69, + 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x33, 0x0a, + 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, + 0x64, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x75, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, + 0x6e, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, + 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x78, 0x43, + 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x42, 0x61, 0x6e, 0x6b, 0x4d, + 0x61, 0x78, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x42, 0x75, 0x79, + 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, + 0x79, 0x42, 0x75, 0x79, 0x4d, 0x61, 0x78, 0x43, 0x6e, 0x74, 0x2a, 0x86, 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, 0x2a, 0xcd, 0x07, 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, 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, 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 ( diff --git a/protocol/welfare/welfare.proto b/protocol/welfare/welfare.proto index 5566e52..0ac6416 100644 --- a/protocol/welfare/welfare.proto +++ b/protocol/welfare/welfare.proto @@ -14,6 +14,7 @@ enum OpResultCode { OPRC_NotExist = 8; // 邀请人不存在 OPRC_DiamondLess = 9; // 钻石不足 OPRC_PigbankNotFull = 10; // 存钱罐未满 + OPRC_PigbankOverTakeTimes = 11; // 存钱罐超过每日领取次数 } // 福利大厅 @@ -277,6 +278,7 @@ message SCPigbankGetInfo{ int32 TakeTimes = 3; // 领取次数 int64 CostDiamond = 4; // 耗费钻石 int64 BankMaxCoin = 5; // 存钱罐最储存值 + int32 DayBuyMaxCnt = 6; // 今日最大可购买次数 } @@ -291,6 +293,8 @@ message SCPigbankTakeCoin{ OpResultCode OpRetCode = 1; // 结果 int64 TakeCoinNum = 2; // 领取金币数量 int32 TakeTimes = 3; // 领取次数 - int64 CostDiamond = 4; // 耗费钻石 - int64 BankMaxCoin = 5; // 存钱罐最储存值 + int64 CostDiamond = 4; // 耗费钻石 + int64 BankMaxCoin = 5; // 存钱罐最储存值 + int32 DayBuyMaxCnt = 6; // 今日最大可购买次数 + } \ No newline at end of file diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index 34add70..bc068f2 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -279,6 +279,8 @@ func (this *WelfareMgr) OnDayChanged(player *Player) error { player.SendToClient(int(welfare.SPacketID_PACKET_SC_WELF_GETRELIEFFUND), pack) logger.Logger.Tracef("OnDayChanged SCGetReliefFund snid: %v pack: %v", player.SnId, pack) + // 重置存钱罐 + this.DayResetPigrank(player) return nil } @@ -1509,13 +1511,14 @@ func (this *WelfareMgr) PigbankGetInfo(p *Player) { if p.WelfData != nil && p.WelfData.PigBank != nil { pack.OpRetCode = welfare.OpResultCode_OPRC_Sucess pack.BankCoin = p.WelfData.PigBank.BankCoin - pack.TakeTimes = p.WelfData.PigBank.TakeTimes - pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes + pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.DayBuyTimes + 1) pack.BankMaxCoin = int64(fGetPropValue("BankMaxCoin")) - } + pack.DayBuyMaxCnt = fGetPropValue("DayBuyMaxCnt") - logger.Logger.Tracef("PigbankGetInfo snid: %v pack: %v", p.SnId, pack) - p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankGetInfo), pack) + logger.Logger.Tracef("PigbankGetInfo snid: %v pack: %v", p.SnId, pack) + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankGetInfo), pack) + } } // PigbankTakeCoin 存钱罐领取金币 @@ -1545,11 +1548,22 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } BankMaxCoin := int64(fGetPropValue("BankMaxCoin")) + DayBuyMaxCnt := fGetPropValue("DayBuyMaxCnt") + if p.WelfData != nil && p.WelfData.PigBank != nil { - pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.DayBuyTimes + 1) pack.BankMaxCoin = BankMaxCoin + // 检查每日领取次数 + if p.WelfData.PigBank.DayBuyTimes >= DayBuyMaxCnt { + pack.OpRetCode = welfare.OpResultCode_OPRC_PigbankOverTakeTimes + logger.Logger.Trace("存钱罐没有满") + p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) + return + } + + // 检查存钱罐是否满 if p.WelfData.PigBank.BankCoin < BankMaxCoin { pack.OpRetCode = welfare.OpResultCode_OPRC_PigbankNotFull logger.Logger.Trace("存钱罐没有满") @@ -1558,7 +1572,7 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } // 先扣钻石 - costDiamond := fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + costDiamond := fGetCostDiamond(p.WelfData.PigBank.DayBuyTimes + 1) if p.Diamond >= costDiamond { logger.Logger.Trace("开存钱罐消耗钻石", costDiamond) p.AddDiamond(-costDiamond, 0, common.GainWay_PigrankTakeCoin, "system", "-开存钱罐消耗钻石") @@ -1578,9 +1592,11 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { // 领取完之后 设置为0 p.WelfData.PigBank.BankCoin = 0 p.WelfData.PigBank.TakeTimes++ + p.WelfData.PigBank.DayBuyTimes++ - pack.TakeTimes = p.WelfData.PigBank.TakeTimes - pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.TakeTimes + 1) + pack.TakeTimes = p.WelfData.PigBank.DayBuyTimes + pack.CostDiamond = fGetCostDiamond(p.WelfData.PigBank.DayBuyTimes + 1) + pack.DayBuyMaxCnt = DayBuyMaxCnt logger.Logger.Tracef("PigbankTakeCoin snid: %v pack: %v", p.SnId, pack) p.SendToClient(int(welfare.SPacketID_PACKET_SCPigbankTakeCoin), pack) @@ -1588,6 +1604,15 @@ func (this *WelfareMgr) PigbankTakeCoin(p *Player) { } } +// 每日重置存钱罐属性 +func (this *WelfareMgr) DayResetPigrank(p *Player) { + + if p != nil && p.WelfData != nil && p.WelfData.PigBank != nil { + p.WelfData.PigBank.DayBuyTimes = 0 + + this.PigbankGetInfo(p) + } +} func (this *WelfareMgr) Update() { } diff --git a/xlsx/DB_Pigbank_Prop.xlsx b/xlsx/DB_Pigbank_Prop.xlsx index 3f4fb1072a7af6255d280aa76e0ae6fcd68a4aac..4d103b561c6cf83f3e2d531858fccfac07d63d28 100644 GIT binary patch delta 8481 zcmZvCWmFx_(k>d@Awh#naCeuDySqCCcgWxte51jGYX~mE-8HytfQ`H6@}BeEd)9Z> z?H|2rx}JKfr>19mR#m6jrQ6r!K*J}y!xdP73!v$NqC@wIDUbVzY+^(uTqkm$Ciu*H zs%b}_Zj3G2^KH!^M$g>r*ZS#=E2}Dk#hu1E!e{bHry7>sO!y3LYhs01`B0pbVRHrO z{G``C+{l&YdNqs-Q(_!7rJ0|dsDI@N@;KXF!o+}0V3lW5FTaNjOyJ>~j}GRgJKl%i zZn5$J(R=_Wr2*@gaZun6ot-Is9MV2MbCBszitq4h=XkZvY`XB6#1ik2>+8}v5nm7a zSw~)d^5y2g$+hZkS?m3&u7m&4tLbOASI(QEKnS)f+Im6ifaGRr7KE#%wQUE^NIH+8 zv8H8Si_(=9c@zs$doz7%N@qKM{IVs1wC$X#^JTpg5bE^*wKh&_e1M^h^lEqku}gkL zAcJ9%K2}W~mb&`mJta|gXCE>BMP?`vGR<48>aI!Xu*zb2jA6HR!NRtVRIrwW-_QA3 zReU~DUR2M=NjTw}sE!)84jS1_P>X;I777X-5zLH80CwhtPl87UBKFZY^A|^isONCBLs#(#0NN%;N{Q zlz#a1^sw^^iH2W3=RYW_{A5Wq1F?F1m@P~>l46NcfC|$qaj;czBa!0QSL^qnBPuuj zR9N2JZQKy)UJ!WzFqhI7T=9OC!u!B=g}iV?NmxrK33AJ*qA!pApsL{t`=uQ>_H@qZ z3gd7ux~a5b$0vmMF4c&IfcQd_LS1dNCp4pyBHq(rkC*W5x2~nM_!(!#_L1f9EU{)W zm&xzARy!jnfkP1YP=s!Kk@sxgE;|K>zAa@1A5WGdK>Hctqb6teE{tKlJ}Di& znrEiLBnb6*Vka$6tJ4P^75MT!iCuy(4jBc4<(+!j&;O-g4fP~^0oNgiaI+Ya1rOrJ z&`2jpp}uC(>EfWAzea3I7LtdhxA%$|GbvNKWceM}T?CW4cbEfP(MkFTJ|Or3Qyeg0 z@|HB2)4sd~S}Km#NhYN6b~Vm5ZLMmbnOy4>meM`!H!PpR`plwSlf=B^;9M=`RA*tU z%0js;5$sid7E$`q$QSl_sUZ2a>8M<2Z}8{RMDuAhyIz9dYC>ssg)BSBU9$u&yLj*V7>+_zGnA462Ur8jz_v$e@)C0?yl!^kMZ-hw%6NT&?0#pCWy z7tL$_(fV=ru3N^x>!P(a@#1V`K;YW&Xfzxy5RRhE_Q7y&K3@cUbA>SL|571Bgodi? zIso!)M+Da;+6%IEbCkrasp>e6ZJXOMTK&-JLBM}$c;;^`(6!il9J^Kv=<*f5MRmD2k{j8 zu@zS)j?gj3kT4lR*2@;LmO6(^{z9q9!@}W0K|vuxMJR2H4wjmRj3T~W(!RY?v;dD; z2WO)Xs?q_cD@`R8YPRA z-wFQEH`&rtY`<&m5c1^zy(QFXp$W7#?`bz*>LsUDh6AHbN*)YXkVVwiEP?jVUW+Xj zB^85Af~m$oReyElpg&ad`Wsx@kH;oI@Ku<;{C+yrlC>9!H?H+!tP{AWUodBM8Tdix z_X?}KvFA?rwcNXEC1QJKOTNHJi63Wlax@6v74A4GMMU^>XUG;2@7;^L@Nb}#&}%RF zQg5YYx-jY3w*ev6KQW>P$}*8G{08K>V|p#Y^YTE zrG1|IiSNeO=(rlBee;7uqk8gvesVy5sCNGK;K@h*dW|M@#j!qm$TWu8wMuNbW_jYi zAmy8yZSv3YtmqlnX;+1NiO};Ug{kbgjkl(HytJ{$bVPO@!Nlvm2w-(*$?Tu58uvGo z>;Y3+I1SwfY)Ucz$w2YqtYigH5bmMh3#Cqag;h@4W<%^D74mJl1IudwpW^k zW=Uq){N-F^?S0w93S1UCP1d-`d~_Jrl0mheW>=3$405zMNI-QQHj+!O^CcYB)fyIb zO07esw3fa_B~R<3$>$Jgq)tq(F|zuNDQ^;!v1pF{DbbvpSd_BV$G15+v=5PfMB&XX z!w~s2n|*3$8aAGWP%NH?jVRV!qN*5qucwONvM7f{AN5NyfHwvCY0g_--A69gQ0F3} za^euyhe-R4)&pN`@28uLiVvhnGE80BJPgN^Mmv^W@Fs7{!!*wfxwJ6ej&>Kj?$=`} zJ4FQC!2r3K7Ip-j?h-Fmsc56P+3q`PUJv|f7sqmkg9I`LzfY!ocX6~h#j4)j0#qt#${kM*%tP?=NJ99> z{+K);Pjn>uxc21Iz$4qrz*^X>$kKo=Tjs^KM*u2iLCX%+X-ZA~6PsrpG<|Khe2AUR z56%&CA@B+2?&Jw(TOhHxWwYghS}_~3c#vXIpF863<%uG({zh%Wy@Z@$PsBKi&k>98 zyO`w*RVAenS@@iKZ zVqIk>Ed=_|L*pD%*Q&(&yPZ5Z3BI?YCxbq^TL+_N>N|KEyn=?Z5)u+36Vekx6X40^ z#kE2!k(Ln6Is{Nc0geqUAU?e)7n^7>XHu4o z&qi`6B;imbC^)atiq@}1&qd$jOC!(%;XRgP7TN!nL3H?NLxZ%4KuOmIPzos)WFW;( z?D2^2hlYkqhW3S0g)$=QV%JhwC=P)z8Fp<}mfx5Ssbq`##+a9(J(?tPXr) z>k$NHx4PM?6r7}h_Vgz$4l+rWEjzZx_553}x37ACWt_1c&2<$`TT-`XtW0M-(SW)= z3+QbtKP<$2V~F*az(9&Zj6#w{)Wxi&vXB~Drqa6iebg$xvkCpNr9O#FdNkZsB*w&r zLrCc#jlU(K$gNF?CoE1OZYGW`{vHTrMAF5o<&Gi|{_{cmraNLC63~OX0e6BFBp<^6 znTFHqzS*+wk*2hJ-$LWR0#Ea^x5Q}{a&(=FAt-B?`Btlyt z{(s&4$4h{^O+@?#j^37pfX0-Y4WJS-89IPUN@^K~(eRuVgZ$q&<9UD0R7xWJ#mhDf z<3vR)-fpvv{^|H@24=>^PVdcWpp1cf>)?PB|2zi^VD2ydy2j z&PYW?K}ADFZXq_5lz>NW4_?Fy#pkn6aJj9I1O!9j&#AsDS_P;7+#jS zF!=9SZ*^~BESwJ#GW$Ht3x=yVp!W~rJ)0R@(T$MaAR)w`lkoH*UwEG*ZkVgTZex60 zLI9kL3c|Yzc$y$g#+G|4hk6YY4-5+Pju^DyFJ5Fo-l^Q{RNRiXoZ;#s;;qKW-S=?m zuV3tH+)BR?DVe3d%tDj*#fir6;BHRBI##SkL}Ugcfar@ic9_0bNwa)D4VKD?i}|T57C*dr|3&Fi-OJ2`IQz3iR+O!I?J3mkw>OD-Wm3K zzO$-uHbX~QXzYA#sLJ;;%j7{XkDm;cifv2ZIgNLL9ISo!rsb1nfc*$Q5 zj*byv2f1z?Rc;m?-(_vN#(8WUHBU?(`eb&M|GDQ1`23D zLraO{AoQ*Ze!s4^$n(Q%t5{DZecG`E#coxtqsZU^xJ_Xw(jT$keUv7;pXJ#g+8Yv&`R37P*nc{4)A}LR#~IR z1^A6VJ5P&J#jzNX8>FG2@FNoUOwH7uID=Hn61r(tm)3)qVy#_`CY#@T7fj2*zSAjn>|&B!dh6MWOAv+AwHN?S~eTW`pkh zTxDCJlhu4AYJVt!e+z+w(W@N2Op10wN@xapE4#vaN2dMiSV}0tu(51<;&VzU(30aa zan~C&Ai?0mk<^LJGb@z`@xyTd;Ck0nu4$+MYE#gqHugSsipk<9J==fT5DWwTth2hG z6zuOvnow4vqdPT=Q%&TCPaU0>tR_REV(dwXlm6zoNfvX(9dv_MZ?zWK(X)a~do9`W z5MOcR7UM&!2DQ2cLaTaB0P;nApSVsGb*fnZ(bd9jS;ykN7OEZ0|F?h!dYf}Ns zOZjry?^0K|NS@<3RJuIMiSr;<(f5a45dn4fv5%%?FP8(U80_z{Zhc}a>1;fzG#1MD z2(NtfmV!uNhy$E1vV-f%C27ZSyh z&^p~ksgKed145Ex-jYkMg^9DogF^1VV9+}fUc6m{LkxP#D}Z4+j3=mDL`gy+^zPE3 z3sk-oGh&h@T7Kse;MWqZ&4|d!l-aO|aZ^=@*hU|mQ)`^Hr=YJw#GD$Xjkwa8w^l@! z{2!>WVeW%?zq;}nFrIxrJt`O+VqRQx4$qXGbfv6==jbf6T4^%< z;`Qb zYv)H^bV)?Vs`8n02A`A7sgyLUL z_)72ZEJ9143aIA8R(ad(fQOZC)j5-eM@s7xN3ztJR6RmCE_{AtYhtLyyB*1Eux_&d zmD^tc^R7E*t81GvEl_NhvkHu9HcAFa=c!>>jN;p%W;DEev!xv9 z7QiKc=|X!Q=0+`yenOp2XG$5S63LK8jJmOqknWluxmd8BT>C){D(CbbQ4MMg-Jb^a zW8K}-_ZKI;Bc_j2bU^UvPHR|Xw?=mGqmv8#w2B#5q{NMOI-*59uShK8DaVX4cJv}l z*g=mSnFCV3{Q0UY2jOyxL28n7!Vi4yK0rH9jdS3S4l+pj4_$$G0voaYr`?M?Ez{@g z!|MwHx&TN#BTvz%e2mY16(l2r zPae%jXtv(_^*rl_$^JlvE6&bYl8+%iF%y&cS%mS0HvxnVT~atXKd#1pgNc@r3%C(J z=FJn2183PH-og(j1)}H~Om2j?M;Qb>F(OayzPG<0dh628Iyth7Xs>jXlu4~KQurS3 zHYSxf(BP6jQPT#Fi*y|^_FoTg44kzKJoFy!h5&Hx7D*9*7DxH5IJ5n|eP5?ZVUb&Z zM#>bP<_f>!CugquFv=CI1Y|YR1N{g%C85LNryVX7>F_cRS5Z)km5*fdeY|~TnJspqM zMUY2DMzIHonri(V9`vFCd^kJ)K3%l8fiXH!ZKVvld~+p3dyn>RDVmAc>XO(1F(*R7|B z*zr&3?SuV{i7#_OaELbn>T{5aUXuCY%uV6SptcM04XeXStdLD)=$1>@WuUOy!prz- z@;1hXBE3xQK+)c_6gdXnu12w?&oO?j@HR z{<7b0QNuM`k+TEF{n0lea|=J7UKV}$FE56VyHtToPB+CKD;IQMwStU0#d2x^O9`f{ zML%=I_<8WYki07Rd$ub-hfOSfm9oNU*1Us;WN zOMsJ#N6Xo}knVh#sXkF2l~%@}Id2I0tgcOlxl3q(`U}ftU{~u4-7v680RVTwgA%SW zTDU8g2=rLztV2qWruO}dv7$V(%@>u1WScH+N5;w$E?MH=gVe(^)V)|aXDB6-x?AFu zN1WK^=)f%pO%;b({(3nc+ z=B{hfvl7ya3$s3VfZV;mWXD^$U@?22qgQOs73vg$v0t>o7PoPmA zk+qFM3z&=Tu{J@jDf$5VV_k86vDHm(f6?R57lC(s)p~QpNoIJTk~L{!8*j`_74Bgq zoQN;cPq(^mNcqsT7?mwRc~GH4?~d|J!U(zgd1wmfu8$eUv51<0I<%|mU#<(RE&EGc z^0~SPc?44Fj)S%30UdJ5`_DGgWV7kTbYuHg~ z+r9XhesuU&F&N{vo3=6D!%>NO>MkAJlKH!~rNf+~1e#{mhaEM&z15dsJYOOyB+$J%`O`64^MM1{dYuhqIl%2J#pKspt(@eAJWp+V0n4P- zi6=;tzS0-gO{pIed${An-;ZxHtylHvE_pQrY7xmT^|m_k0PuqESH-{i-c z(Zs7U@&2rrOGICZo@ux`PYF(PPu{IHWyo(sMU<4|t(32H*&PrbrrQVpQmy{{E+)on zlUe0inE>$H*>^_|M3`jl)s7AJXpwYv+l)@u$~==ROz5;@Tt@`z&1F>`R+y1k-F`rG zo+&MYdoo%)AsvZ7dXZv*_D_%wyTh-so$r^IE5vWy4YL=74A8%& zDPK%`#;mWHUzoe`{mgAP3YoP7)uTshVc@A2*T<8yEECt!tuA zi}0e4F&XE7cK;L=1Ul)uCP;QRI2RR%9CvTt`F)U0WBYqhf4dQ9AW|Kw^k+I%_mh}7 z40X&1h5zwyg}D%%PL9OX1We}Dhe_JP@B3C-`h3bxErp=4&5Kg^wqVo&d|L@Ako+f|P=GD=hjp%qB2k%!3-;MGQj>c0+>u zwA%J6r=6M=RePmqGOcqmVEF&Q3CnmaY7cmYMLBN*VSxmXwT&Q3NL#fg?HTS$W1uTh zqK%NqvR2C!K;+b&it&+_Sa{BHp5CCQ-OGXQV(fE8iwW#brQ@-PZM>e>3AT=$ZH6$N zMF`hcc=b+LYB&16QYQEJ_HC?J5`>*ag0S^2iCF-i5j-*A;NWOveb z6QRN}-B_W0yDUj>-zt41+8wsDS>QCizKwv(4_@1q`(%#hy<*%Sf-!;3#d!<_g?SYH z5tqBak@4s9$(6KxOSe?(t3S9aa#q{+_6OZ&(gcnBzxn{L{_Q!y24iP-9NAw7x}c2S zej&x2ETf<$;{?JwVMaYT7#ZIofY~5?8wdygU<{uVrL|J+i(A8yM==Kr&jk*gN7n|>p@@$J1xM%oI4CHLe?$KV8x7v#5QNSGf8-=5{!eKg t3JU*!p@!hV`J8xf#dbWR{}c=V8^i(5Ym$mZ-#xkU40%j{QKS6Su0R6G&7KXEhoG1=p0i-2&;x^UGmZimETsO zXvHa%vJbR5P;K0O?+Dm$w@o3e zglI+xKhMRcmuA0TD5N*1*3xQjte!_I$mI(?s8AomXshHqErq*>65FtYt3JjbAob*u zLJAzn5zpdcC+an~_^u-9)c^yAb4N@6USAPo6M@$yOR&ID4HarJ^dZEHKrS8$=uJ*! z`P!vUPpU${)^*NP>mjfd%F*BPzNwL2wS0E4S;yAr70CoGL9JRts&e#`>jwo^!5xH* zQI$rHl(`vUtvvItq!h!k3{R=v^CUP|PBjCu({-`@ybTj)LQIahCos`#osSpa$R#2b z42N8LaSiBd9-<-qA?EHV62S4fi1%>H3WVdPPx9PmGQuuikqYkpxvMI_Onp#NBDLbE zScJYslBm5dPAPv0-$V=B1dY<_)7U`(3k8*i2-<{W2G$2`kO|^r71~u!)y<_=Sz<0Q zWCs7Dn^=x)e!3QEiJ_j7*?|eQ-pzL&w6ONNGavw9YPxFB^J35_7AVRLR;x$?U-Z^L zzthOlA!d<=M-GIQIor(_A19$UnIrgst6iZj*=n#b%c*@ppjZZ@Ar+BkG?Z-n%py=& zMPEOL08Euxj4RU6<2KeP=S-!X#`2xe^1(Z(3s)4uMuwjq`r6W^Tf1z3OWm#9h+yyN ztBOULJ8(1*hT4-{uE~^iM1^m;KgC|16An_%we+LDR&7#bF!8!UM_JHY%_21FU2-#| znv%;cvkfiNl`tS@QYFFLh%6u!DV2E`;w`?)1g?cx6HizZgW0oc8F4Pd*TJ&`iCY~v z_XC9*jFZw$Hz+9bd;me_lniV=)C+U6-Yw1WWxnd*u3EdFDmDo?Y=?|PH!!gYL8(R})0D(g;34(W?*YrpI%WXFY`xLwrqaRSs>L*g(!4*zp@}Y+xUJ^35idUQryhNBIpEs&W6hC^ zvfBS7%!?F|ig1!P=&@6?8#V96>iZj{HxqI70fUsHJ>l*kcoWYUUZN9G$ZMXj1o(|y z!YL33aZ40~>eUt=1FQqXBWk6r%(iDZv-|~an+IkOVhE|NLq09&tgKx^=;3OIq|(3} zbNC3r7Y~h77h;z3JM7-N_Fdl zT+0X4K_n=s7lyaZLJZ_)_i=Q{&C++@lE(pWFq-$m7T!UJkMD5iMH9qhdH^Sjw_9NRq;jD;;p~CF zx^suEw=Z>}u>*kqY}kEsXqakU?lrZuN_zcNyiU(jN6~t&9XKfa@Mu7Gt= z2<%wq@nzm!u3DKI-Wcbp!AmEV_Gs;V@J`yW-#)__eQ0fbo?!o3 zp1EK>cBoCxq&~TwB%cI&C)C@;48t|W zkm$QmO2rQ_7K=(d+#M_!bj=ci@QUT^cxyD{dH0A>>APZm2lMk0{Jwf38kdT!O_viQ zE7{5QS7!nJxL<1G#E#)kTyDXyT%8>5kp9nZ&p_m4OxNG;2f;1G^IU&Smd-5`|4jG8 zX>RA$g6&IdCFhYiCUtzzzB546t8Z|(L_8FihhXvr0(?e&3^moA`KBm2X7|=HnbwQd zkHbUJL*k@*H|`u|6dmsa4I91X6H~)d&TSuedEWzFBz<9eP}LA3X-$Y)$S)9YX<9Ib z!`POPV<4>D$-j%ndJ#Y0{c~ z2ATL$tRY-h<_QWV(qER`paKi_e&Ey5$*OBCYS{sTS%#?Jy7bHyek3dvQ$U&ui{enp zNZ?5UhKKGll#J2kR0~W8fk@=h!wMuuD%8&UD6wGq%?)f-0G%h1#7={^yt?n37ZF-& z77@7o3?JjUMXw5`bj;Ayx!^I7t8x>S#xDInq+$!vRdAa}!RafI;Q%b(NN5(3W0FWy zy64Q`Qis>6rwg4~4yfpv1>XD+I0l*?Es7JhxL*~ZH}k-~(G(^s)vOkf#FF7?!!<~S z#!^9W*1duVYdw_EMT>r)hX0gDy`+Eh=U_vGj_D8LI}O|ESv^}b#CLKAL@l$I(RQ>h z^6HM^M&@NZ*b%H-IK=8HNwxjKx5c$zaubQ5Wir*sWfK8si3O!^V}aKOuGGVfOgPgN z-9D6co1PseRCIZ1TKI&`Cn?4>WTR^&oqQtEmO?Dmz&OZsh@t{IMJ>Xw6jC$ylZ&Kr z$3w6#g;H^5skQC>(-H7jBy3Zp{1{fK1!LRD%?T5wDvZ5*rfj0lk$L_B`sSZ5ONh6j zpDHU17z2p>#HgvG1%BgDYkbUgu4o#2lCwjLQm-u0G#4(hSjk!v;ic71`?vC9;oL!@ zXsun8>~f@wyv-X>r>v(RZRYsRy?=mgSz4ryKkP4BEsc|ClRfLofv~HNKG^=2@Ma&X z=o`hPlty~hyM(x3ui^v z$8KZ*NDb*?v9#NaE-J()8EHRNrVw$F7Z;pW(jGxu11wMP#3(Hbr<#yxRxI>gXaZ=MYiN z^b=72KKNQHD_{>}1-iGUg$K`w7BjtU24jWR9Xq;RbJ$Epz)|LLK$BGGm_V0)oLYL% z{WGWYu79X7pNp+}{A7fz^=UPY@CNRu&yLotDY89)J zNU`-&6-!FeNSaIHNT!9?AnD^aa>bB~1)|zTC2R;AK%_*pIbCej!zLpJ(I_b`BQbj* zjlI`;iDuN)*wkFq$ka-by5Tj*OBp}EPlrLxJC-e@Y=FrS-yHj)14mm@P zfk;IyCjZNb>K^i$YFjYWCL0BT9oz1z9V-+2cmHOqAMC|b#T6kyPhMVHURhppC^-?I z+Fp{Mp@DYDNy3P4$XR8K;`Yg={4cY^>wlUZBNgrbZx!IrA!3Qar6!uU2=m>Yl|K{J zd@#~}k#Vx4>oX?b!$rnt)c;;JgLI;T&(kC?>izUz*O#MQ4ksF(+d@r_JJDnw!o(ow z$UR$;dejt{`J46*BfaMVzSttp5V{!`JisDn1a5D=Q;W0J=xCT_H;O0z_G@in`DV; z*x0C_M(@7Z&^dozPY-;J?3qq1O|nPpl-;1nVtbe)8~*6s^YZN^$$wekD`jRG3v?W$ zf}XPd^g_3i_mC_T)}q;#GF$4t%vuDtKO$km%+}*LL)IH89gXlO*?@gP5w@RXgd(a| zf)N!I0(k}mbWJxPf+Ow8^#VuVmv#YcrFOQcg=#fZp*QFUoZUSeWU*= zLp}3Sciu0qJzi})dT^H|_8IR^?g_-F0CP2It^q97N^cKg8-CioVPDk-4D)n2dP~G- z&$O1XZ1e!#N&~d~;*DNyV1bXjh88PtJbm=e}8DB|uj<}}XvL*KPK2Z~tqs;QU#mh-mmw8qp= z)WNZIv$poXZt)o1mlDvB4;S{@@S-D}!q6!5jvNGjzcyIq{Bj&3VMtCqfg~Iwr#C&+ zoeXC0Yt9+;xI7NHy#~dJZ*<>pbr0y3ABqUQj$f7EZD-7|pBVDj7le%yyF%&4bZwJS zGy}+kM$V-wGUAMN08H#7-WnY7AWz1uBR__XskxGPO1>*`Pq;)w|$zN+%g_6{B|t{a`r%;62k7YBcG+s9GY zpJwsvPBUCgv<(uVf?;`p0E`QQYJ1YTXnW8&;b9aAdbCk-w^~Jye(ngAwE(UGp=O)_ z9d-c+<~oFD1qc3qCh{xQNIK zC$_7KbwxkoaBq*RA6juA^;o7n0gLa6rU9k!U}e!vR&u;4;I5W^daFJjT*Mja#l|iE z&RIA6T+5c%-ma-I<=qi%Zv)?P79)eQp51x|9&wTmgy_MOp%-I|RIzs2hWA^nBoKaw zgL0|Y=mCRZ_5?TDmq%1r!YO4zO>wUxK`&oR`tFQER|F`x)QoLR>J!uT)t0E zbzD3jajfWo^k%Y`A8~g5CWJOHd4MFCwLiz@UldoB2}3T=RO+>`(fmKoWG6nSh7%8) zC}gB-hni_wm;S@XitZJ^UzstJv-W*`F8eW*;!9ncX5_n4Z)fXH=UbzUA;EbF_QTmS z7+_%0$$p%9;^57;Jw-th*v1Nv_X8-2Y#3Fqw3xg`ySRf&5E|cL|3nI8pr0Aq%Ue!6 z{GcQ6h+>CeP}Xwu*;m2vS%0xkF-U<=;hRk!%|M-RDDTnkyT)ZCglHP_dlyr$+6yYQ z5|j0=ov<94@IYf)78HX|EDPVN46Xw5bi7Ov5#=@v9m=Wfk+5Z2uxLU*Q%mEeo6#EX zOxV#D4O!9B4B5~Y>CFuS>)uD^zF;K;(P2wT_$icTw(_J(o7ys~=o)Hul<0k_>t~=@ zgAHz0cJuV}+ulL)M_JgIb==Kjtc0XvR7jIIZS<-t4r2P53C#@shyzgwBSTwj56ue+ zIY_XZ{rc5=t(b5JeGG}_^>h1COvCu@r*^Vyz^eGK5Rsjez|gW|;4C{^+VR!59#28C zjEqecu-Et(CAGOk13NgCAqmoj!$ev*@&eB8z-y4PwvHc?Ih%IG4|%NEB9T;zQGL{M zyX%rkgNoP=nwlj#ud1_nM8vY<*=^IBr~T1WBY6wGAU&RV4N6$=CJ)3r+p5?LuJj2v zdA*_X`uTb*u?X8MV3w_NvXkaRti%r#e-h<)1I$tysxa*3Zav>4cmg9nVtWEzn2ugJ zjhSKzx3%E{d8*sOsR>5(P>6{h*N~ZEu9yLfaH;OHw8SuviV}*JiXoBJS}3VLs+FmJ zC_1k4J7Zb}kV8@Yj|dX|aHZFlyPa(vh`&min2RJ4(^;E`fx`fSS7H)HO6K-kf97}Y z@V{_$1T+s&s_3gIP>cw*m9#mjR0vImxBPIxq+JH;AI;eoXf{y*iUMn$^pN*q?$kl|NXcC=oSWk4s5Y`HH`3!L*$*v-@Ghw`eDJTRbKF7 zXe6Qiq8ldI>^PtTcPW>XFH3Moe8BNe#v!EdYQ~Pr!L?B7!bprb{tL1xUa;!#i@l3J zt}y95;Fi-ch*8ZdVO?Tv)70Sxk`W|`ltJ6(z4tKd4>I|4x%FoQ9$?B$bG7b;O@?&6 zGxl<2bNPD@8k$&yOX!-+O?x6v{5>r7tePY>-7F``qo_%WRj9|4*#kI)7sf_bff74T z)9;X)gnJUed+l2+l=Zsa-S+D6xDpjY#(iV~;ZsT6+IwsW?HR{oq8di?_pZz@}OjLtAKzQ%b`i{|C%415$-3psk7lkzodU$EC z5RU@8-i?Vy==CV>3XvK)0aalDYvz1XKj#R;Qh#;7~Gk;q@7fI}*l`n~H@K~&mA zBp6e<2HwH$z`;lP$Jod3vZktw96!((S zD7iY|7ts*HlH$N@E;xZGq%69L@FfH*zrond!Dmc2JR|-F#iF0Kl}6gB<|ENtdM*pA z9i}Ec^IM+NilJ48PCKqnQ?+o)SpV1SHd6F48#s!ANio!%v4dGT=Yi{!;obzQ{!F25$@<{a_5On-PN5^e_F0f9o^i$)_gk&rhfE=c8$3b-hZIP;i`2wd>7JOYD}@$xAn+zs)q9 zD=hQcoIh_OtKD#tvnhIyzf5el2(U`};N3q^*dD z4JCSyIOQ@ek9N0yTV>_z_8#p!EG=@3e?0g42o{+C_#)i7kUWj37C0lNRM2vlPNG2) zan`l=ApYM8!j5hch9Nj8sGk^6P=BQj|2i+*n7LU3K#uf;Kz&7-QmnIOgxPto64~1D zIo%4ogDaGl`l{}uQ+Dj6XH$0mvIbWYCmh!-$+i+C&hQqZ70BeA^}^Fnll`3TmPLA0-LaGG%rmlNOzWo1DGQBXbTX}r9wx1>g$zp79XU%n|D42va5XSFfv+zCcD^+EhbC^*; z%gs!OOUiU3uKh_hRKt*|aBkWotn`E^DW1mb?a%i^pmT_aCTK?C{d-{{s^Q0|;pjY7 z*@_|Tgm-qQEYvI*HXS6|Rf z&0H0a9rNUSniEk_cx@jTEC(LjQQF>t(bbz=*{!|`_BgPf$?2bI`^Zlh>FFdk4JS3g zw7R?jq$+J)jM3?$8uw(~LG(SPAi(fn{7DR*OYn0OjUSc{mfIF5|FFg6u4N-pGbzW& zoSaHwUg`HQ6y0+TC#+@cAznz~VDJx_c$l~~8Degrkxu|gBR7eCx43blUmRX__XbCN zv7^PG6xT1$*VP(9k@(NuKWsR?i#2%o?^t(vf#1Vd@hrr_;}%)3ZNkRAo+k??%@@zYUHQY2a4}u~yqPzJl#8!!_9yQY+R#(I zC7?vU8Kx_i^G&-buAK`;Zs8~;lDRitXBbs6G{SjW+Gx|I8)`%K!0G-v0?dXVa-WVB zMUFY;x}B>>E6l{|zDGNZaA*EvZlGC{^OAWIp78vH(#$egwv*VEOc5K_S$@2qA zddW8{C$?l#{)Jq{)-`?t`#KlMr!&BcC=hvd{KeSK*XpVe$D1b%zu}xL-7SB7cadHv zoyu?o>mP=E%iNLpl zRENMy;ug)6NGch*XLf|s)l~a984jYLkxuni^(oBgB;T^Y0+esDQ7#%0@!1c#s{%PYGGJi_nzm37`5ItuL`Yx+I-FM1ov=8N+j$eiwZ(7b0si=fMh z2G_&YApuA^h3;N~^Smay++|1t4-mYXpD4&*k`TPTuqy#uReoe=a(6DcZ~T5h?hlca zH<+j|Qnp*UYGr zISe<%XFW(G_(Wi^*R~#%I6IV$?nRl5Vev9)OWsb}j%|dTI|U*yHjW7QF;XPDvAiFg zc6M%sAc{HX^g`3z?J+}_$lIZBA216UB1#2k9Z&Z2LZ1o6BX+VY;y(;1*HfoWF`SFbK(W&Hv{XRF}}d!g(BgA4BlHm@^K4fLcPwmr%gfQI`JcN&8*NKa*Xc% zx;=qJYmup}Ur2{}!6I<)_jof3_R!U>>6`HW(9OoN|RPJJp-b^DA?WLn~_(~JvWgYbS54De&Wl#tr0T0`m)aBfqY zHXhPG$(Odf!g`WQ2-OY?+&0fPw5bMCqCqzw`|jjKwy9Nu7|-aAdV)R3lWJ7NJB&4m zg5z2@t1%hCFk;t^1}sMPf4m(kF2?Fc+f8A&Yfea9W=?;d9@5vR)YJG*4Z&N7BFtUE zf;SQUtsTgxRpYQ;V-Sjmj^KmJDQDYe%R?4oimHRGITQTDsB<@15iT}ne_}eRa&;2< zzr(5hJmMgrL2t_tA1zF!Zn>aaeqi2QL|@jvE6y z5Y)}h3GD(p<>rS;X9F?tu#)~gYQ6h4y2Ba54zyR oC;d;g@9!W25H+6+3=Z}il!QQC2_E4u3f#9F^rq^>`B(4%0P@?W&;S4c